(this["webpackJsonp"] = this["webpackJsonp"] || []).push([["app-service"],[ /* 0 */ /*!***********************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/main.js ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n__webpack_require__(/*! uni-pages */ 6);\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 101));\nvar _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 150));\nvar _store = _interopRequireDefault(__webpack_require__(/*! ./store */ 154));\nvar _plugins = _interopRequireDefault(__webpack_require__(/*! ./plugins */ 166));\n__webpack_require__(/*! ./permission */ 170);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n// permission\n_vue.default.use(_plugins.default);\n_vue.default.config.productionTip = false;\n_vue.default.prototype.$store = _store.default;\n_App.default.mpType = 'app';\nvar app = new _vue.default(_objectSpread({}, _App.default));\napp.$mount();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyJdLCJuYW1lcyI6WyJWdWUiLCJ1c2UiLCJwbHVnaW5zIiwiY29uZmlnIiwicHJvZHVjdGlvblRpcCIsInByb3RvdHlwZSIsIiRzdG9yZSIsInN0b3JlIiwiQXBwIiwibXBUeXBlIiwiYXBwIiwiJG1vdW50Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFBcUI7QUFBQTtBQUFDO0FBQ3RCQSxZQUFHLENBQUNDLEdBQUcsQ0FBQ0MsZ0JBQU8sQ0FBQztBQUVoQkYsWUFBRyxDQUFDRyxNQUFNLENBQUNDLGFBQWEsR0FBRyxLQUFLO0FBQ2hDSixZQUFHLENBQUNLLFNBQVMsQ0FBQ0MsTUFBTSxHQUFHQyxjQUFLO0FBRTVCQyxZQUFHLENBQUNDLE1BQU0sR0FBRyxLQUFLO0FBRWxCLElBQU1DLEdBQUcsR0FBRyxJQUFJVixZQUFHLG1CQUNkUSxZQUFHLEVBQ047QUFFRkUsR0FBRyxDQUFDQyxNQUFNLEVBQUUiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJztpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuaW1wb3J0IEFwcCBmcm9tICcuL0FwcCdcclxuaW1wb3J0IHN0b3JlIGZyb20gJy4vc3RvcmUnIC8vIHN0b3JlXHJcbmltcG9ydCBwbHVnaW5zIGZyb20gJy4vcGx1Z2lucycgLy8gcGx1Z2luc1xyXG5pbXBvcnQgJy4vcGVybWlzc2lvbicgLy8gcGVybWlzc2lvblxyXG5WdWUudXNlKHBsdWdpbnMpXHJcblxyXG5WdWUuY29uZmlnLnByb2R1Y3Rpb25UaXAgPSBmYWxzZVxyXG5WdWUucHJvdG90eXBlLiRzdG9yZSA9IHN0b3JlXHJcblxyXG5BcHAubXBUeXBlID0gJ2FwcCdcclxuXHJcbmNvbnN0IGFwcCA9IG5ldyBWdWUoe1xyXG4gIC4uLkFwcFxyXG59KVxyXG5cclxuYXBwLiRtb3VudCgpIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n"); /***/ }), /* 1 */ /*!**********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 2 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3); function _defineProperty(obj, key, value) { key = toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 3 */ /*!**************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 5); function _toPropertyKey(arg) { var key = toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); } module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 4 */ /*!*******************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/typeof.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _typeof(obj) { "@babel/helpers - typeof"; return (module.exports = _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; }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj); } module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 5 */ /*!************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 6 */ /*!**************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages.json ***! \**************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { if (typeof Promise !== 'undefined' && !Promise.prototype.finally) { Promise.prototype.finally = function (callback) { var promise = this.constructor; return this.then(function (value) { return promise.resolve(callback()).then(function () { return value; }); }, function (reason) { return promise.resolve(callback()).then(function () { throw reason; }); }); }; } if (typeof uni !== 'undefined' && uni && uni.requireGlobal) { var global = uni.requireGlobal(); ArrayBuffer = global.ArrayBuffer; Int8Array = global.Int8Array; Uint8Array = global.Uint8Array; Uint8ClampedArray = global.Uint8ClampedArray; Int16Array = global.Int16Array; Uint16Array = global.Uint16Array; Int32Array = global.Int32Array; Uint32Array = global.Uint32Array; Float32Array = global.Float32Array; Float64Array = global.Float64Array; BigInt64Array = global.BigInt64Array; BigUint64Array = global.BigUint64Array; } if (uni.restoreGlobal) { uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval); } __definePage('pages/login/login', function () { return Vue.extend(__webpack_require__(/*! pages/login/login.vue?mpType=page */ 7).default); }); __definePage('pages/home/index', function () { return Vue.extend(__webpack_require__(/*! pages/home/index.vue?mpType=page */ 19).default); }); __definePage('pages/power/index', function () { return Vue.extend(__webpack_require__(/*! pages/power/index.vue?mpType=page */ 39).default); }); __definePage('pages/type/index', function () { return Vue.extend(__webpack_require__(/*! pages/type/index.vue?mpType=page */ 131).default); }); __definePage('pages/report/index', function () { return Vue.extend(__webpack_require__(/*! pages/report/index.vue?mpType=page */ 140).default); }); __definePage('pages/warn/index', function () { return Vue.extend(__webpack_require__(/*! pages/warn/index.vue?mpType=page */ 145).default); }); /***/ }), /* 7 */ /*!*************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?mpType=page ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./login.vue?vue&type=template&id=5b26a3ac&mpType=page */ 8);\n/* harmony import */ var _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./login.vue?vue&type=script&lang=js&mpType=page */ 13);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/login/login.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vbG9naW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViMjZhM2FjJm1wVHlwZT1wYWdlXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9sb2dpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9naW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9sb2dpbi9sb2dpbi52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7\n"); /***/ }), /* 8 */ /*!*******************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=template&id=5b26a3ac&mpType=page ***! \*******************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./login.vue?vue&type=template&id=5b26a3ac&mpType=page */ 9); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 9 */ /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=template&id=5b26a3ac&mpType=page ***! \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "normal-login-container"), attrs: { _i: 0 }, }, [ _c( "view", { staticClass: _vm._$s(1, "sc", "logo-content"), attrs: { _i: 1 } }, [ _c( "view", { staticClass: _vm._$s(2, "sc", "logoTit"), attrs: { _i: 2 } }, [ _c("view", { staticClass: _vm._$s(3, "sc", "titleZN"), attrs: { _i: 3 }, }), _c("view", { staticClass: _vm._$s(4, "sc", "titleZN"), attrs: { _i: 4 }, }), _c("view", { staticClass: _vm._$s(5, "sc", "titleEN"), attrs: { _i: 5 }, }), ] ), ] ), _c( "view", { staticClass: _vm._$s(6, "sc", "login-form-content"), attrs: { _i: 6 }, }, [ _c( "view", { staticClass: _vm._$s(7, "sc", "input-item flex align-center"), attrs: { _i: 7 }, }, [ _c("image", { attrs: { src: _vm._$s( 8, "a-src", __webpack_require__(/*! ../../static/jnImage/loginPage/userName.png */ 11) ), _i: 8, }, }), _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.loginForm.username, expression: "loginForm.username", }, ], staticClass: _vm._$s(9, "sc", "input"), attrs: { _i: 9 }, domProps: { value: _vm._$s(9, "v-model", _vm.loginForm.username), }, on: { input: function ($event) { if ($event.target.composing) { return } _vm.$set(_vm.loginForm, "username", $event.target.value) }, }, }), ] ), _c( "view", { staticClass: _vm._$s(10, "sc", "input-item flex align-center"), attrs: { _i: 10 }, }, [ _c("image", { attrs: { src: _vm._$s( 11, "a-src", __webpack_require__(/*! ../../static/jnImage/loginPage/locked.png */ 12) ), _i: 11, }, }), _c("input", { directives: [ { name: "model", rawName: "v-model", value: _vm.loginForm.password, expression: "loginForm.password", }, ], staticClass: _vm._$s(12, "sc", "input"), attrs: { _i: 12 }, domProps: { value: _vm._$s(12, "v-model", _vm.loginForm.password), }, on: { input: function ($event) { if ($event.target.composing) { return } _vm.$set(_vm.loginForm, "password", $event.target.value) }, }, }), ] ), _c( "view", { staticClass: _vm._$s(13, "sc", "action-btn"), attrs: { _i: 13 } }, [ _c("button", { staticClass: _vm._$s(14, "sc", "login-btn"), attrs: { _i: 14 }, on: { click: _vm.handleLogin }, }), ] ), ] ), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 10 */ /*!*************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/loginPage/logo.png ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/loginPage/logo.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvbG9nby5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///10\n"); /***/ }), /* 11 */ /*!*****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/loginPage/userName.png ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/loginPage/userName.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvdXNlck5hbWUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///11\n"); /***/ }), /* 12 */ /*!***************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/loginPage/locked.png ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/loginPage/locked.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvbG9ja2VkLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///12\n"); /***/ }), /* 13 */ /*!*************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=script&lang=js&mpType=page ***! \*************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./login.vue?vue&type=script&lang=js&mpType=page */ 14);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9naW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9naW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///13\n"); /***/ }), /* 14 */ /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=script&lang=js&mpType=page ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 15));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 17));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'Login',\n data: function data() {\n return {\n captchaEnabled: false,\n // 验证码开关 TODO 芋艿:需要抽到配置里\n globalConfig: getApp().globalData.config,\n loginForm: {\n username: \"admin\",\n password: \"admin123\"\n }\n };\n },\n methods: {\n // 登录方法\n handleLogin: function handleLogin(params) {\n // if (this.loginForm.username === \"\") {\n // \tthis.$modal.msgError(\"请输入您的账号\")\n // } else if (this.loginForm.password === \"\") {\n // \tthis.$modal.msgError(\"请输入您的密码\")\n // } else {\n // \t// await this.pwdLogin({})\n // uni.navigateTo({\n // \turl: '/pages/power/index'\n // });\n // }\n var that = this;\n that.$tab.switchTab('/pages/home/index');\n },\n // 密码登录\n pwdLogin: function pwdLogin() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // this.$modal.loading(\"登录中,请耐心等待...\")\n // 执行登录\n // this.$store.dispatch('Login', this.loginForm).then(() => {\n // \tthis.$modal.closeLoading()\n // \tthis.loginSuccess()\n // })\n _this.loginSuccess();\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n // 登录成功后,处理函数\n loginSuccess: function loginSuccess(result) {\n // 设置用户信息\n // this.$store.dispatch('GetInfo').then(res => {\n // \tthis.$tab.reLaunch('/pages/index')\n // })\n // this.$tab.reLaunch('/pages/index')\n uni.navigateTo({\n url: '/pages/index',\n success: function success(res) {},\n fail: function fail() {},\n complete: function complete() {}\n });\n // this.$tab.navigateTo('/pages/index')\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vbG9naW4udnVlIl0sIm5hbWVzIjpbIm5hbWUiLCJkYXRhIiwiY2FwdGNoYUVuYWJsZWQiLCJnbG9iYWxDb25maWciLCJsb2dpbkZvcm0iLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwibWV0aG9kcyIsImhhbmRsZUxvZ2luIiwidGhhdCIsInB3ZExvZ2luIiwibG9naW5TdWNjZXNzIiwidW5pIiwidXJsIiwic3VjY2VzcyIsImZhaWwiLCJjb21wbGV0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBNEJBO0VBQ0FBO0VBQ0FDO0lBQ0E7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztRQUNBQztRQUNBQztNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUVBQztJQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBO01BQ0E7SUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cIm5vcm1hbC1sb2dpbi1jb250YWluZXJcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwibG9nby1jb250ZW50XCI+XHJcblx0XHRcdDwhLS0gPGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9qbkltYWdlL2xvZ2luUGFnZS9sb2dvLnBuZ1wiPlxyXG5cdFx0XHQ8L2ltYWdlPiAtLT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJsb2dvVGl0XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aXRsZVpOXCI+5pmL6IO95o6n6IKh55S15Yqb6ZuG5ZuiPC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGl0bGVaTlwiPua4hea0geiDvea6kOaciemZkOWFrOWPuDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRpdGxlRU5cIj7lj5HnlLXlnLrnq5nnlJ/kuqflrp7ml7bov5DokKXnrqHnkIblubPlj7A8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwibG9naW4tZm9ybS1jb250ZW50XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtaXRlbSBmbGV4IGFsaWduLWNlbnRlclwiPlxyXG5cdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvdXNlck5hbWUucG5nXCI+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdi1tb2RlbD1cImxvZ2luRm9ybS51c2VybmFtZVwiIGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwi55So5oi35ZCNXCIgbWF4bGVuZ3RoPVwiMzBcIiAvPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtaXRlbSBmbGV4IGFsaWduLWNlbnRlclwiPlxyXG5cdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvbG9ja2VkLnBuZ1wiPlxyXG5cdFx0XHRcdFx0PGlucHV0IHYtbW9kZWw9XCJsb2dpbkZvcm0ucGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIiBjbGFzcz1cImlucHV0XCIgcGxhY2Vob2xkZXI9XCLlr4bnoIFcIiBtYXhsZW5ndGg9XCIyMFwiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJhY3Rpb24tYnRuXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiBAY2xpY2s9XCJoYW5kbGVMb2dpblwiIGNsYXNzPVwibG9naW4tYnRuXCI+55m75b2VPC9idXR0b24+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdMb2dpbicsXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGNhcHRjaGFFbmFibGVkOiBmYWxzZSwgLy8g6aqM6K+B56CB5byA5YWzIFRPRE8g6IqL6Im/77ya6ZyA6KaB5oq95Yiw6YWN572u6YeMXHJcblx0XHRcdFx0Z2xvYmFsQ29uZmlnOiBnZXRBcHAoKS5nbG9iYWxEYXRhLmNvbmZpZyxcclxuXHRcdFx0XHRsb2dpbkZvcm06IHtcclxuXHRcdFx0XHRcdHVzZXJuYW1lOiBcImFkbWluXCIsXHJcblx0XHRcdFx0XHRwYXNzd29yZDogXCJhZG1pbjEyM1wiXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHQvLyDnmbvlvZXmlrnms5VcclxuXHRcdFx0aGFuZGxlTG9naW4ocGFyYW1zKSB7XHJcblx0XHRcdFx0Ly8gaWYgKHRoaXMubG9naW5Gb3JtLnVzZXJuYW1lID09PSBcIlwiKSB7XHJcblx0XHRcdFx0Ly8gXHR0aGlzLiRtb2RhbC5tc2dFcnJvcihcIuivt+i+k+WFpeaCqOeahOi0puWPt1wiKVxyXG5cdFx0XHRcdC8vIH0gZWxzZSBpZiAodGhpcy5sb2dpbkZvcm0ucGFzc3dvcmQgPT09IFwiXCIpIHtcclxuXHRcdFx0XHQvLyBcdHRoaXMuJG1vZGFsLm1zZ0Vycm9yKFwi6K+36L6T5YWl5oKo55qE5a+G56CBXCIpXHJcblx0XHRcdFx0Ly8gfSBlbHNlIHtcclxuXHRcdFx0XHQvLyBcdC8vIGF3YWl0IHRoaXMucHdkTG9naW4oe30pXHJcblx0XHRcdFx0Ly8gdW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdC8vIFx0dXJsOiAnL3BhZ2VzL3Bvd2VyL2luZGV4J1xyXG5cdFx0XHRcdC8vIH0pO1xyXG5cdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHJcblx0XHRcdFx0dGhhdC4kdGFiLnN3aXRjaFRhYignL3BhZ2VzL2hvbWUvaW5kZXgnKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlr4bnoIHnmbvlvZVcclxuXHRcdFx0YXN5bmMgcHdkTG9naW4oKSB7XHJcblx0XHRcdFx0Ly8gdGhpcy4kbW9kYWwubG9hZGluZyhcIueZu+W9leS4re+8jOivt+iAkOW/g+etieW+hS4uLlwiKVxyXG5cdFx0XHRcdC8vIOaJp+ihjOeZu+W9lVxyXG5cdFx0XHRcdC8vIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdMb2dpbicsIHRoaXMubG9naW5Gb3JtKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHQvLyBcdHRoaXMuJG1vZGFsLmNsb3NlTG9hZGluZygpXHJcblx0XHRcdFx0Ly8gXHR0aGlzLmxvZ2luU3VjY2VzcygpXHJcblx0XHRcdFx0Ly8gfSlcclxuXHRcdFx0XHR0aGlzLmxvZ2luU3VjY2VzcygpXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOeZu+W9leaIkOWKn+WQju+8jOWkhOeQhuWHveaVsFxyXG5cdFx0XHRsb2dpblN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0Ly8g6K6+572u55So5oi35L+h5oGvXHJcblx0XHRcdFx0Ly8gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0dldEluZm8nKS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0Ly8gXHR0aGlzLiR0YWIucmVMYXVuY2goJy9wYWdlcy9pbmRleCcpXHJcblx0XHRcdFx0Ly8gfSlcclxuXHRcdFx0XHQvLyB0aGlzLiR0YWIucmVMYXVuY2goJy9wYWdlcy9pbmRleCcpXHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOiAnL3BhZ2VzL2luZGV4JyxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IHJlcyA9PiB7fSxcclxuXHRcdFx0XHRcdGZhaWw6ICgpID0+IHt9LFxyXG5cdFx0XHRcdFx0Y29tcGxldGU6ICgpID0+IHt9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Ly8gdGhpcy4kdGFiLm5hdmlnYXRlVG8oJy9wYWdlcy9pbmRleCcpXHJcblxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdHBhZ2Uge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzIwMjI0NjtcclxuXHR9XHJcblxyXG5cdC5ub3JtYWwtbG9naW4tY29udGFpbmVyIHtcclxuXHRcdC8vIGJhY2tncm91bmQ6IHVybCgnLi4vc3RhdGljL2puSW1hZ2UvbG9naW5QYWdlL2xvZ2luQmFjay5wbmcnKTtcclxuXHRcdC8vIGJhY2tncm91bmQtcmVwbGF0ZTpcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGllZ2h0OiAxMDB2aDtcclxuXHJcblx0XHQubG9nby1jb250ZW50IHtcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdGZvbnQtc2l6ZTogMjFweDtcclxuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogMTUlO1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG5cclxuXHRcdFx0aW1hZ2Uge1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiA0MHB4O1xyXG5cdFx0XHRcdHdpZHRoOiA4MHB4O1xyXG5cdFx0XHRcdGhlaWdodDogNjBweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmxvZ29UaXQge1xyXG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xyXG5cclxuXHRcdFx0XHQudGl0bGVaTiB7XHJcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiA1cHg7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDQ4dXB4O1xyXG5cdFx0XHRcdFx0Zm9udC1mYW1pbHk6IEZaWmhlbmdIZWlTLU0tR0I7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0XHRcdFx0XHRsZXR0ZXItc3BhY2luZzogM3B4O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LnRpdGxlRU4ge1xyXG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogNXB4O1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAyNHVweDtcclxuXHRcdFx0XHRcdGNvbG9yOiAjRTVFOUYyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5sb2dpbi1mb3JtLWNvbnRlbnQge1xyXG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdG1hcmdpbjogMjBweCBhdXRvO1xyXG5cdFx0XHRtYXJnaW4tdG9wOiA2MCU7XHJcblx0XHRcdHdpZHRoOiA4MCU7XHJcblxyXG5cdFx0XHQuaW5wdXQtaXRlbSB7XHJcblx0XHRcdFx0bWFyZ2luOiAyMHB4IGF1dG87XHJcblx0XHRcdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmNztcclxuXHRcdFx0XHRoZWlnaHQ6IDQ1cHg7XHJcblxyXG5cdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjVmNmY3O1xyXG5cclxuXHRcdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0XHR3aWR0aDogMjBweDtcclxuXHRcdFx0XHRcdGhlaWdodDogMjNweDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC5pbnB1dCB7XHJcblx0XHRcdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDIwcHg7XHJcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAxNXB4O1xyXG5cclxuXHRcdFx0XHRcdC51bmktaW5wdXQtd3JhcHBlciB7XHJcblx0XHRcdFx0XHRcdC5pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5sb2dpbi1idG4ge1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDMwcHg7XHJcblx0XHRcdFx0aGVpZ2h0OiA0MHB4O1xyXG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xyXG5cdFx0XHRcdGJhY2tncm91bmQ6ICM0Mjg3RkY7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcclxuXHRcdFx0XHRsZXR0ZXItc3BhY2luZzogMTBweDtcclxuXHRcdFx0XHRsaW5lLWhlaWdodDogNDBweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5lYXN5aW5wdXQge1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC5sb2dpbi1jb2RlLWltZyB7XHJcblx0XHRoZWlnaHQ6IDQ1cHg7XHJcblx0fVxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n"); /***/ }), /* 15 */ /*!**********************************************************!*\ !*** ./node_modules/@babel/runtime/regenerator/index.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4); // TODO(Babel 8): Remove this file. var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ 16)(); module.exports = runtime; // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736= try { regeneratorRuntime = runtime; } catch (accidentalStrictMode) { if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === "object") { globalThis.regeneratorRuntime = runtime; } else { Function("r", "regeneratorRuntime = r")(runtime); } } /***/ }), /* 16 */ /*!*******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ module.exports = _regeneratorRuntime = function _regeneratorRuntime() { return exports; }, module.exports.__esModule = true, module.exports["default"] = module.exports; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 17 */ /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 18 */ /*!**********************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***! \**********************************************************************************************************/ /*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; }); /* globals __VUE_SSR_CONTEXT__ */ // IMPORTANT: Do NOT use ES2015 features in this file (except for modules). // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. function normalizeComponent ( scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, /* server only */ shadowMode, /* vue-cli only */ components, // fixed by xxxxxx auto components renderjs // fixed by xxxxxx renderjs ) { // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // fixed by xxxxxx auto components if (components) { if (!options.components) { options.components = {} } var hasOwn = Object.prototype.hasOwnProperty for (var name in components) { if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) { options.components[name] = components[name] } } } // fixed by xxxxxx renderjs if (renderjs) { if(typeof renderjs.beforeCreate === 'function'){ renderjs.beforeCreate = [renderjs.beforeCreate] } (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() { this[renderjs.__module] = this }); (options.mixins || (options.mixins = [])).push(renderjs) } // render functions if (render) { options.render = render options.staticRenderFns = staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = 'data-v-' + scopeId } var hook if (moduleIdentifier) { // server build hook = function (context) { // 2.3 injection context = context || // cached call (this.$vnode && this.$vnode.ssrContext) || // stateful (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional // 2.2 with runInNewContext: true if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__ } // inject component styles if (injectStyles) { injectStyles.call(this, context) } // register component module identifier for async chunk inferrence if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier) } } // used by ssr in case component is cached and beforeCreate // never gets called options._ssrRegister = hook } else if (injectStyles) { hook = shadowMode ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) } : injectStyles } if (hook) { if (options.functional) { // for template-only hot-reload because in that case the render fn doesn't // go through the normalizer options._injectStyles = hook // register for functioal component in vue file var originalRender = options.render options.render = function renderWithStyleInjection (h, context) { hook.call(context) return originalRender(h, context) } } else { // inject component registration as beforeCreate hook var existing = options.beforeCreate options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } } return { exports: scriptExports, options: options } } /***/ }), /* 19 */ /*!************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?mpType=page ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=3d4d74ab&mpType=page */ 20);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 37);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/home/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZDRkNzRhYiZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaG9tZS9pbmRleC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///19\n"); /***/ }), /* 20 */ /*!******************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=template&id=3d4d74ab&mpType=page ***! \******************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=3d4d74ab&mpType=page */ 21); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 21 */ /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=template&id=3d4d74ab&mpType=page ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "home"), attrs: { _i: 0 } }, [ _c( "view", { staticClass: _vm._$s(1, "sc", "home_header"), attrs: { _i: 1 } }, [ _c( "view", { staticClass: _vm._$s(2, "sc", "header_message"), attrs: { _i: 2 }, }, [ _c("image", { attrs: { src: _vm._$s( 3, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/message.png */ 22) ), _i: 3, }, }), ] ), _c( "view", { staticClass: _vm._$s(4, "sc", "header_title"), attrs: { _i: 4 } }, [ _c("image", { attrs: { src: _vm._$s( 5, "a-src", __webpack_require__(/*! ../../static/jnImage/loginPage/logo.png */ 10) ), _i: 5, }, }), _c("text", { staticClass: _vm._$s(6, "sc", "titleName"), attrs: { _i: 6 }, }), ] ), _c( "view", { staticClass: _vm._$s(7, "sc", "header_more"), attrs: { _i: 7 } }, [ _c("image", { attrs: { src: _vm._$s( 8, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/more.png */ 23) ), _i: 8, }, }), ] ), ] ), _c( "view", { staticClass: _vm._$s(9, "sc", "home_main"), attrs: { _i: 9 } }, [ _c( "view", { staticClass: _vm._$s(10, "sc", "main_time"), attrs: { _i: 10 } }, [ _c( "view", { staticClass: _vm._$s(11, "sc", "mesTime"), attrs: { _i: 11 }, }, [ _c("image", { attrs: { src: _vm._$s( 12, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/time.png */ 24) ), _i: 12, }, }), _c("text"), _c("text"), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(16, "sc", "mesAll"), attrs: { _i: 16 } }, [ _vm._l( _vm._$s(17, "f", { forItems: _vm.mesExData }), function (item, index, $20, $30) { return _c( "view", { key: _vm._$s(17, "f", { forIndex: $20, key: index }), staticClass: _vm._$s("17-" + $30, "sc", "mesEx"), attrs: { _i: "17-" + $30 }, }, [ _c( "view", { staticClass: _vm._$s( "18-" + $30, "sc", "mesEx_left" ), attrs: { _i: "18-" + $30 }, }, [ _c( "text", { staticClass: _vm._$s( "19-" + $30, "sc", "mesEx_left_top" ), attrs: { _i: "19-" + $30 }, }, [ _c( "text", { staticClass: _vm._$s( "20-" + $30, "sc", "nameSty" ), attrs: { _i: "20-" + $30 }, }, [ _vm._v( _vm._$s( "20-" + $30, "t0-0", _vm._s(item.leftName) ) ), ] ), ] ), _c( "view", { staticClass: _vm._$s( "21-" + $30, "sc", " mesEx_left_end" ), attrs: { _i: "21-" + $30 }, }, [ _c("text", [ _vm._v( _vm._$s( "22-" + $30, "t0-0", _vm._s(item.leftValue) ) ), ]), _c("text", [ _vm._v( _vm._$s( "23-" + $30, "t0-0", _vm._s(item.leftCode) ) ), ]), ] ), ] ), _c( "view", { staticClass: _vm._$s( "24-" + $30, "sc", "mesEx_left" ), attrs: { _i: "24-" + $30 }, }, [ _c( "text", { staticClass: _vm._$s( "25-" + $30, "sc", "mesEx_left_top" ), attrs: { _i: "25-" + $30 }, }, [ _c( "text", { staticClass: _vm._$s( "26-" + $30, "sc", "nameSty" ), attrs: { _i: "26-" + $30 }, }, [ _vm._v( _vm._$s( "26-" + $30, "t0-0", _vm._s(item.rightName) ) ), ] ), ] ), _c( "view", { staticClass: _vm._$s( "27-" + $30, "sc", "mesEx_left_end" ), attrs: { _i: "27-" + $30 }, }, [ _c("text", [ _vm._v( _vm._$s( "28-" + $30, "t0-0", _vm._s(item.rightValue) ) ), ]), _c("text", [ _vm._v( _vm._$s( "29-" + $30, "t0-0", _vm._s(item.rightCode) ) ), ]), ] ), ] ), ] ) } ), _c( "view", { staticClass: _vm._$s(30, "sc", "windMsg"), attrs: { _i: 30 }, }, [ _c( "view", { staticClass: _vm._$s(31, "sc", "flex justify-center"), attrs: { _i: 31 }, }, [ _c( "view", { staticClass: _vm._$s(32, "sc", "windMsg_title"), attrs: { _i: 32 }, }, [ _c("image", { attrs: { src: _vm._$s( 33, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/wancheng.png */ 25) ), _i: 33, }, }), _c("text"), ] ), ] ), _c( "view", { staticClass: _vm._$s(35, "sc", "windMsg_main"), attrs: { _i: 35 }, }, [ _c( "view", { staticClass: _vm._$s( 36, "sc", "windMsg_main_msg flex justify-between" ), attrs: { _i: 36 }, }, [ _c( "view", { staticClass: _vm._$s( 37, "sc", "windMsgSty flex" ), attrs: { _i: 37 }, }, [ _c( "view", { staticClass: _vm._$s( 38, "sc", "windMsgSty_left" ), attrs: { _i: 38 }, }, [ _c("image", { attrs: { src: _vm._$s( 39, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/jieru.png */ 26) ), _i: 39, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 41, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 41 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 44, "sc", "windMsgSty flex" ), attrs: { _i: 44 }, }, [ _c( "view", { staticClass: _vm._$s( 45, "sc", "windMsgSty_left" ), attrs: { _i: 45 }, }, [ _c("image", { attrs: { src: _vm._$s( 46, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/daiji.png */ 27) ), _i: 46, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 48, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 48 }, }, [_c("text"), _c("text")] ), ] ), ] ), _c( "view", { staticClass: _vm._$s( 51, "sc", "windMsg_main_msg flex justify-between" ), attrs: { _i: 51 }, }, [ _c( "view", { staticClass: _vm._$s( 52, "sc", "windMsgSty flex" ), attrs: { _i: 52 }, }, [ _c( "view", { staticClass: _vm._$s( 53, "sc", "windMsgSty_left" ), attrs: { _i: 53 }, }, [ _c("image", { attrs: { src: _vm._$s( 54, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/yunxing.png */ 28) ), _i: 54, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 56, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 56 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 59, "sc", "windMsgSty flex" ), attrs: { _i: 59 }, }, [ _c( "view", { staticClass: _vm._$s( 60, "sc", "windMsgSty_left" ), attrs: { _i: 60 }, }, [ _c("image", { attrs: { src: _vm._$s( 61, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/guzhang.png */ 29) ), _i: 61, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 63, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 63 }, }, [_c("text"), _c("text")] ), ] ), ] ), _c( "view", { staticClass: _vm._$s( 66, "sc", "windMsg_main_msg flex justify-between" ), attrs: { _i: 66 }, }, [ _c( "view", { staticClass: _vm._$s( 67, "sc", "windMsgSty flex" ), attrs: { _i: 67 }, }, [ _c( "view", { staticClass: _vm._$s( 68, "sc", "windMsgSty_left" ), attrs: { _i: 68 }, }, [ _c("image", { attrs: { src: _vm._$s( 69, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/weihu.png */ 30) ), _i: 69, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 71, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 71 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 74, "sc", "windMsgSty flex" ), attrs: { _i: 74 }, }, [ _c( "view", { staticClass: _vm._$s( 75, "sc", "windMsgSty_left" ), attrs: { _i: 75 }, }, [ _c("image", { attrs: { src: _vm._$s( 76, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/lixian.png */ 31) ), _i: 76, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 78, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 78 }, }, [_c("text"), _c("text")] ), ] ), ] ), ] ), ] ), _c( "view", { staticClass: _vm._$s(81, "sc", "powerMsg"), attrs: { _i: 81 }, }, [ _c( "view", { staticClass: _vm._$s(82, "sc", "flex justify-center"), attrs: { _i: 82 }, }, [ _c( "view", { staticClass: _vm._$s(83, "sc", "windMsg_title"), attrs: { _i: 83 }, }, [ _c("image", { attrs: { src: _vm._$s( 84, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/wancheng.png */ 25) ), _i: 84, }, }), _c("text"), ] ), ] ), _c( "view", { staticClass: _vm._$s(86, "sc", "windMsg_main"), attrs: { _i: 86 }, }, [ _c( "view", { staticClass: _vm._$s( 87, "sc", "windMsg_main_msg flex justify-between" ), attrs: { _i: 87 }, }, [ _c( "view", { staticClass: _vm._$s( 88, "sc", "windMsgSty flex" ), attrs: { _i: 88 }, }, [ _c( "view", { staticClass: _vm._$s( 89, "sc", "windMsgSty_left" ), attrs: { _i: 89 }, }, [ _c("image", { attrs: { src: _vm._$s( 90, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/jieruP.png */ 32) ), _i: 90, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 92, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 92 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 95, "sc", "windMsgSty flex" ), attrs: { _i: 95 }, }, [ _c( "view", { staticClass: _vm._$s( 96, "sc", "windMsgSty_left" ), attrs: { _i: 96 }, }, [ _c("image", { attrs: { src: _vm._$s( 97, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/daijiP.png */ 33) ), _i: 97, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 99, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 99 }, }, [_c("text"), _c("text")] ), ] ), ] ), _c( "view", { staticClass: _vm._$s( 102, "sc", "windMsg_main_msg flex justify-between" ), attrs: { _i: 102 }, }, [ _c( "view", { staticClass: _vm._$s( 103, "sc", "windMsgSty flex" ), attrs: { _i: 103 }, }, [ _c( "view", { staticClass: _vm._$s( 104, "sc", "windMsgSty_left" ), attrs: { _i: 104 }, }, [ _c("image", { attrs: { src: _vm._$s( 105, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/yunxingP.png */ 34) ), _i: 105, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 107, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 107 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 110, "sc", "windMsgSty flex" ), attrs: { _i: 110 }, }, [ _c( "view", { staticClass: _vm._$s( 111, "sc", "windMsgSty_left" ), attrs: { _i: 111 }, }, [ _c("image", { attrs: { src: _vm._$s( 112, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/guzhang.png */ 29) ), _i: 112, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 114, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 114 }, }, [_c("text"), _c("text")] ), ] ), ] ), _c( "view", { staticClass: _vm._$s( 117, "sc", "windMsg_main_msg flex justify-between" ), attrs: { _i: 117 }, }, [ _c( "view", { staticClass: _vm._$s( 118, "sc", "windMsgSty flex" ), attrs: { _i: 118 }, }, [ _c( "view", { staticClass: _vm._$s( 119, "sc", "windMsgSty_left" ), attrs: { _i: 119 }, }, [ _c("image", { attrs: { src: _vm._$s( 120, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/weihu.png */ 30) ), _i: 120, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 122, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 122 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 125, "sc", "windMsgSty flex" ), attrs: { _i: 125 }, }, [ _c( "view", { staticClass: _vm._$s( 126, "sc", "windMsgSty_left" ), attrs: { _i: 126 }, }, [ _c("image", { attrs: { src: _vm._$s( 127, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/lixian.png */ 31) ), _i: 127, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 129, "sc", "windMsgSty_right flex justify-between" ), attrs: { _i: 129 }, }, [_c("text"), _c("text")] ), ] ), ] ), ] ), ] ), _c( "view", { staticClass: _vm._$s(132, "sc", "ssjk"), attrs: { _i: 132 }, }, [ _c( "view", { staticClass: _vm._$s( 133, "sc", "ssjk_title flex justify-center" ), attrs: { _i: 133 }, }, [ _c("image", { attrs: { src: _vm._$s( 134, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/timeNow.png */ 35) ), _i: 134, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(136, "sc", "ssjk_main"), attrs: { _i: 136 }, }, [ _c( "view", { staticClass: _vm._$s(137, "sc", "ssjk_main_msg"), attrs: { _i: 137 }, }, [ _c( "view", { staticClass: _vm._$s( 138, "sc", "ssjk_main_msg_tit flex" ), attrs: { _i: 138 }, }, [ _c("image", { attrs: { src: _vm._$s( 139, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/windIcon.png */ 36) ), _i: 139, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s( 141, "sc", "ssjk_main_msg_data flex" ), attrs: { _i: 141 }, }, [ _c( "view", { staticClass: _vm._$s( 142, "sc", "msg_data_sty flex" ), attrs: { _i: 142 }, }, [ _c( "view", { staticClass: _vm._$s( 143, "sc", "msg_data_name" ), attrs: { _i: 143 }, }, [_c("text")] ), _c( "view", { staticClass: _vm._$s( 145, "sc", "dataSty flex" ), attrs: { _i: 145 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 148, "sc", "msg_data_sty flex" ), attrs: { _i: 148 }, }, [ _c( "view", { staticClass: _vm._$s( 149, "sc", "msg_data_name" ), attrs: { _i: 149 }, }, [_c("text")] ), _c( "view", { staticClass: _vm._$s( 151, "sc", "dataSty flex" ), attrs: { _i: 151 }, }, [_c("text"), _c("text")] ), ] ), _c( "view", { staticClass: _vm._$s( 154, "sc", "msg_data_sty flex" ), attrs: { _i: 154 }, }, [ _c( "view", { staticClass: _vm._$s( 155, "sc", "msg_data_name" ), attrs: { _i: 155 }, }, [_c("text")] ), _c( "view", { staticClass: _vm._$s( 157, "sc", "dataSty flex" ), attrs: { _i: 157 }, }, [_c("text"), _c("text")] ), ] ), ] ), ] ), ] ), ] ), ], 2 ), ] ), ] ), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 22 */ /*!****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/message.png ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/message.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvbWVzc2FnZS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///22\n"); /***/ }), /* 23 */ /*!*************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/more.png ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/more.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvbW9yZS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n"); /***/ }), /* 24 */ /*!*************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/time.png ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/time.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvdGltZS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n"); /***/ }), /* 25 */ /*!*****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/wancheng.png ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/wancheng.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2Uvd2FuY2hlbmcucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n"); /***/ }), /* 26 */ /*!**************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/jieru.png ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/jieru.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvamllcnUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n"); /***/ }), /* 27 */ /*!**************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/daiji.png ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/daiji.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvZGFpamkucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///27\n"); /***/ }), /* 28 */ /*!****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/yunxing.png ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/yunxing.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UveXVueGluZy5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///28\n"); /***/ }), /* 29 */ /*!****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/guzhang.png ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/guzhang.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvZ3V6aGFuZy5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///29\n"); /***/ }), /* 30 */ /*!**************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/weihu.png ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/weihu.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2Uvd2VpaHUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n"); /***/ }), /* 31 */ /*!***************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/lixian.png ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/lixian.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvbGl4aWFuLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n"); /***/ }), /* 32 */ /*!***************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/jieruP.png ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/jieruP.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvamllcnVQLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///32\n"); /***/ }), /* 33 */ /*!***************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/daijiP.png ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/daijiP.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvZGFpamlQLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n"); /***/ }), /* 34 */ /*!*****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/yunxingP.png ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/yunxingP.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UveXVueGluZ1AucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n"); /***/ }), /* 35 */ /*!****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/timeNow.png ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/timeNow.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjM1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvdGltZU5vdy5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///35\n"); /***/ }), /* 36 */ /*!*****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/windIcon.png ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/indexPage/windIcon.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2Uvd2luZEljb24ucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///36\n"); /***/ }), /* 37 */ /*!************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=script&lang=js&mpType=page ***! \************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 38);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIzNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///37\n"); /***/ }), /* 38 */ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=script&lang=js&mpType=page ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! 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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {},\n data: function data() {\n return {\n mesExData: []\n };\n },\n created: function created() {\n this.mesExData = [{\n leftName: '容量',\n leftValue: 282.3,\n leftCode: '(WM)',\n rightName: '安全天数',\n rightValue: 20,\n rightCode: '(天)'\n }, {\n leftName: '风速',\n leftValue: 282.3,\n leftCode: '(m/s)',\n rightName: '功率',\n rightValue: 20,\n rightCode: '(MW)'\n }, {\n leftName: '日发电量',\n leftValue: 282.3,\n leftCode: '(万kWh)',\n rightName: '理论功率',\n rightValue: 20,\n rightCode: '(MW)'\n }, {\n leftName: '年发电量',\n leftValue: 282.3,\n leftCode: '(万kWh)',\n rightName: '月发电量',\n rightValue: 20,\n rightCode: '(万kWh)'\n }];\n },\n methods: {}\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9pbmRleC52dWUiXSwibmFtZXMiOlsib25Mb2FkIiwiZGF0YSIsIm1lc0V4RGF0YSIsImNyZWF0ZWQiLCJsZWZ0TmFtZSIsImxlZnRWYWx1ZSIsImxlZnRDb2RlIiwicmlnaHROYW1lIiwicmlnaHRWYWx1ZSIsInJpZ2h0Q29kZSIsIm1ldGhvZHMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEsZUFFZTtFQUNkQSxNQUFNLEVBQUUsa0JBQVcsQ0FBQyxDQUFDO0VBQ3JCQyxJQUFJLGtCQUFHO0lBQ04sT0FBTztNQUNOQyxTQUFTLEVBQUU7SUFDWixDQUFDO0VBQ0YsQ0FBQztFQUNEQyxPQUFPLHFCQUFHO0lBQ1QsSUFBSSxDQUFDRCxTQUFTLEdBQUcsQ0FBQztNQUNoQkUsUUFBUSxFQUFFLElBQUk7TUFDZEMsU0FBUyxFQUFFLEtBQUs7TUFDaEJDLFFBQVEsRUFBRSxNQUFNO01BQ2hCQyxTQUFTLEVBQUUsTUFBTTtNQUNqQkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsU0FBUyxFQUFFO0lBQ1osQ0FBQyxFQUNEO01BQ0NMLFFBQVEsRUFBRSxJQUFJO01BQ2RDLFNBQVMsRUFBRSxLQUFLO01BQ2hCQyxRQUFRLEVBQUUsT0FBTztNQUNqQkMsU0FBUyxFQUFFLElBQUk7TUFDZkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsU0FBUyxFQUFFO0lBQ1osQ0FBQyxFQUNEO01BQ0NMLFFBQVEsRUFBRSxNQUFNO01BQ2hCQyxTQUFTLEVBQUUsS0FBSztNQUNoQkMsUUFBUSxFQUFFLFFBQVE7TUFDbEJDLFNBQVMsRUFBRSxNQUFNO01BQ2pCQyxVQUFVLEVBQUUsRUFBRTtNQUNkQyxTQUFTLEVBQUU7SUFDWixDQUFDLEVBQ0Q7TUFDQ0wsUUFBUSxFQUFFLE1BQU07TUFDaEJDLFNBQVMsRUFBRSxLQUFLO01BQ2hCQyxRQUFRLEVBQUUsUUFBUTtNQUNsQkMsU0FBUyxFQUFFLE1BQU07TUFDakJDLFVBQVUsRUFBRSxFQUFFO01BQ2RDLFNBQVMsRUFBRTtJQUNaLENBQUMsQ0FDRDtFQUNGLENBQUM7RUFDREMsT0FBTyxFQUFFLENBRVQ7QUFDRCxDQUFDO0FBQUEiLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG9uTG9hZDogZnVuY3Rpb24oKSB7fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bWVzRXhEYXRhOiBbXVxuXHRcdH1cblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR0aGlzLm1lc0V4RGF0YSA9IFt7XG5cdFx0XHRcdGxlZnROYW1lOiAn5a656YePJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICcoV00pJyxcblx0XHRcdFx0cmlnaHROYW1lOiAn5a6J5YWo5aSp5pWwJyxcblx0XHRcdFx0cmlnaHRWYWx1ZTogMjAsXG5cdFx0XHRcdHJpZ2h0Q29kZTogJyjlpKkpJyxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGxlZnROYW1lOiAn6aOO6YCfJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICcobS9zKScsXG5cdFx0XHRcdHJpZ2h0TmFtZTogJ+WKn+eOhycsXG5cdFx0XHRcdHJpZ2h0VmFsdWU6IDIwLFxuXHRcdFx0XHRyaWdodENvZGU6ICcoTVcpJyxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGxlZnROYW1lOiAn5pel5Y+R55S16YePJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICco5LiHa1doKScsXG5cdFx0XHRcdHJpZ2h0TmFtZTogJ+eQhuiuuuWKn+eOhycsXG5cdFx0XHRcdHJpZ2h0VmFsdWU6IDIwLFxuXHRcdFx0XHRyaWdodENvZGU6ICcoTVcpJyxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGxlZnROYW1lOiAn5bm05Y+R55S16YePJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICco5LiHa1doKScsXG5cdFx0XHRcdHJpZ2h0TmFtZTogJ+aciOWPkeeUtemHjycsXG5cdFx0XHRcdHJpZ2h0VmFsdWU6IDIwLFxuXHRcdFx0XHRyaWdodENvZGU6ICco5LiHa1doKScsXG5cdFx0XHR9LFxuXHRcdF1cblx0fSxcblx0bWV0aG9kczoge1xuXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38\n"); /***/ }), /* 39 */ /*!*************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?mpType=page ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=5d359ba2&mpType=page */ 40);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 129);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/power/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDM1OWJhMiZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvcG93ZXIvaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n"); /***/ }), /* 40 */ /*!*******************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=template&id=5d359ba2&mpType=page ***! \*******************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=5d359ba2&mpType=page */ 41); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 41 */ /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=template&id=5d359ba2&mpType=page ***! \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components try { components = { uniRow: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-row/uni-row.vue */ 42) .default, uniCol: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-col/uni-col.vue */ 47) .default, qiunDataCharts: __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue */ 52) .default, } } catch (e) { if ( e.message.indexOf("Cannot find module") !== -1 && e.message.indexOf(".vue") !== -1 ) { console.error(e.message) console.error("1. 排查组件名称拼写是否正确") console.error( "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom" ) console.error( "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件" ) } else { throw e } } var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "power"), attrs: { _i: 0 } }, [ _c( "view", { staticClass: _vm._$s(1, "sc", "home_header"), attrs: { _i: 1 } }, [ _c( "view", { staticClass: _vm._$s(2, "sc", "header_message"), attrs: { _i: 2 }, }, [ _c("image", { attrs: { src: _vm._$s( 3, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/message.png */ 22) ), _i: 3, }, }), ] ), _c( "view", { staticClass: _vm._$s(4, "sc", "header_title"), attrs: { _i: 4 } }, [ _c("image", { attrs: { src: _vm._$s( 5, "a-src", __webpack_require__(/*! ../../static/jnImage/loginPage/logo.png */ 10) ), _i: 5, }, }), _c("text", { staticClass: _vm._$s(6, "sc", "titleName"), attrs: { _i: 6 }, }), ] ), _c( "view", { staticClass: _vm._$s(7, "sc", "header_more"), attrs: { _i: 7 } }, [ _c("image", { attrs: { src: _vm._$s( 8, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/more.png */ 23) ), _i: 8, }, }), ] ), ] ), _c( "view", { staticClass: _vm._$s(9, "sc", "power_main"), attrs: { _i: 9 } }, [ _c( "view", { staticClass: _vm._$s(10, "sc", "flex justify-center"), attrs: { _i: 10 }, }, [ _c( "view", { staticClass: _vm._$s(11, "sc", "power_tab"), attrs: { _i: 11 }, }, _vm._l( _vm._$s(12, "f", { forItems: _vm.powerTabData }), function (item, index, $20, $30) { return _c( "text", { key: _vm._$s(12, "f", { forIndex: $20, key: index }), style: _vm._$s( "12-" + $30, "s", item.showColor ? "background: #4287FF;color:#fff" : "" ), attrs: { _i: "12-" + $30 }, on: { click: function ($event) { return _vm.changePowerTab(item) }, }, }, [ _vm._v( _vm._$s("12-" + $30, "t0-0", _vm._s(item.nameZN)) ), ] ) } ), 0 ), ] ), _vm._$s(13, "i", _vm.powerTab === "DL") ? _c( "view", { staticClass: _vm._$s(13, "sc", "fdwcl"), attrs: { _i: 13 } }, [ _c( "view", { staticClass: _vm._$s(14, "sc", "flex justify-between"), attrs: { _i: 14 }, }, [ _c( "view", { staticClass: _vm._$s( 15, "sc", "fdwcl_title flex justify-center" ), attrs: { _i: 15 }, }, [ _c("image", { attrs: { src: _vm._$s( 16, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/powerTu.png */ 125) ), _i: 16, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(18, "sc", "yearTab"), attrs: { _i: 18 }, }, _vm._l( _vm._$s(19, "f", { forItems: _vm.yearData }), function (item, index, $21, $31) { return _c( "text", { key: _vm._$s(19, "f", { forIndex: $21, key: index, }), style: _vm._$s( "19-" + $31, "s", item.showColor ? "background: #4287FF;color:#fff" : "" ), attrs: { _i: "19-" + $31 }, on: { click: function ($event) { return _vm.changeYearTab(item) }, }, }, [ _vm._v( _vm._$s( "19-" + $31, "t0-0", _vm._s(item.nameZN) ) ), ] ) } ), 0 ), ] ), _vm._l( _vm._$s(20, "f", { forItems: _vm.powerProgressData }), function (item, index, $22, $32) { return _c( "view", { key: _vm._$s(20, "f", { forIndex: $22, key: index }), staticClass: _vm._$s( "20-" + $32, "sc", "fdwcl_DataAll" ), attrs: { _i: "20-" + $32 }, }, [ _c( "view", { staticClass: _vm._$s( "21-" + $32, "sc", "fdwcl_Data flex justify-between" ), attrs: { _i: "21-" + $32 }, }, [ _c( "view", { staticClass: _vm._$s( "22-" + $32, "sc", "fdwcl_Data_1 flex" ), attrs: { _i: "22-" + $32 }, }, [ _c("image", { attrs: { src: _vm._$s( "23-" + $32, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/windIcon.png */ 36) ), _i: "23-" + $32, }, }), _c("text", [ _vm._v( _vm._$s( "24-" + $32, "t0-0", _vm._s(item.inPower) ) ), ]), ] ), _c( "view", { staticClass: _vm._$s( "25-" + $32, "sc", "fdwcl_Data_2" ), attrs: { _i: "25-" + $32 }, }, [ _c("text", [ _vm._v( _vm._$s( "26-" + $32, "t0-0", _vm._s(item.name) ) ), ]), ] ), _c( "view", { staticClass: _vm._$s( "27-" + $32, "sc", "fdwcl_Data_3" ), attrs: { _i: "27-" + $32 }, }, [ _c("text", [ _vm._v( _vm._$s( "28-" + $32, "t0-0", _vm._s(item.allPower) ) ), ]), ] ), ] ), _c( "view", { staticClass: _vm._$s( "29-" + $32, "sc", "fdwcl_Data_msg" ), attrs: { _i: "29-" + $32 }, }, [ _c("view", { staticClass: _vm._$s( "30-" + $32, "sc", "show_msg" ), style: _vm._$s( "30-" + $32, "s", _vm.showProgress(item, index) ), attrs: { _i: "30-" + $32 }, }), ] ), ] ) } ), ], 2 ) : _c( "view", { staticClass: _vm._$s(31, "sc", "ycdl"), attrs: { _i: 31 } }, _vm._l(3, function (item, index, $23, $33) { return _c( "view", { key: index, staticClass: _vm._$s("32-" + $33, "sc", "ycdl_msg"), attrs: { _i: "32-" + $33 }, }, [ _c( "view", { staticClass: _vm._$s( "33-" + $33, "sc", "ycdl_title flex" ), attrs: { _i: "33-" + $33 }, }, [ _c("image", { attrs: { src: _vm._$s( "34-" + $33, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/clock.png */ 126) ), _i: "34-" + $33, }, }), _c("text"), _c("text"), ] ), _c( "view", { staticClass: _vm._$s("37-" + $33, "sc", "ycdl_data"), attrs: { _i: "37-" + $33 }, }, [ _c( "uni-row", { staticClass: _vm._$s( "38-" + $33, "sc", "ycdl_data_row" ), attrs: { _i: "38-" + $33 }, }, _vm._l( _vm._$s(39 + "-" + $33, "f", { forItems: _vm.powerProgressData, }), function (item, index, $24, $34) { return _c( "uni-col", { key: _vm._$s(39 + "-" + $33, "f", { forIndex: $24, key: index, }), attrs: { span: 12, _i: "39-" + $33 + "-" + $34, }, }, [ _c( "view", { staticClass: _vm._$s( "40-" + $33 + "-" + $34, "sc", "ycdl_data_col flex" ), attrs: { _i: "40-" + $33 + "-" + $34 }, }, [ _c( "view", { staticClass: _vm._$s( "41-" + $33 + "-" + $34, "sc", "ycdl_data_col_left" ), attrs: { _i: "41-" + $33 + "-" + $34, }, }, [ _c("text", [ _vm._v( _vm._$s( "42-" + $33 + "-" + $34, "t0-0", _vm._s(item.name) ) ), ]), ] ), _c( "view", { staticClass: _vm._$s( "43-" + $33 + "-" + $34, "sc", "ycdl_data_col_right flex justify-between" ), attrs: { _i: "43-" + $33 + "-" + $34, }, }, [ _c("text", [ _vm._v( _vm._$s( "44-" + $33 + "-" + $34, "t0-0", _vm._s(item.inPower) ) ), ]), _c("text"), ] ), ] ), ] ) } ), 1 ), ], 1 ), ] ) }), 0 ), _vm._$s(46, "i", _vm.powerTab === "DL") ? _c( "view", { staticClass: _vm._$s(46, "sc", "rdldb"), attrs: { _i: 46 } }, [ _c( "view", { staticClass: _vm._$s( 47, "sc", "rdldb_title flex justify-center" ), attrs: { _i: 47 }, }, [ _c("image", { attrs: { src: _vm._$s( 48, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127) ), _i: 48, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(50, "sc", "qiun-charts"), attrs: { _i: 50 }, }, [ _c("qiun-data-charts", { attrs: { type: "column", opts: _vm.opts, chartData: _vm.chartData, _i: 51, }, }), ], 1 ), ] ) : _c( "view", { staticClass: _vm._$s(52, "sc", "xsfsgl"), attrs: { _i: 52 } }, [ _c( "view", { staticClass: _vm._$s( 53, "sc", "xsfsgl_title flex justify-center" ), attrs: { _i: 53 }, }, [ _c("image", { attrs: { src: _vm._$s( 54, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/72clock.png */ 128) ), _i: 54, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(56, "sc", "qiun-chartsLine"), attrs: { _i: 56 }, }, [ _c("qiun-data-charts", { attrs: { type: "mix", opts: _vm.optsLine, chartData: _vm.chartDataLine, _i: 57, }, }), ], 1 ), ] ), ] ), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 42 */ /*!******************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue ***! \******************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-row.vue?vue&type=template&id=1d993189& */ 43);\n/* harmony import */ var _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-row.vue?vue&type=script&lang=js& */ 45);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-row/components/uni-row/uni-row.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0g7QUFDcEg7QUFDMkQ7QUFDTDs7O0FBR3REO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDZFQUFNO0FBQ1IsRUFBRSxrRkFBTTtBQUNSLEVBQUUsMkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsc0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1yb3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFkOTkzMTg5JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLXJvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1yb3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1yb3cvdW5pLXJvdy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///42\n"); /***/ }), /* 43 */ /*!*************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=template&id=1d993189& ***! \*************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-row.vue?vue&type=template&id=1d993189& */ 44); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 44 */ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=template&id=1d993189& ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { class: _vm._$s(0, "c", [ "uni-row", _vm.typeClass, _vm.justifyClass, _vm.alignClass, ]), style: _vm._$s(0, "s", { marginLeft: Number(_vm.marginValue) + "rpx", marginRight: Number(_vm.marginValue) + "rpx", }), attrs: { _i: 0 }, }, [_vm._t("default", null, { _i: 1 })], 2 ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 45 */ /*!*******************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=script&lang=js& ***! \*******************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-row.vue?vue&type=script&lang=js& */ 46);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW12QixDQUFnQiw2dEJBQUcsRUFBQyIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLXJvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLXJvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///45\n"); /***/ }), /* 46 */ /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=script&lang=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//\n//\n//\n//\n//\n//\n//\n\nvar ComponentClass = 'uni-row';\nvar modifierSeparator = '--';\n/**\n * Row\t布局-行\n * @description\t流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。\n * @tutorial\thttps://ext.dcloud.net.cn/plugin?id=3958\n *\n * @property\t{gutter} type = Number 栅格间隔\n * @property\t{justify} type = String flex 布局下的水平排列方式\n * \t\t\t\t\t\t可选\tstart/end/center/space-around/space-between\tstart\n * \t\t\t\t\t\t默认值\tstart\n * @property\t{align} type = String flex 布局下的垂直排列方式\n * \t\t\t\t\t\t可选\ttop/middle/bottom\n * \t\t\t\t\t\t默认值\ttop\n * @property\t{width} type = String|Number nvue下需要自行配置宽度用于计算\n * \t\t\t\t\t\t默认值 750\n */\nvar _default = {\n name: 'uniRow',\n componentName: 'uniRow',\n props: {\n type: String,\n gutter: Number,\n justify: {\n type: String,\n default: 'start'\n },\n align: {\n type: String,\n default: 'top'\n },\n // nvue如果使用span等属性,需要配置宽度\n width: {\n type: [String, Number],\n default: 750\n }\n },\n created: function created() {},\n computed: {\n marginValue: function marginValue() {\n if (this.gutter) {\n return -(this.gutter / 2);\n }\n return 0;\n },\n typeClass: function typeClass() {\n return this.type === 'flex' ? \"\".concat(ComponentClass + modifierSeparator, \"flex\") : '';\n },\n justifyClass: function justifyClass() {\n return this.justify !== 'start' ? \"\".concat(ComponentClass + modifierSeparator, \"flex-justify-\").concat(this.justify) : '';\n },\n alignClass: function alignClass() {\n return this.align !== 'top' ? \"\".concat(ComponentClass + modifierSeparator, \"flex-align-\").concat(this.align) : '';\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1yb3cvdW5pLXJvdy52dWUiXSwibmFtZXMiOlsibmFtZSIsImNvbXBvbmVudE5hbWUiLCJwcm9wcyIsInR5cGUiLCJndXR0ZXIiLCJqdXN0aWZ5IiwiZGVmYXVsdCIsImFsaWduIiwid2lkdGgiLCJjcmVhdGVkIiwiY29tcHV0ZWQiLCJtYXJnaW5WYWx1ZSIsInR5cGVDbGFzcyIsImp1c3RpZnlDbGFzcyIsImFsaWduQ2xhc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZEEsZUFpQkE7RUFDQUE7RUFDQUM7RUFNQUM7SUFDQUM7SUFDQUM7SUFDQUM7TUFDQUY7TUFDQUc7SUFDQTtJQUNBQztNQUNBSjtNQUNBRztJQUNBO0lBQ0E7SUFDQUU7TUFDQUw7TUFDQUc7SUFDQTtFQUNBO0VBQ0FHLDZCQUlBO0VBQ0FDO0lBQ0FDO01BRUE7UUFDQTtNQUNBO01BRUE7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyA6Y2xhc3M9XCJbICd1bmktcm93JywgdHlwZUNsYXNzICwganVzdGlmeUNsYXNzLCBhbGlnbkNsYXNzLCBdXCIgOnN0eWxlPVwie1xyXG5cdFx0bWFyZ2luTGVmdDpgJHtOdW1iZXIobWFyZ2luVmFsdWUpfXJweGAsXHJcblx0XHRtYXJnaW5SaWdodDpgJHtOdW1iZXIobWFyZ2luVmFsdWUpfXJweGAsXHJcblx0fVwiPlxyXG5cdFx0PHNsb3Q+PC9zbG90PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0Y29uc3QgQ29tcG9uZW50Q2xhc3MgPSAndW5pLXJvdyc7XHJcblx0Y29uc3QgbW9kaWZpZXJTZXBhcmF0b3IgPSAnLS0nO1xyXG5cdC8qKlxyXG5cdCAqIFJvd1x05biD5bGALeihjFxyXG5cdCAqIEBkZXNjcmlwdGlvblx05rWB5byP5qCF5qC857O757uf77yM6ZqP552A5bGP5bmV5oiW6KeG5Y+j5YiG5Li6IDI0IOS7ve+8jOWPr+S7pei/hemAn+eugOS+v+WcsOWIm+W7uuW4g+WxgOOAglxyXG5cdCAqIEB0dXRvcmlhbFx0aHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9Mzk1OFxyXG5cdCAqXHJcblx0ICogQHByb3BlcnR5XHR7Z3V0dGVyfSB0eXBlID0gTnVtYmVyIOagheagvOmXtOmalFxyXG5cdCAqIEBwcm9wZXJ0eVx0e2p1c3RpZnl9IHR5cGUgPSBTdHJpbmcgZmxleCDluIPlsYDkuIvnmoTmsLTlubPmjpLliJfmlrnlvI9cclxuXHQgKiBcdFx0XHRcdFx0XHTlj6/pgIlcdHN0YXJ0L2VuZC9jZW50ZXIvc3BhY2UtYXJvdW5kL3NwYWNlLWJldHdlZW5cdHN0YXJ0XHJcblx0ICogXHRcdFx0XHRcdFx06buY6K6k5YC8XHRzdGFydFxyXG5cdCAqIEBwcm9wZXJ0eVx0e2FsaWdufSB0eXBlID0gU3RyaW5nIGZsZXgg5biD5bGA5LiL55qE5Z6C55u05o6S5YiX5pa55byPXHJcblx0ICogXHRcdFx0XHRcdFx05Y+v6YCJXHR0b3AvbWlkZGxlL2JvdHRvbVxyXG5cdCAqIFx0XHRcdFx0XHRcdOm7mOiupOWAvFx0dG9wXHJcblx0ICogQHByb3BlcnR5XHR7d2lkdGh9IHR5cGUgPSBTdHJpbmd8TnVtYmVyIG52dWXkuIvpnIDopoHoh6rooYzphY3nva7lrr3luqbnlKjkuo7orqHnrpdcclxuXHQgKiBcdFx0XHRcdFx0XHTpu5jorqTlgLwgNzUwXHJcblx0ICovXHJcblxyXG5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRuYW1lOiAndW5pUm93JyxcclxuXHRcdGNvbXBvbmVudE5hbWU6ICd1bmlSb3cnLFxyXG5cdFx0Ly8gI2lmZGVmIE1QLVdFSVhJTlxyXG5cdFx0b3B0aW9uczoge1xyXG5cdFx0XHR2aXJ0dWFsSG9zdDogdHJ1ZSAvLyDlnKjlvq7kv6HlsI/nqIvluo/kuK3lsIbnu4Tku7boioLngrnmuLLmn5PkuLromZrmi5/oioLngrnvvIzmm7TliqDmjqXov5FWdWXnu4Tku7bnmoTooajnjrDvvIzlj6/kvb/nlKhmbGV45biD5bGAXHJcblx0XHR9LFxyXG5cdFx0Ly8gI2VuZGlmXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGd1dHRlcjogTnVtYmVyLFxyXG5cdFx0XHRqdXN0aWZ5OiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdzdGFydCdcclxuXHRcdFx0fSxcclxuXHRcdFx0YWxpZ246IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ3RvcCdcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gbnZ1ZeWmguaenOS9v+eUqHNwYW7nrYnlsZ7mgKfvvIzpnIDopoHphY3nva7lrr3luqZcclxuXHRcdFx0d2lkdGg6IHtcclxuXHRcdFx0XHR0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDc1MFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdHRoaXMudHlwZSA9ICdmbGV4JztcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0bWFyZ2luVmFsdWUoKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtTlZVRVxyXG5cdFx0XHRcdGlmICh0aGlzLmd1dHRlcikge1xyXG5cdFx0XHRcdFx0cmV0dXJuIC0odGhpcy5ndXR0ZXIgLyAyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdFx0cmV0dXJuIDA7XHJcblx0XHRcdH0sXHJcblx0XHRcdHR5cGVDbGFzcygpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy50eXBlID09PSAnZmxleCcgPyBgJHtDb21wb25lbnRDbGFzcyArIG1vZGlmaWVyU2VwYXJhdG9yfWZsZXhgIDogJyc7XHJcblx0XHRcdH0sXHJcblx0XHRcdGp1c3RpZnlDbGFzcygpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5qdXN0aWZ5ICE9PSAnc3RhcnQnID8gYCR7Q29tcG9uZW50Q2xhc3MgKyBtb2RpZmllclNlcGFyYXRvcn1mbGV4LWp1c3RpZnktJHt0aGlzLmp1c3RpZnl9YCA6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdGFsaWduQ2xhc3MoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuYWxpZ24gIT09ICd0b3AnID8gYCR7Q29tcG9uZW50Q2xhc3MgKyBtb2RpZmllclNlcGFyYXRvcn1mbGV4LWFsaWduLSR7dGhpcy5hbGlnbn1gIDogJydcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XHJcblx0JGxheW91dC1uYW1lc3BhY2U6IFwiLnVuaS1cIjtcclxuXHQkcm93OiRsYXlvdXQtbmFtZXNwYWNlK1wicm93XCI7XHJcblx0JG1vZGlmaWVyLXNlcGFyYXRvcjogXCItLVwiO1xyXG5cclxuXHRAbWl4aW4gdXRpbHMtY2xlYXJmaXgge1xyXG5cdFx0JHNlbGVjdG9yOiAmO1xyXG5cclxuXHRcdEBhdC1yb290IHtcclxuXHJcblx0XHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdFx0I3skc2VsZWN0b3J9OjpiZWZvcmUsXHJcblx0XHRcdCN7JHNlbGVjdG9yfTo6YWZ0ZXIge1xyXG5cdFx0XHRcdGRpc3BsYXk6IHRhYmxlO1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCN7JHNlbGVjdG9yfTo6YWZ0ZXIge1xyXG5cdFx0XHRcdGNsZWFyOiBib3RoO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHRAbWl4aW4gdXRpbHMtZmxleCAoJGRpcmVjdGlvbjogcm93KSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcclxuXHR9XHJcblxyXG5cdEBtaXhpbiBzZXQtZmxleCgkc3RhdGUpIHtcclxuXHRcdEBhdC1yb290ICYtI3skc3RhdGV9IHtcclxuXHRcdFx0QGNvbnRlbnRcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCN7JHJvd30ge1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHJcblx0XHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cclxuXHRcdGZsZXg6IDE7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblxyXG5cdFx0Ly8g6Z2ebnZ1ZeS9v+eUqGZsb2F05biD5bGAXHJcblx0XHRAaW5jbHVkZSB1dGlscy1jbGVhcmZpeDtcclxuXHJcblx0XHQvLyDlnKhRUeOAgeWtl+iKguOAgeeZvuW6puWwj+eoi+W6j+W5s+WPsO+8jOe8luivkeWQjuS9v+eUqHNoYWRvdyBkb23vvIzkuI3lj6/kvb/nlKhmbGV45biD5bGA77yM5L2/55SoZmxvYXRcclxuXHRcdEBhdC1yb290IHtcclxuXHJcblx0XHRcdC8qICNpZm5kZWYgTVAtUVEgfHwgTVAtVE9VVElBTyB8fCBNUC1CQUlEVSAqL1xyXG5cdFx0XHQmI3skbW9kaWZpZXItc2VwYXJhdG9yfWZsZXgge1xyXG5cdFx0XHRcdEBpbmNsdWRlIHV0aWxzLWZsZXg7XHJcblx0XHRcdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0XHRcdGZsZXg6IDE7XHJcblxyXG5cdFx0XHRcdCY6YmVmb3JlLFxyXG5cdFx0XHRcdCY6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGluY2x1ZGUgc2V0LWZsZXgoanVzdGlmeS1jZW50ZXIpIHtcclxuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGluY2x1ZGUgc2V0LWZsZXgoanVzdGlmeS1lbmQpIHtcclxuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAaW5jbHVkZSBzZXQtZmxleChqdXN0aWZ5LXNwYWNlLWJldHdlZW4pIHtcclxuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpbmNsdWRlIHNldC1mbGV4KGp1c3RpZnktc3BhY2UtYXJvdW5kKSB7XHJcblx0XHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpbmNsdWRlIHNldC1mbGV4KGFsaWduLW1pZGRsZSkge1xyXG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpbmNsdWRlIHNldC1mbGV4KGFsaWduLWJvdHRvbSkge1xyXG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogI2VuZGlmICovXHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcblx0Ly8g5a2X6IqC44CBUVHphY3nva7lkI7kuI3nlJ/mlYhcclxuXHQvLyDmraTlpITnlKjms5Xml6Dms5Xkvb/nlKhcclxuXHQvKiAjaWZkZWYgTVAtV0VJWElOIHx8IE1QLVRPVVRJQU8gfHwgTVAtUVEgKi9cclxuXHQ6aG9zdCB7XHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHR9XHJcblxyXG5cdC8qICNlbmRpZiAqL1xyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n"); /***/ }), /* 47 */ /*!******************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue ***! \******************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-col.vue?vue&type=template&id=fff79656& */ 48);\n/* harmony import */ var _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-col.vue?vue&type=script&lang=js& */ 50);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-row/components/uni-col/uni-col.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0g7QUFDcEg7QUFDMkQ7QUFDTDs7O0FBR3REO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDZFQUFNO0FBQ1IsRUFBRSxrRkFBTTtBQUNSLEVBQUUsMkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsc0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1jb2wudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZmZjc5NjU2JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWNvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1jb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1jb2wvdW5pLWNvbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///47\n"); /***/ }), /* 48 */ /*!*************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=template&id=fff79656& ***! \*************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-col.vue?vue&type=template&id=fff79656& */ 49); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 49 */ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=template&id=fff79656& ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { class: _vm._$s(0, "c", ["uni-col", _vm.sizeClass, _vm.pointClassList]), style: _vm._$s(0, "s", { paddingLeft: Number(_vm.gutter) + "rpx", paddingRight: Number(_vm.gutter) + "rpx", }), attrs: { _i: 0 }, }, [_vm._t("default", null, { _i: 1 })], 2 ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 50 */ /*!*******************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=script&lang=js& ***! \*******************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-col.vue?vue&type=script&lang=js& */ 51);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW12QixDQUFnQiw2dEJBQUcsRUFBQyIsImZpbGUiOiI1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWNvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWNvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///50\n"); /***/ }), /* 51 */ /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=script&lang=js& ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/**\n * Col\t布局-列\n * @description\t搭配uni-row使用,构建布局。\n * @tutorial\thttps://ext.dcloud.net.cn/plugin?id=3958\n *\n * @property\t{span} type = Number 栅格占据的列数\n * \t\t\t\t\t\t默认 24\n * @property\t{offset} type = Number 栅格左侧的间隔格数\n * @property\t{push} type = Number 栅格向右移动格数\n * @property\t{pull} type = Number 栅格向左移动格数\n * @property\t{xs} type = [Number, Object] <768px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{sm} type = [Number, Object] ≥768px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{md} type = [Number, Object] ≥992px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{lg} type = [Number, Object] ≥1200px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{xl} type = [Number, Object] ≥1920px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n */\nvar ComponentClass = 'uni-col';\n\n// -1 默认值,因为在微信小程序端只给Number会有默认值0\nvar _default = {\n name: 'uniCol',\n props: {\n span: {\n type: Number,\n default: 24\n },\n offset: {\n type: Number,\n default: -1\n },\n pull: {\n type: Number,\n default: -1\n },\n push: {\n type: Number,\n default: -1\n },\n xs: [Number, Object],\n sm: [Number, Object],\n md: [Number, Object],\n lg: [Number, Object],\n xl: [Number, Object]\n },\n data: function data() {\n return {\n gutter: 0,\n sizeClass: '',\n parentWidth: 0,\n nvueWidth: 0,\n marginLeft: 0,\n right: 0,\n left: 0\n };\n },\n created: function created() {\n var _this = this;\n // 字节小程序中,在computed中读取$parent为undefined\n var parent = this.$parent;\n while (parent && parent.$options.componentName !== 'uniRow') {\n parent = parent.$parent;\n }\n this.updateGutter(parent.gutter);\n parent.$watch('gutter', function (gutter) {\n _this.updateGutter(gutter);\n });\n },\n computed: {\n sizeList: function sizeList() {\n var span = this.span,\n offset = this.offset,\n pull = this.pull,\n push = this.push;\n return {\n span: span,\n offset: offset,\n pull: pull,\n push: push\n };\n },\n pointClassList: function pointClassList() {\n var _this2 = this;\n var classList = [];\n ['xs', 'sm', 'md', 'lg', 'xl'].forEach(function (point) {\n var props = _this2[point];\n if (typeof props === 'number') {\n classList.push(\"\".concat(ComponentClass, \"-\").concat(point, \"-\").concat(props));\n } else if ((0, _typeof2.default)(props) === 'object' && props) {\n Object.keys(props).forEach(function (pointProp) {\n classList.push(pointProp === 'span' ? \"\".concat(ComponentClass, \"-\").concat(point, \"-\").concat(props[pointProp]) : \"\".concat(ComponentClass, \"-\").concat(point, \"-\").concat(pointProp, \"-\").concat(props[pointProp]));\n });\n }\n });\n\n // 支付宝小程序使用 :class=[ ['a','b'] ],渲染错误\n return classList.join(' ');\n }\n },\n methods: {\n updateGutter: function updateGutter(parentGutter) {\n parentGutter = Number(parentGutter);\n if (!isNaN(parentGutter)) {\n this.gutter = parentGutter / 2;\n }\n }\n },\n watch: {\n sizeList: {\n immediate: true,\n handler: function handler(newVal) {\n var classList = [];\n for (var size in newVal) {\n var curSize = newVal[size];\n if ((curSize || curSize === 0) && curSize !== -1) {\n classList.push(size === 'span' ? \"\".concat(ComponentClass, \"-\").concat(curSize) : \"\".concat(ComponentClass, \"-\").concat(size, \"-\").concat(curSize));\n }\n }\n // 支付宝小程序使用 :class=[ ['a','b'] ],渲染错误\n this.sizeClass = classList.join(' ');\n }\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1jb2wvdW5pLWNvbC52dWUiXSwibmFtZXMiOlsibmFtZSIsInByb3BzIiwic3BhbiIsInR5cGUiLCJkZWZhdWx0Iiwib2Zmc2V0IiwicHVsbCIsInB1c2giLCJ4cyIsInNtIiwibWQiLCJsZyIsInhsIiwiZGF0YSIsImd1dHRlciIsInNpemVDbGFzcyIsInBhcmVudFdpZHRoIiwibnZ1ZVdpZHRoIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwibGVmdCIsImNyZWF0ZWQiLCJwYXJlbnQiLCJjb21wdXRlZCIsInNpemVMaXN0IiwicG9pbnRDbGFzc0xpc3QiLCJjbGFzc0xpc3QiLCJPYmplY3QiLCJwb2ludFByb3AiLCJDb21wb25lbnRDbGFzcyIsIm1ldGhvZHMiLCJ1cGRhdGVHdXR0ZXIiLCJwYXJlbnRHdXR0ZXIiLCJ3YXRjaCIsImltbWVkaWF0ZSIsImhhbmRsZXIiLCJzaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQUEsZUFDQTtFQUNBQTtFQU1BQztJQUNBQztNQUNBQztNQUNBQztJQUNBO0lBQ0FDO01BQ0FGO01BQ0FDO0lBQ0E7SUFDQUU7TUFDQUg7TUFDQUM7SUFDQTtJQUNBRztNQUNBSjtNQUNBQztJQUNBO0lBQ0FJO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFBQTtJQUNBO0lBQ0E7SUFFQTtNQUNBQztJQUNBO0lBRUE7SUFDQUE7TUFDQTtJQUNBO0VBUUE7RUFDQUM7SUFDQUM7TUFDQSxJQUNBdEIsT0FJQSxLQUpBQTtRQUNBRyxTQUdBLEtBSEFBO1FBQ0FDLE9BRUEsS0FGQUE7UUFDQUMsT0FDQSxLQURBQTtNQUdBO1FBQ0FMO1FBQ0FHO1FBQ0FDO1FBQ0FDO01BQ0E7SUFDQTtJQUVBa0I7TUFBQTtNQUNBO01BRUE7UUFDQTtRQUNBO1VBQ0FDO1FBQ0E7VUFDQUM7WUFDQUQsZUFDQUUsaUNBQ0FDLDZFQUNBQSx3RkFDQTtVQUNBO1FBQ0E7TUFDQTs7TUFFQTtNQUNBO0lBQ0E7RUFFQTtFQUNBQztJQUNBQztNQUNBQztNQUNBO1FBQ0E7TUFDQTtJQUNBO0VBNEJBO0VBQ0FDO0lBQ0FUO01BQ0FVO01BQ0FDO1FBRUE7UUFDQTtVQUNBO1VBQ0E7WUFDQVQsZUFDQVUsNEJBQ0FQLGlEQUNBQSx1REFDQTtVQUNBO1FBQ0E7UUFDQTtRQUNBO01BS0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI1MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8IS0tICNpZm5kZWYgQVBQLU5WVUUgLS0+XHJcblx0PHZpZXcgOmNsYXNzPVwiWyd1bmktY29sJywgc2l6ZUNsYXNzLCBwb2ludENsYXNzTGlzdF1cIiA6c3R5bGU9XCJ7XHJcblx0XHRwYWRkaW5nTGVmdDpgJHtOdW1iZXIoZ3V0dGVyKX1ycHhgLFxyXG5cdFx0cGFkZGluZ1JpZ2h0OmAke051bWJlcihndXR0ZXIpfXJweGAsXHJcblx0fVwiPlxyXG5cdFx0PHNsb3Q+PC9zbG90PlxyXG5cdDwvdmlldz5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuXHQ8IS0tICNpZmRlZiBBUFAtTlZVRSAtLT5cclxuXHQ8IS0tIOWcqG52dWXkuIrvvIznsbvlkI3moLflvI/kuI3nlJ/mlYjvvIzmjaLkuLpzdHlsZSAtLT5cclxuXHQ8IS0tIOiuvue9rnJpZ2h05q2j5YC85aSx5pWI77yM6K6+572uIGxlZnQg6LSf5YC8IC0tPlxyXG5cdDx2aWV3IDpjbGFzcz1cIlsndW5pLWNvbCddXCIgOnN0eWxlPVwie1xyXG5cdFx0cGFkZGluZ0xlZnQ6YCR7TnVtYmVyKGd1dHRlcil9cnB4YCxcclxuXHRcdHBhZGRpbmdSaWdodDpgJHtOdW1iZXIoZ3V0dGVyKX1ycHhgLFxyXG5cdFx0d2lkdGg6YCR7bnZ1ZVdpZHRofXJweGAsXHJcblx0XHRwb3NpdGlvbjoncmVsYXRpdmUnLFxyXG5cdFx0bWFyZ2luTGVmdDpgJHttYXJnaW5MZWZ0fXJweGAsXHJcblx0XHRsZWZ0OmAke3JpZ2h0ID09PSAwID8gbGVmdCA6IC1yaWdodH1ycHhgXHJcblx0fVwiPlxyXG5cdFx0PHNsb3Q+PC9zbG90PlxyXG5cdDwvdmlldz5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogQ29sXHTluIPlsYAt5YiXXHJcblx0ICogQGRlc2NyaXB0aW9uXHTmkK3phY11bmktcm935L2/55So77yM5p6E5bu65biD5bGA44CCXHJcblx0ICogQHR1dG9yaWFsXHRodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0zOTU4XHJcblx0ICpcclxuXHQgKiBAcHJvcGVydHlcdHtzcGFufSB0eXBlID0gTnVtYmVyIOagheagvOWNoOaNrueahOWIl+aVsFxyXG5cdCAqIFx0XHRcdFx0XHRcdOm7mOiupCAyNFxyXG5cdCAqIEBwcm9wZXJ0eVx0e29mZnNldH0gdHlwZSA9IE51bWJlciDmoIXmoLzlt6bkvqfnmoTpl7TpmpTmoLzmlbBcclxuXHQgKiBAcHJvcGVydHlcdHtwdXNofSB0eXBlID0gTnVtYmVyIOagheagvOWQkeWPs+enu+WKqOagvOaVsFxyXG5cdCAqIEBwcm9wZXJ0eVx0e3B1bGx9IHR5cGUgPSBOdW1iZXIg5qCF5qC85ZCR5bem56e75Yqo5qC85pWwXHJcblx0ICogQHByb3BlcnR5XHR7eHN9IHR5cGUgPSBbTnVtYmVyLCBPYmplY3RdIDw3NjhweCDlk43lupTlvI/moIXmoLzmlbDmiJbogIXmoIXmoLzlsZ7mgKflr7nosaFcclxuXHQgKiBcdFx0XHRcdFx0XHRAZGVzY3JpcHRpb25cdE51bWJlcuaXtuihqOekuuWcqOatpOWxj+W5leWuveW6puS4i++8jOagheagvOWNoOaNrueahOWIl+aVsOOAgk9iamVjdOaXtuWPr+mFjee9ruWkmuS4quaPj+i/sHtzcGFuOiA0LCBvZmZzZXQ6IDR9XHJcblx0ICogQHByb3BlcnR5XHR7c219IHR5cGUgPSBbTnVtYmVyLCBPYmplY3RdIOKJpTc2OHB4IOWTjeW6lOW8j+agheagvOaVsOaIluiAheagheagvOWxnuaAp+WvueixoVxyXG5cdCAqIFx0XHRcdFx0XHRcdEBkZXNjcmlwdGlvblx0TnVtYmVy5pe26KGo56S65Zyo5q2k5bGP5bmV5a695bqm5LiL77yM5qCF5qC85Y2g5o2u55qE5YiX5pWw44CCT2JqZWN05pe25Y+v6YWN572u5aSa5Liq5o+P6L+we3NwYW46IDQsIG9mZnNldDogNH1cclxuXHQgKiBAcHJvcGVydHlcdHttZH0gdHlwZSA9IFtOdW1iZXIsIE9iamVjdF0g4omlOTkycHgg5ZON5bqU5byP5qCF5qC85pWw5oiW6ICF5qCF5qC85bGe5oCn5a+56LGhXHJcblx0ICogXHRcdFx0XHRcdFx0QGRlc2NyaXB0aW9uXHROdW1iZXLml7booajnpLrlnKjmraTlsY/luZXlrr3luqbkuIvvvIzmoIXmoLzljaDmja7nmoTliJfmlbDjgIJPYmplY3Tml7blj6/phY3nva7lpJrkuKrmj4/ov7B7c3BhbjogNCwgb2Zmc2V0OiA0fVxyXG5cdCAqIEBwcm9wZXJ0eVx0e2xnfSB0eXBlID0gW051bWJlciwgT2JqZWN0XSDiiaUxMjAwcHgg5ZON5bqU5byP5qCF5qC85pWw5oiW6ICF5qCF5qC85bGe5oCn5a+56LGhXHJcblx0ICogXHRcdFx0XHRcdFx0QGRlc2NyaXB0aW9uXHROdW1iZXLml7booajnpLrlnKjmraTlsY/luZXlrr3luqbkuIvvvIzmoIXmoLzljaDmja7nmoTliJfmlbDjgIJPYmplY3Tml7blj6/phY3nva7lpJrkuKrmj4/ov7B7c3BhbjogNCwgb2Zmc2V0OiA0fVxyXG5cdCAqIEBwcm9wZXJ0eVx0e3hsfSB0eXBlID0gW051bWJlciwgT2JqZWN0XSDiiaUxOTIwcHgg5ZON5bqU5byP5qCF5qC85pWw5oiW6ICF5qCF5qC85bGe5oCn5a+56LGhXHJcblx0ICogXHRcdFx0XHRcdFx0QGRlc2NyaXB0aW9uXHROdW1iZXLml7booajnpLrlnKjmraTlsY/luZXlrr3luqbkuIvvvIzmoIXmoLzljaDmja7nmoTliJfmlbDjgIJPYmplY3Tml7blj6/phY3nva7lpJrkuKrmj4/ov7B7c3BhbjogNCwgb2Zmc2V0OiA0fVxyXG5cdCAqL1xyXG5cdGNvbnN0IENvbXBvbmVudENsYXNzID0gJ3VuaS1jb2wnO1xyXG5cclxuXHQvLyAtMSDpu5jorqTlgLzvvIzlm6DkuLrlnKjlvq7kv6HlsI/nqIvluo/nq6/lj6rnu5lOdW1iZXLkvJrmnInpu5jorqTlgLwwXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ3VuaUNvbCcsXHJcblx0XHQvLyAjaWZkZWYgTVAtV0VJWElOXHJcblx0XHRvcHRpb25zOiB7XHJcblx0XHRcdHZpcnR1YWxIb3N0OiB0cnVlIC8vIOWcqOW+ruS/oeWwj+eoi+W6j+S4reWwhue7hOS7tuiKgueCuea4suafk+S4uuiZmuaLn+iKgueCue+8jOabtOWKoOaOpei/kVZ1Zee7hOS7tueahOihqOeOsFxyXG5cdFx0fSxcclxuXHRcdC8vICNlbmRpZlxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0c3Bhbjoge1xyXG5cdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRkZWZhdWx0OiAyNFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvZmZzZXQ6IHtcclxuXHRcdFx0XHR0eXBlOiBOdW1iZXIsXHJcblx0XHRcdFx0ZGVmYXVsdDogLTFcclxuXHRcdFx0fSxcclxuXHRcdFx0cHVsbDoge1xyXG5cdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRkZWZhdWx0OiAtMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwdXNoOiB7XHJcblx0XHRcdFx0dHlwZTogTnVtYmVyLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IC0xXHJcblx0XHRcdH0sXHJcblx0XHRcdHhzOiBbTnVtYmVyLCBPYmplY3RdLFxyXG5cdFx0XHRzbTogW051bWJlciwgT2JqZWN0XSxcclxuXHRcdFx0bWQ6IFtOdW1iZXIsIE9iamVjdF0sXHJcblx0XHRcdGxnOiBbTnVtYmVyLCBPYmplY3RdLFxyXG5cdFx0XHR4bDogW051bWJlciwgT2JqZWN0XVxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0Z3V0dGVyOiAwLFxyXG5cdFx0XHRcdHNpemVDbGFzczogJycsXHJcblx0XHRcdFx0cGFyZW50V2lkdGg6IDAsXHJcblx0XHRcdFx0bnZ1ZVdpZHRoOiAwLFxyXG5cdFx0XHRcdG1hcmdpbkxlZnQ6IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0bGVmdDogMFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHRcdFx0Ly8g5a2X6IqC5bCP56iL5bqP5Lit77yM5ZyoY29tcHV0ZWTkuK3or7vlj5YkcGFyZW505Li6dW5kZWZpbmVkXHJcblx0XHRcdGxldCBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XHJcblxyXG5cdFx0XHR3aGlsZSAocGFyZW50ICYmIHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lICE9PSAndW5pUm93Jykge1xyXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLnVwZGF0ZUd1dHRlcihwYXJlbnQuZ3V0dGVyKVxyXG5cdFx0XHRwYXJlbnQuJHdhdGNoKCdndXR0ZXInLCAoZ3V0dGVyKSA9PiB7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVHdXR0ZXIoZ3V0dGVyKVxyXG5cdFx0XHR9KVxyXG5cclxuXHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdHRoaXMudXBkYXRlTnZ1ZVdpZHRoKHBhcmVudC53aWR0aClcclxuXHRcdFx0cGFyZW50LiR3YXRjaCgnd2lkdGgnLCAod2lkdGgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZU52dWVXaWR0aCh3aWR0aClcclxuXHRcdFx0fSlcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0c2l6ZUxpc3QoKSB7XHJcblx0XHRcdFx0bGV0IHtcclxuXHRcdFx0XHRcdHNwYW4sXHJcblx0XHRcdFx0XHRvZmZzZXQsXHJcblx0XHRcdFx0XHRwdWxsLFxyXG5cdFx0XHRcdFx0cHVzaFxyXG5cdFx0XHRcdH0gPSB0aGlzO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0c3BhbixcclxuXHRcdFx0XHRcdG9mZnNldCxcclxuXHRcdFx0XHRcdHB1bGwsXHJcblx0XHRcdFx0XHRwdXNoXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyAjaWZuZGVmIEFQUC1OVlVFXHJcblx0XHRcdHBvaW50Q2xhc3NMaXN0KCkge1xyXG5cdFx0XHRcdGxldCBjbGFzc0xpc3QgPSBbXTtcclxuXHJcblx0XHRcdFx0Wyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCddLmZvckVhY2gocG9pbnQgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgcHJvcHMgPSB0aGlzW3BvaW50XTtcclxuXHRcdFx0XHRcdGlmICh0eXBlb2YgcHJvcHMgPT09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0XHRcdGNsYXNzTGlzdC5wdXNoKGAke0NvbXBvbmVudENsYXNzfS0ke3BvaW50fS0ke3Byb3BzfWApXHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ29iamVjdCcgJiYgcHJvcHMpIHtcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocG9pbnRQcm9wID0+IHtcclxuXHRcdFx0XHRcdFx0XHRjbGFzc0xpc3QucHVzaChcclxuXHRcdFx0XHRcdFx0XHRcdHBvaW50UHJvcCA9PT0gJ3NwYW4nID9cclxuXHRcdFx0XHRcdFx0XHRcdGAke0NvbXBvbmVudENsYXNzfS0ke3BvaW50fS0ke3Byb3BzW3BvaW50UHJvcF19YCA6XHJcblx0XHRcdFx0XHRcdFx0XHRgJHtDb21wb25lbnRDbGFzc30tJHtwb2ludH0tJHtwb2ludFByb3B9LSR7cHJvcHNbcG9pbnRQcm9wXX1gXHJcblx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHQvLyDmlK/ku5jlrp3lsI/nqIvluo/kvb/nlKggOmNsYXNzPVsgWydhJywnYiddIF3vvIzmuLLmn5PplJnor69cclxuXHRcdFx0XHRyZXR1cm4gY2xhc3NMaXN0LmpvaW4oJyAnKTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHVwZGF0ZUd1dHRlcihwYXJlbnRHdXR0ZXIpIHtcclxuXHRcdFx0XHRwYXJlbnRHdXR0ZXIgPSBOdW1iZXIocGFyZW50R3V0dGVyKTtcclxuXHRcdFx0XHRpZiAoIWlzTmFOKHBhcmVudEd1dHRlcikpIHtcclxuXHRcdFx0XHRcdHRoaXMuZ3V0dGVyID0gcGFyZW50R3V0dGVyIC8gMlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdHVwZGF0ZU52dWVXaWR0aCh3aWR0aCkge1xyXG5cdFx0XHRcdC8vIOeUqOS6juWcqG52dWXnq6/vvIxzcGFu77yMb2Zmc2V077yMcHVsbO+8jHB1c2jnmoTorqHnrpdcclxuXHRcdFx0XHR0aGlzLnBhcmVudFdpZHRoID0gd2lkdGg7XHJcblx0XHRcdFx0WydzcGFuJywgJ29mZnNldCcsICdwdWxsJywgJ3B1c2gnXS5mb3JFYWNoKHNpemUgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgY3VyU2l6ZSA9IHRoaXNbc2l6ZV07XHJcblx0XHRcdFx0XHRpZiAoKGN1clNpemUgfHwgY3VyU2l6ZSA9PT0gMCkgJiYgY3VyU2l6ZSAhPT0gLTEpIHtcclxuXHRcdFx0XHRcdFx0bGV0IFJQWCA9IDEgLyAyNCAqIGN1clNpemUgKiB3aWR0aFxyXG5cdFx0XHRcdFx0XHRSUFggPSBOdW1iZXIoUlBYKTtcclxuXHRcdFx0XHRcdFx0c3dpdGNoIChzaXplKSB7XHJcblx0XHRcdFx0XHRcdFx0Y2FzZSAnc3Bhbic6XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm52dWVXaWR0aCA9IFJQWFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0Y2FzZSAnb2Zmc2V0JzpcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMubWFyZ2luTGVmdCA9IFJQWFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0Y2FzZSAncHVsbCc6XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnJpZ2h0ID0gUlBYXHJcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRjYXNlICdwdXNoJzpcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMubGVmdCA9IFJQWFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH0sXHJcblx0XHR3YXRjaDoge1xyXG5cdFx0XHRzaXplTGlzdDoge1xyXG5cdFx0XHRcdGltbWVkaWF0ZTogdHJ1ZSxcclxuXHRcdFx0XHRoYW5kbGVyKG5ld1ZhbCkge1xyXG5cdFx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtTlZVRVxyXG5cdFx0XHRcdFx0bGV0IGNsYXNzTGlzdCA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgc2l6ZSBpbiBuZXdWYWwpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgY3VyU2l6ZSA9IG5ld1ZhbFtzaXplXTtcclxuXHRcdFx0XHRcdFx0aWYgKChjdXJTaXplIHx8IGN1clNpemUgPT09IDApICYmIGN1clNpemUgIT09IC0xKSB7XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3NMaXN0LnB1c2goXHJcblx0XHRcdFx0XHRcdFx0XHRzaXplID09PSAnc3BhbicgP1xyXG5cdFx0XHRcdFx0XHRcdFx0YCR7Q29tcG9uZW50Q2xhc3N9LSR7Y3VyU2l6ZX1gIDpcclxuXHRcdFx0XHRcdFx0XHRcdGAke0NvbXBvbmVudENsYXNzfS0ke3NpemV9LSR7Y3VyU2l6ZX1gXHJcblx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQvLyDmlK/ku5jlrp3lsI/nqIvluo/kvb/nlKggOmNsYXNzPVsgWydhJywnYiddIF3vvIzmuLLmn5PplJnor69cclxuXHRcdFx0XHRcdHRoaXMuc2l6ZUNsYXNzID0gY2xhc3NMaXN0LmpvaW4oJyAnKTtcclxuXHRcdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZU52dWVXaWR0aCh0aGlzLnBhcmVudFdpZHRoKTtcclxuXHRcdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz0nc2NzcycgPlxyXG5cdC8qIGJyZWFrcG9pbnRzICovXHJcblx0JC0tc206IDc2OHB4ICFkZWZhdWx0O1xyXG5cdCQtLW1kOiA5OTJweCAhZGVmYXVsdDtcclxuXHQkLS1sZzogMTIwMHB4ICFkZWZhdWx0O1xyXG5cdCQtLXhsOiAxOTIwcHggIWRlZmF1bHQ7XHJcblxyXG5cdCRicmVha3BvaW50czogKCd4cycgOiAobWF4LXdpZHRoOiAkLS1zbSAtIDEpLFxyXG5cdCdzbScgOiAobWluLXdpZHRoOiAkLS1zbSksXHJcblx0J21kJyA6IChtaW4td2lkdGg6ICQtLW1kKSxcclxuXHQnbGcnIDogKG1pbi13aWR0aDogJC0tbGcpLFxyXG5cdCd4bCcgOiAobWluLXdpZHRoOiAkLS14bCkpO1xyXG5cclxuXHQkbGF5b3V0LW5hbWVzcGFjZTogXCIudW5pLVwiO1xyXG5cdCRjb2w6ICRsYXlvdXQtbmFtZXNwYWNlK1wiY29sXCI7XHJcblxyXG5cdEBmdW5jdGlvbiBnZXRTaXplKCRzaXplKSB7XHJcblx0XHQvKiBUT0RPIDEvMjQgKiAkc2l6ZSAqIDEwMCAqIDElOyDkvb/nlKjorqHnrpflkI7nmoTlgLzvvIzkuLrkuobop6PlhrMgdnVlMyDmjqfliLblj7DmiqXplJkgKi9cclxuXHRcdEByZXR1cm4gMC4wNDE2NjY2NjY2NiAqICRzaXplICogMTAwICogMSU7XHJcblx0fVxyXG5cclxuXHRAbWl4aW4gcmVzKCRrZXksICRtYXA6JGJyZWFrcG9pbnRzKSB7XHJcblx0XHRAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xyXG5cdFx0XHRAbWVkaWEgc2NyZWVuIGFuZCAje2luc3BlY3QobWFwLWdldCgkbWFwLCRrZXkpKX0ge1xyXG5cdFx0XHRcdEBjb250ZW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0QGVsc2Uge1xyXG5cdFx0XHRAd2FybiBcIlVuZGVpbmZlZCBwb2ludDogYCN7JGtleX1gXCI7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0I3skY29sfSB7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0fVxyXG5cclxuXHQjeyRjb2x9LTAge1xyXG5cdFx0LyogI2lmZGVmIEFQUC1OVlVFICovXHJcblx0XHR3aWR0aDogMDtcclxuXHRcdGhlaWdodDogMDtcclxuXHRcdG1hcmdpbi10b3A6IDA7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDA7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDA7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHR9XHJcblxyXG5cdEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggMjQge1xyXG5cdFx0I3skY29sfS0jeyRpfSB7XHJcblx0XHRcdHdpZHRoOiBnZXRTaXplKCRpKTtcclxuXHRcdH1cclxuXHJcblx0XHQjeyRjb2x9LW9mZnNldC0jeyRpfSB7XHJcblx0XHRcdG1hcmdpbi1sZWZ0OiBnZXRTaXplKCRpKTtcclxuXHRcdH1cclxuXHJcblx0XHQjeyRjb2x9LXB1bGwtI3skaX0ge1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdHJpZ2h0OiBnZXRTaXplKCRpKTtcclxuXHRcdH1cclxuXHJcblx0XHQjeyRjb2x9LXB1c2gtI3skaX0ge1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdGxlZnQ6IGdldFNpemUoJGkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QGVhY2ggJHBvaW50IGluIG1hcC1rZXlzKCRicmVha3BvaW50cykge1xyXG5cdFx0QGluY2x1ZGUgcmVzKCRwb2ludCkge1xyXG5cdFx0XHQjeyRjb2x9LSN7JHBvaW50fS0wIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRAZm9yICRpIGZyb20gMCB0aHJvdWdoIDI0IHtcclxuXHRcdFx0XHQjeyRjb2x9LSN7JHBvaW50fS0jeyRpfSB7XHJcblx0XHRcdFx0XHR3aWR0aDogZ2V0U2l6ZSgkaSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQjeyRjb2x9LSN7JHBvaW50fS1vZmZzZXQtI3skaX0ge1xyXG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IGdldFNpemUoJGkpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0I3skY29sfS0jeyRwb2ludH0tcHVsbC0jeyRpfSB7XHJcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdFx0XHRyaWdodDogZ2V0U2l6ZSgkaSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQjeyRjb2x9LSN7JHBvaW50fS1wdXNoLSN7JGl9IHtcclxuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0XHRcdGxlZnQ6IGdldFNpemUoJGkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogI2VuZGlmICovXHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///51\n"); /***/ }), /* 52 */ /*!*********************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue ***! \*********************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& */ 53);\n/* harmony import */ var _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-data-charts.vue?vue&type=script&lang=js& */ 90);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"fe947b98\",\n null,\n false,\n _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbVQ7QUFDblQ7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSxpUkFBTTtBQUNSLEVBQUUsMFJBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUscVJBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tZGF0YS1jaGFydHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZlOTQ3Yjk4JnNjb3BlZD10cnVlJmZpbHRlci1tb2R1bGVzPWV5SnlaR05vWVhKMGN5STZleUowZVhCbElqb2ljbVZ1WkdWeWFuTWlMQ0pqYjI1MFpXNTBJam9pSWl3aWMzUmhjblFpT2pNNE9Ea3dMQ0poZEhSeWN5STZleUp0YjJSMWJHVWlPaUp5WkdOb1lYSjBjeUlzSW14aGJtY2lPaUpxY3lKOUxDSmxibVFpT2pVME5qa3lmWDAlM0QmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9xaXVuLWRhdGEtY2hhcnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImZlOTQ3Yjk4XCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvY29tcG9uZW50cy9xaXVuLWRhdGEtY2hhcnRzL3FpdW4tZGF0YS1jaGFydHMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n"); /***/ }), /* 53 */ /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& */ 54); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 54 */ /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components try { components = { qiunLoading: __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue */ 55) .default, qiunError: __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue */ 85) .default, } } catch (e) { if ( e.message.indexOf("Cannot find module") !== -1 && e.message.indexOf(".vue") !== -1 ) { console.error(e.message) console.error("1. 排查组件名称拼写是否正确") console.error( "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom" ) console.error( "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件" ) } else { throw e } } var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "chartsview"), attrs: { id: _vm._$s(0, "a-id", "ChartBoxId" + _vm.cid), _i: 0 }, }, [ _vm._$s(1, "i", _vm.mixinDatacomLoading) ? _c( "view", [ _c("qiun-loading", { attrs: { loadingType: _vm.loadingType, _i: 2 }, }), ], 1 ) : _vm._e(), _vm._$s(3, "i", _vm.mixinDatacomErrorMessage && _vm.errorShow) ? _c( "view", { attrs: { _i: 3 }, on: { click: _vm.reloading } }, [ _c("qiun-error", { attrs: { errorMessage: _vm.errorMessage, _i: 4 }, }), ], 1 ) : _vm._e(), _vm._$s(5, "i", _vm.echarts) ? [ _c("view", { directives: [ { name: "show", rawName: "v-show", value: _vm._$s(6, "v-show", _vm.showchart), expression: "_$s(6,'v-show',showchart)", }, ], wxsProps: { "change:resize": "echartsResize", "change:prop": "echartsOpts", }, style: _vm._$s(6, "s", { background: _vm.background }), attrs: { "data-directory": _vm._$s(6, "a-data-directory", _vm.directory), id: _vm._$s(6, "a-id", "EC" + _vm.cid), prop: _vm._$s(6, "change:echartsOpts", _vm.echartsOpts), resize: _vm._$s(6, "change:echartsResize", _vm.echartsResize), _i: 6, }, }), ] : [ _c( "view", { wxsProps: { "change:prop": "uchartsOpts" }, attrs: { id: _vm._$s(8, "a-id", "UC" + _vm.cid), prop: _vm._$s(8, "change:uchartsOpts", _vm.uchartsOpts), _i: 8, }, on: {}, }, [ _c("canvas", { directives: [ { name: "show", rawName: "v-show", value: _vm._$s(9, "v-show", _vm.showchart), expression: "_$s(9,'v-show',showchart)", }, ], style: _vm._$s(9, "s", { width: _vm.cWidth + "px", height: _vm.cHeight + "px", background: _vm.background, }), attrs: { id: _vm._$s(9, "a-id", _vm.cid), canvasId: _vm._$s(9, "a-canvasId", _vm.cid), "disable-scroll": _vm._$s( 9, "a-disable-scroll", _vm.disableScroll ), _i: 9, }, on: { error: _vm._error }, }), ] ), ], ], 2 ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 55 */ /*!*************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue ***! \*************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-loading.vue?vue&type=template&id=1c4fd998& */ 56);\n/* harmony import */ var _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-loading.vue?vue&type=script&lang=js& */ 58);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUg7QUFDekg7QUFDZ0U7QUFDTDs7O0FBRzNEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLGtGQUFNO0FBQ1IsRUFBRSx1RkFBTTtBQUNSLEVBQUUsZ0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tbG9hZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWM0ZmQ5OTgmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9xaXVuLWxvYWRpbmcudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///55\n"); /***/ }), /* 56 */ /*!********************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=template&id=1c4fd998& ***! \********************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-loading.vue?vue&type=template&id=1c4fd998& */ 57); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 57 */ /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=template&id=1c4fd998& ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", [ _vm._$s(1, "i", _vm.loadingType == 1) ? _c("Loading1", { attrs: { _i: 1 } }) : _vm._e(), _vm._$s(2, "i", _vm.loadingType == 2) ? _c("Loading2", { attrs: { _i: 2 } }) : _vm._e(), _vm._$s(3, "i", _vm.loadingType == 3) ? _c("Loading3", { attrs: { _i: 3 } }) : _vm._e(), _vm._$s(4, "i", _vm.loadingType == 4) ? _c("Loading4", { attrs: { _i: 4 } }) : _vm._e(), _vm._$s(5, "i", _vm.loadingType == 5) ? _c("Loading5", { attrs: { _i: 5 } }) : _vm._e(), ], 1 ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 58 */ /*!**************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=script&lang=js& ***! \**************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-loading.vue?vue&type=script&lang=js& */ 59);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXd2QixDQUFnQixrdUJBQUcsRUFBQyIsImZpbGUiOiI1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1sb2FkaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///58\n"); /***/ }), /* 59 */ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=script&lang=js& ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _loading = _interopRequireDefault(__webpack_require__(/*! ./loading1.vue */ 60));\nvar _loading2 = _interopRequireDefault(__webpack_require__(/*! ./loading2.vue */ 65));\nvar _loading3 = _interopRequireDefault(__webpack_require__(/*! ./loading3.vue */ 70));\nvar _loading4 = _interopRequireDefault(__webpack_require__(/*! ./loading4.vue */ 75));\nvar _loading5 = _interopRequireDefault(__webpack_require__(/*! ./loading5.vue */ 80));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n components: {\n Loading1: _loading.default,\n Loading2: _loading2.default,\n Loading3: _loading3.default,\n Loading4: _loading4.default,\n Loading5: _loading5.default\n },\n name: 'qiun-loading',\n props: {\n loadingType: {\n type: Number,\n default: 2\n }\n },\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9xaXVuLWxvYWRpbmcudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJMb2FkaW5nMSIsIkxvYWRpbmcyIiwiTG9hZGluZzMiLCJMb2FkaW5nNCIsIkxvYWRpbmc1IiwibmFtZSIsInByb3BzIiwibG9hZGluZ1R5cGUiLCJ0eXBlIiwiZGVmYXVsdCIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztlQUNBO0VBQ0FBO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0VBQUE7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldz5cclxuXHQgPExvYWRpbmcxIHYtaWY9XCJsb2FkaW5nVHlwZT09MVwiLz5cclxuXHQgPExvYWRpbmcyIHYtaWY9XCJsb2FkaW5nVHlwZT09MlwiLz5cclxuXHQgPExvYWRpbmczIHYtaWY9XCJsb2FkaW5nVHlwZT09M1wiLz5cclxuXHQgPExvYWRpbmc0IHYtaWY9XCJsb2FkaW5nVHlwZT09NFwiLz5cclxuXHQgPExvYWRpbmc1IHYtaWY9XCJsb2FkaW5nVHlwZT09NVwiLz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBMb2FkaW5nMSBmcm9tIFwiLi9sb2FkaW5nMS52dWVcIjtcclxuXHRpbXBvcnQgTG9hZGluZzIgZnJvbSBcIi4vbG9hZGluZzIudnVlXCI7XHJcblx0aW1wb3J0IExvYWRpbmczIGZyb20gXCIuL2xvYWRpbmczLnZ1ZVwiO1xyXG5cdGltcG9ydCBMb2FkaW5nNCBmcm9tIFwiLi9sb2FkaW5nNC52dWVcIjtcclxuXHRpbXBvcnQgTG9hZGluZzUgZnJvbSBcIi4vbG9hZGluZzUudnVlXCI7XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czp7TG9hZGluZzEsTG9hZGluZzIsTG9hZGluZzMsTG9hZGluZzQsTG9hZGluZzV9LFxyXG5cdFx0bmFtZTogJ3FpdW4tbG9hZGluZycsXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHRsb2FkaW5nVHlwZToge1xyXG5cdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRkZWZhdWx0OiAyXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0fTtcclxuXHRcdH0sXHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///59\n"); /***/ }), /* 60 */ /*!*********************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading1.vue?vue&type=template&id=e4e769ee&scoped=true& */ 61);\n/* harmony import */ var _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading1.vue?vue&type=script&lang=js& */ 63);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e4e769ee\",\n null,\n false,\n _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGU3NjllZSZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNGU3NjllZVwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmcxLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///60\n"); /***/ }), /* 61 */ /*!****************************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=template&id=e4e769ee&scoped=true& ***! \****************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading1.vue?vue&type=template&id=e4e769ee&scoped=true& */ 62); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 62 */ /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=template&id=e4e769ee&scoped=true& ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "container loading1"), attrs: { _i: 0 } }, [ _c("view", { staticClass: _vm._$s(1, "sc", "shape shape1"), attrs: { _i: 1 }, }), _c("view", { staticClass: _vm._$s(2, "sc", "shape shape2"), attrs: { _i: 2 }, }), _c("view", { staticClass: _vm._$s(3, "sc", "shape shape3"), attrs: { _i: 3 }, }), _c("view", { staticClass: _vm._$s(4, "sc", "shape shape4"), attrs: { _i: 4 }, }), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 63 */ /*!**********************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=script&lang=js& ***! \**********************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading1.vue?vue&type=script&lang=js& */ 64);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI2My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///63\n"); /***/ }), /* 64 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=script&lang=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//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading1',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMS52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzFcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmcxJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuLmNvbnRhaW5lci5sb2FkaW5nMSB7XHJcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLnNoYXBlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgaGVpZ2h0OiAxMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTEge1xyXG4gIGxlZnQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4OTBGRjtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTIge1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MUNCNzQ7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUzIHtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBQzg1ODtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTQge1xyXG4gIGJvdHRvbTogMDtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NjY2O1xyXG59XHJcblxyXG4ubG9hZGluZzEgLnNoYXBlMSB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTEgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlMSAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMSB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAxNnB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE2cHgsIDE2cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzEgLnNoYXBlMiB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTIgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMiB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAxNnB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMiB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAxNnB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmcxIC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24xc2hhcGUzIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgLTE2cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgLTE2cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMSAuc2hhcGU0IHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlNCAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24xc2hhcGU0IDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24xc2hhcGU0IHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAtMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE2cHgsIC0xNnB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE2cHgsIC0xNnB4KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n"); /***/ }), /* 65 */ /*!*********************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& */ 66);\n/* harmony import */ var _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading2.vue?vue&type=script&lang=js& */ 68);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e4cb3aec\",\n null,\n false,\n _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGNiM2FlYyZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNGNiM2FlY1wiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmcyLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n"); /***/ }), /* 66 */ /*!****************************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& ***! \****************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& */ 67); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 67 */ /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "container loading2"), attrs: { _i: 0 } }, [ _c("view", { staticClass: _vm._$s(1, "sc", "shape shape1"), attrs: { _i: 1 }, }), _c("view", { staticClass: _vm._$s(2, "sc", "shape shape2"), attrs: { _i: 2 }, }), _c("view", { staticClass: _vm._$s(3, "sc", "shape shape3"), attrs: { _i: 3 }, }), _c("view", { staticClass: _vm._$s(4, "sc", "shape shape4"), attrs: { _i: 4 }, }), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 68 */ /*!**********************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=script&lang=js& ***! \**********************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading2.vue?vue&type=script&lang=js& */ 69);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n"); /***/ }), /* 69 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=script&lang=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//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading2',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMi52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzJcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmcyJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb250YWluZXIubG9hZGluZzIge1xyXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpO1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzIgLnNoYXBlIHtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuLmNvbnRhaW5lci5sb2FkaW5nMntcclxuICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRpb24gMXMgaW5maW5pdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuXHJcbi5sb2FkaW5nMiAuc2hhcGUxIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMSAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGUxIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUxIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIDIwcHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAyMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMSB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMjBweCwgMjBweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMiAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGUyIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIDIwcHgpO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIDIwcHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzIgLnNoYXBlMyB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjJzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMyAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAtMjBweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAtMjBweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmcyIC5zaGFwZTQge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGU0IDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjJzaGFwZTQgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjJzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIC0yMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlNCB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgLTIwcHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgLTIwcHgpO1xyXG4gIH1cclxufVxyXG5cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///69\n"); /***/ }), /* 70 */ /*!*********************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading3.vue?vue&type=template&id=e4af0bea&scoped=true& */ 71);\n/* harmony import */ var _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading3.vue?vue&type=script&lang=js& */ 73);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e4af0bea\",\n null,\n false,\n _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGFmMGJlYSZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNGFmMGJlYVwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmczLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///70\n"); /***/ }), /* 71 */ /*!****************************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=template&id=e4af0bea&scoped=true& ***! \****************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading3.vue?vue&type=template&id=e4af0bea&scoped=true& */ 72); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 72 */ /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=template&id=e4af0bea&scoped=true& ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "container loading3"), attrs: { _i: 0 } }, [ _c("view", { staticClass: _vm._$s(1, "sc", "shape shape1"), attrs: { _i: 1 }, }), _c("view", { staticClass: _vm._$s(2, "sc", "shape shape2"), attrs: { _i: 2 }, }), _c("view", { staticClass: _vm._$s(3, "sc", "shape shape3"), attrs: { _i: 3 }, }), _c("view", { staticClass: _vm._$s(4, "sc", "shape shape4"), attrs: { _i: 4 }, }), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 73 */ /*!**********************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=script&lang=js& ***! \**********************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading3.vue?vue&type=script&lang=js& */ 74);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI3My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n"); /***/ }), /* 74 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=script&lang=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//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading3',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMy52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI3NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzNcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmczJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbiAuY29udGFpbmVyLmxvYWRpbmczIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRpb24gMXMgaW5maW5pdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzMgLnNoYXBlMSB7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmczIC5zaGFwZTIge1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMHB4O1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzMgLnNoYXBlMyB7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmczIC5zaGFwZTQge1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4O1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuLmxvYWRpbmczIC5zaGFwZTEge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUxIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTEgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCA1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCA1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMyAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uM3NoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUyIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24zc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIDVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTIge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmczIC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUzIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uM3NoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIC01cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIC01cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzMgLnNoYXBlNCB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTQgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uM3NoYXBlNCAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uM3NoYXBlNCB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNXB4LCAtNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgLTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgLTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIC01cHgpO1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n"); /***/ }), /* 75 */ /*!*********************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading4.vue?vue&type=template&id=e492dce8&scoped=true& */ 76);\n/* harmony import */ var _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading4.vue?vue&type=script&lang=js& */ 78);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e492dce8\",\n null,\n false,\n _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNDkyZGNlOCZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNDkyZGNlOFwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmc0LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n"); /***/ }), /* 76 */ /*!****************************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=template&id=e492dce8&scoped=true& ***! \****************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading4.vue?vue&type=template&id=e492dce8&scoped=true& */ 77); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 77 */ /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=template&id=e492dce8&scoped=true& ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "container loading5"), attrs: { _i: 0 } }, [ _c("view", { staticClass: _vm._$s(1, "sc", "shape shape1"), attrs: { _i: 1 }, }), _c("view", { staticClass: _vm._$s(2, "sc", "shape shape2"), attrs: { _i: 2 }, }), _c("view", { staticClass: _vm._$s(3, "sc", "shape shape3"), attrs: { _i: 3 }, }), _c("view", { staticClass: _vm._$s(4, "sc", "shape shape4"), attrs: { _i: 4 }, }), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 78 */ /*!**********************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=script&lang=js& ***! \**********************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading4.vue?vue&type=script&lang=js& */ 79);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI3OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///78\n"); /***/ }), /* 79 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=script&lang=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//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading5',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nNC52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI3OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzVcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmc1JyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb250YWluZXIubG9hZGluZzUgLnNoYXBlIHtcclxuICB3aWR0aDogMTVweDtcclxuICBoZWlnaHQ6IDE1cHg7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLnNoYXBlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgaGVpZ2h0OiAxMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTEge1xyXG4gIGxlZnQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4OTBGRjtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTIge1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MUNCNzQ7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUzIHtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBQzg1ODtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTQge1xyXG4gIGJvdHRvbTogMDtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NjY2O1xyXG59XHJcblxyXG4ubG9hZGluZzUgLnNoYXBlMSB7XHJcbiAgYW5pbWF0aW9uOiBhbmltYXRpb241c2hhcGUxIDJzIGVhc2UgMHMgaW5maW5pdGUgcmV2ZXJzZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTEge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAxNXB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb241c2hhcGUxIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE1cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTIge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlMiAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGUyIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDE1cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTIge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTMge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlMyAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGUzIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIC0xNXB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTMge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIC0xNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgLTE1cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTQge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlNCAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGU0IHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb241c2hhcGU0IHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n"); /***/ }), /* 80 */ /*!*********************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading5.vue?vue&type=template&id=e476ade6&scoped=true& */ 81);\n/* harmony import */ var _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading5.vue?vue&type=script&lang=js& */ 83);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e476ade6\",\n null,\n false,\n _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNDc2YWRlNiZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNDc2YWRlNlwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmc1LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///80\n"); /***/ }), /* 81 */ /*!****************************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=template&id=e476ade6&scoped=true& ***! \****************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading5.vue?vue&type=template&id=e476ade6&scoped=true& */ 82); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 82 */ /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=template&id=e476ade6&scoped=true& ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "container loading6"), attrs: { _i: 0 } }, [ _c("view", { staticClass: _vm._$s(1, "sc", "shape shape1"), attrs: { _i: 1 }, }), _c("view", { staticClass: _vm._$s(2, "sc", "shape shape2"), attrs: { _i: 2 }, }), _c("view", { staticClass: _vm._$s(3, "sc", "shape shape3"), attrs: { _i: 3 }, }), _c("view", { staticClass: _vm._$s(4, "sc", "shape shape4"), attrs: { _i: 4 }, }), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 83 */ /*!**********************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=script&lang=js& ***! \**********************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading5.vue?vue&type=script&lang=js& */ 84);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI4My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///83\n"); /***/ }), /* 84 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=script&lang=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//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading6',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nNS52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI4NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzZcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmc2JyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuPHN0eWxlIHNjb3BlZD1cInRydWVcIj5cclxuLmNvbnRhaW5lciB7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmNvbnRhaW5lci5sb2FkaW5nNiB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBpbmZpbml0ZTtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmc2IC5zaGFwZSB7XHJcbiAgd2lkdGg6IDEycHg7XHJcbiAgaGVpZ2h0OiAxMnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuXHJcbi5sb2FkaW5nNiAuc2hhcGUxIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlMSAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGUxIDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb242c2hhcGUxIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMThweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlMSB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nNiAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlMiAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGUyIDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb242c2hhcGUyIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMThweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTIge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMThweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc2IC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGUzIDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjZzaGFwZTMgMnMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTMge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgLTE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlMyB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgLTE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAtMThweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE4cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzYgLnNoYXBlNCB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjZzaGFwZTQgMnMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlNCAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlNCB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE4cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlNCB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE4cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAwKTtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///84\n"); /***/ }), /* 85 */ /*!*********************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue ***! \*********************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-error.vue?vue&type=template&id=0507f1f4& */ 86);\n/* harmony import */ var _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-error.vue?vue&type=script&lang=js& */ 88);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUg7QUFDdkg7QUFDOEQ7QUFDTDs7O0FBR3pEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLGdGQUFNO0FBQ1IsRUFBRSxxRkFBTTtBQUNSLEVBQUUsOEZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUseUZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tZXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MDdmMWY0JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vcWl1bi1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3FpdW4tZXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZXJyb3IvcWl1bi1lcnJvci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n"); /***/ }), /* 86 */ /*!****************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=template&id=0507f1f4& ***! \****************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-error.vue?vue&type=template&id=0507f1f4& */ 87); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 87 */ /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=template&id=0507f1f4& ***! \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "chartsview"), attrs: { _i: 0 } }, [ _c("view", { staticClass: _vm._$s(1, "sc", "charts-error"), attrs: { _i: 1 }, }), _c( "view", { staticClass: _vm._$s(2, "sc", "charts-font"), attrs: { _i: 2 } }, [ _vm._v( _vm._$s( 2, "t0-0", _vm._s(_vm.errorMessage == null ? "请点击重试" : _vm.errorMessage) ) ), ] ), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 88 */ /*!**********************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=script&lang=js& ***! \**********************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-error.vue?vue&type=script&lang=js& */ 89);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXN2QixDQUFnQixndUJBQUcsRUFBQyIsImZpbGUiOiI4OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///88\n"); /***/ }), /* 89 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=script&lang=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//\n//\n//\n//\n//\nvar _default = {\n name: 'qiun-error',\n props: {\n errorMessage: {\n type: String,\n default: null\n }\n },\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZXJyb3IvcWl1bi1lcnJvci52dWUiXSwibmFtZXMiOlsibmFtZSIsInByb3BzIiwiZXJyb3JNZXNzYWdlIiwidHlwZSIsImRlZmF1bHQiLCJkYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O2VBUUE7RUFDQUE7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI4OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNoYXJ0c3ZpZXdcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwiY2hhcnRzLWVycm9yXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJjaGFydHMtZm9udFwiPnt7ZXJyb3JNZXNzYWdlPT1udWxsPyfor7fngrnlh7vph43or5UnOmVycm9yTWVzc2FnZX19PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ3FpdW4tZXJyb3InLFxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0ZXJyb3JNZXNzYWdlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IG51bGxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9O1xyXG5cdFx0fSxcclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cdC5jaGFydHN2aWV3IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRmbGV4OiAxO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHQuY2hhcnRzLWZvbnR7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogI0NDQ0NDQztcclxuXHRcdG1hcmdpbi10b3A6IDEwcHg7XHJcblx0fVxyXG5cdC5jaGFydHMtZXJyb3J7XHJcblx0XHR3aWR0aDogMTI4cHg7XHJcblx0XHRoZWlnaHQ6IDEyOHB4O1xyXG5cdFx0YmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRERQbUhMQUFBVXowbEVRVlI0WHUxZGUzQmMxWDMrem1wM2pZVldma1BBZ0NXd1k4ekxFZ2xOUUNTVzB5VDlvMlNRYURLZE51bFV5a3dmTStrMDlwK0ozSW1ZSVBKWGk5eVp6RFNaWml3eWFadVpCQ3duTkcxRE1vZ0VtVUFBeTd4cy9NQXlOaENNaldXdHNLMWRlVS9uMjNPdnRMdTZqM1B2M3QyOWQ3MW54ak9TZGU0NTUvNSszL205ejdrQ2pSWTRCUjdlSzdma2NtaHJhc0xUMzdoYlRBWStRWUFEaWdESGFnd0ZZR2hjN2dad0hNQVVnRzRoTVB6TmU4Um9XSW5UQUVDQW5IbDRyK3lSRXQwRFhXSWJoeDNjSjVmSFA4VFlqbnRGUjREVEJEcVVJd0JtTXJKREN0eVBIRG9RdzBROGprZVhpbkNMdEVDcDQzR3doNTZSMjJJeFRCYnUrS0Z4T1RiUUpibzlEbFcxN3JZQVNHZGxOeVNlS2wySkFEcGJrbUtpYWl0MG1XaG9YSFprbXpFNTJDa29jbXZhdnZPc2JNdmw4TWhBbCtqbFFyZzJDUXp1NkJJOU5WMll3K1QyQUppVm8rRHVMMmtTZUxRMUtmckM4a0xjWWJrWUJ2L3BiakVXaGpVTmpVdlNwazlLU0FpY20ydEdYeGpBYVVjYmV3QmtKQW02eGVMQnAxUEoyb3MwNnR0Y0RsOEgwQ0VFYUdudkdlZ1NnMkVBUVpUVzRCMEFFbnRTUzJvdjBtaGdKYzVqbXdUNklERVdpMkUwek5aMldFRmhDNENaakNSeEg3R3dBZnBia21Ja0xDOUVGUUJnMjBCWGVPeVNzTkJHWngyT1hrQjZWZzVDZ0FiTVpnRDdCVERTa2hURE9nTTMra1NEQXI3aUFOTno4bjRoUVJkeG9qVXU5a1RqVlJ1cnRLS0FKd0JJS1pmUFpQT3VZV0ZnWTZ3bGdWNGhhdStHTlZqc25RS2VBSkRPU0lwL1d0NmxiU0tlUUc4alNPU2RBYlYrd2lzQTdGeERTR0FxQm13TlM1RElpR0l1Y3lOd0tpR2VkdXRUejMvM0JnQ2I0SkJKb0dxRElKMlZXNFJFbXhSb2cwUzNsR2dUL05sZlkzUnpDZ0pqUW1KU0NreGVEdUR3QmdDYjhIQWh2UWtDSWRDYlNnUWZtU1BEbVdHRHpIc20xVXF3akJFVUFNYnFFUkNlQUVCR3oyUmtud1IydVcweUFaUWRMNkRSK1dFVzkwc3lYTG1qdFc4U28wSmc5TW9FOXRTRDRlc1pBTlVBQWQxTTVOQWpHT1VMYWFPa0F6Q0tHRWFqN0FyN0FvQkhFR3hyU1lxZE9ueE1aK1czWkE1OVplaHhuV2tDN3lNbEprVU1JeTF4N0l5YVZQQU5BQU1FSFRsZ1RBQ08xcllFUmxxVG90K0o4bmJwNThDNVZjRUJEZnRuT0VwQUtBc0FnWVBBUGdOWlFiWUZQM1FlQ0F5YkovQmcyQ1ZDMlFEd0NvSlVBdHVkaUpLdUV4Q1FMb1piUEtpckFvT0hvdnVJVGhWQnl1WGlpMmpFL0M5STJUYVhCWXNmbVRoeWFoTXRDV3kxQTRFUmJqN3J2dlJJOWFDYTNGN3BJTm0zbjVYZFhndGpGZ0hBWUNRclc0djhiQm82TVlGZXA1Y3dtRWVmdVN3UXBETlNSb3E5K29zZHJxUmFHQnFYTWhmRFZpOGdXQVNBZEVidXN3dXlHQ0tOU0xhdEJ5Z1hCSFVxQVFvaE1tSEVTQUtycXpTcm80VElTMnlPcTEwZFZRUUF1eUtRVW9DN0JYbkl4SFFXd3dMNGF5L3FJTS84REhhRkp1aWp2N005OVF6YU5tQXg2aHpRRnN2aEtTbXh2YWtKbzdvSFVvb0E0TVVBMHdIQlREWWZRblZVQjZiRm5MYzFKSHFpRmdQd3hQblN6aEtqTFVuMEIrVXBzRG9xRmtPZkx2TzVITjhBTU41bE9KVVUyKzJJTUQwbmUwUU90Q2NxMGs3T0FOZTFWR1RvYWc3cWFCUlhlaUZGQUpqT3lCRU5zVjIwSnFjZ2oyRlFIZ3Z5SldZdkFRZlBBSnV2QXY3MTk4QURtNERNSEpCS0FtdWFnNXlwZW1QcEdOaVZXazJwRGNDREREUUNQVFU3RU9nbWpyeE1SZ0E4ZGdCWW13Sk9Yd0J1V2dIODdtM2d6MjZPTGdEeTZxOUc5UlNMdklBeW1GWlVHc2FDakp6RTdxQjErdnZuZ1hSR1FlYkc1UUIvUDMwZWFGMmlRQkhsbGs4d3hkRGZHcS9lWVZMTFFKQmZFT1FOT3BrMy9CZzg2aGJBOGlBWnd0Mi9hNzhhc1g4enNLUkovZnpZUWVEdHRGSUhVYmNKcWkwSm5NNEZhT1g5ZzJTdzdsZ0hUZ1BUczBESFJ4VGpUNXdEdHF6VGZUcjgvYW9KQXJmVHdYMDU1UDE1MTlxNmFwR1Y0djgvWGxVNm56di92bzhDdnp3SzNMMFcyTFM2V3F1by9EelZBb0ZyTWlpdnl6VlN2cFVueWNJTVZBVVUvLy8ya2dJQzliK3BEcXE1amlyTVZYRVgwUlVBZk1rd2dvRHJNb0ZRQlViVWNvcXhWRkpzcmRRQ3RBQVFaaEJVaWpDaEdsZml3ZFNTeXB4ODFnYUFBUUxMQTZPaElsYU5GMk1HcXJpTW0xY0ZxSm9FdGxhaTBsb2JBSXpxWmJQWUY3UnJWMk4rQlQ3OUw5OWM4RWgrZHpJNDc0UkdZU3FCOXFEeUJ1YUxhd01nblpFOEV4amF1MjRDNTZUUEFaOCt2c0QwNTk0R1BySFc1MERXandWdUQyZ0J3RGdtL3ExQVg2Vk9CL3Y1WWVEV05lcmxYbnNmK01LR1lGL1VMUXZyZFRaWEFGUWlvZU4xa1ZIcVR4dUFnU28yeGlXQ2RrK0RWZ1d1QUVqUHl0MzFYcUFSSllBWmE5MlpTcXE3Q010dGpnQ29oMXI5Y2drVTF1ZUR1cTdQRVFEVHMvSlkwTm04c0JJMGd1c0t4Q0NNWkRJb2dzeXF6SklEaUEzWUFxQ3greXZEczRCSExWc0tCRm9QRVBETE5ZYlRvVUNaVXNBU0FGSFkvU2ZUQ3hXdHE1cUJLNHppRUIyYTFWbWZzcVRBSWdCVXVwTFhML0V2c2hqME5OQ2FCTTdOQXI4OXNURFNwNjRIT2ovaWQrVG9QMWVPUjdBWUFENHFnNnRCd3VmZUFSaGFiVjhCZlBKYUZXeFpFZ2VTTVdEVG1zdGFBcEQ4dnVNQ1JRQUk0N0dzMzd3RnJHNEdya3NCUjg4Mm1HMjEyVmhXM3JwRXRQdlppTDZPaHZtWnlPc3pGUG03RDZxcVgrNzZMNnhmR0lIL2w3bWtWTUdOS3k3NzNaOG5qSXloMTA4MWNmSEJrSkFFZmdxWnYya1Y4Q21qNEhQL0g0QURaMVJCcU5tWWJmdkV0VjdoVlgvOS9YN0hZUjRBWVVyNlBQbW1ZalNaLzdrYmxSVDQ3eU9LOFV5dThEeEE2eFhxSEFEVncyWHNBUlFodVNXQkZWN3JCZVlCb0hzeXVOSjc1ODJ6d0JOSGdOVkxnYis4VFRILzhZT3Evbys3ZmZQVkN3eW5wQWlDK1crY1VmT2Nud091dmxJZE80dGk4Nk1HNWdHUWRya0Z0Rm9FMmZVeWtKNEYrdTRBa25IZ3g2K3BuZi9aZHVDVzFRRDlmM29EUEEvQTV0Y0ZwQTN4OGluZ3hYY1Z1UEo2MURndDI3TVJ1S0cxV204YzZEeWV2WUU4QU1Kay9mL25xOEJOSzVWZU4xMC9rOG12bndaK1pSdzFwZmpuWWRDT3ExVlp1SmQyL0J6d3YwY1hHTDlocGRyMVBHTklnTVVGOE9lM0FxdVdlaGsxRkgwblVrblI2V1VsZVFDRU5lMzd2WmVVRk9pL0F5aFVEYlFML0p3RTVxNG5nSTRZTnhCeGw3TmlaNWtCb0NlUEFiOS9SNG1CcTY0RWVqY0dYOURoaFRsKytzWVRhUGR5YTdzQ2dQb3lTTTFMdnVqek04RHpkM2N1TU55MDhpa1plQnFZcW9FN25qdjF0MjhwM2MzZi8raGFwU0xzMmpzekFJMUx1bzQwSk1uNGo2NHM3djNQenltcFFOZVNnTHRuTGZEeGlIa1lYa3ZHRkFBMHIyWWpzZjNzUEYwa20vci9IKzlhRVA4UDhPUlBFaGg1ZWNFcklQTnBHTEp4RjcvM29XTGNmZXNWODByYm9RK1V5RGY3ZjNIVFl1UHgrWGVBWDAwQ3Q2OEJQbjBEOE84VGFzeXZiZ1pha3JwdkVJcCtudXlBUEFDbU0vS3NXN2szYitONC9BQkE1bFNxOGNJSDAvbzM5ZjlmM0tvWVFZYWIwdURuUjRCalo0R3YzTFlBZ0IrOXFpUUIreGUyWDArcTRrdzIyaEw4Vjlyb1RYejNCVFhQMXo2bVZBSnpEZnhIcVVJRE5FTE4wMmY5aEk3L1Q2djd6U2tsYm1sOE1mRkNYenpvUnAxUHY1N24vV2o1TS9SckpubjIvUUc0cmxWSklQTTQrRGZ2V1ZqQjkvWXBGZkZKSXpCRVp2N2lNSEFpclVUKzU5cUJPMnpjdTd6dWYxZnRmck9LdHhBVVZFbEJGM2NHVFR0elBCYU50aWFGaFJ5MG5sSG9HSURjL2ErZlVsZXowRHEvWlkyNmtpWG9Sb0NSMEc1V3ZSa29NbmYwL3h3Rlhud1BpQUZJTmdFM0xBT21Md0tualBFb0tlamZXN1hqMCtxME1lZjkyc2VMVlFOTHZGOTVIL2lUbTRDTkpmWkMwTzhlNUhoZUFrSkNOd0JrSHN2Kyt6dURYS3Evc1NnZC91dTF4ZjQ3Z2ZuV09SNW1WZU5lMVF4OGFkT0NsVzhsK244d29RekRMOTY4MkNpazdmRFRnOEQxS2FEM1puOXJyZFJUbEhBMG1tbXZMSkpPSG9wRVJGZzhBSytFSWdpb21vNmRBeTdPS2RYd054M0FpUm5nUnk4RE9RbDBYZ044WnAxOXRKRE1KWk1MUlgvcE9oN2Vxd2hNTlJDbVp0cGtWcmVpZVBFRUNBRExqMFNINldXZDFrSWdQUDZHMnNWdHk0QXYzNnBFLys0M2dETVgxSzYrYjhOaUVKaEdIcVhFVjI2M0J3bTlBWTczMVE2Z0pWRjdxbkRuVDd5bmJDUzZ6RHg4UXBYSmdOaThKUEJ3bWxqb3VvQzFmM1g3RmRESEgzMERtTXNCRzFZb3NVK20wVmc4ZXhHNHBrVjVCMmJlZ0NGZzVodElNQ2Y3Z0RPYWRzQ1hiZ0d1c2JFanFra2JNcCtpdjdRUjVQT0crZVVHQURML3JXbWdTUUJ6RXVpNEN2alQ5Y0JVQm5qaWtQcWJDWUp6RjRFZkdCZE5NVzVnNXhtWUJLWTNjT2dNc0dFVmNDbFhUVlk3eitXa0FyeFVDSWtvRklBNmtlTFh4NERYVGl1RGIydWJpaGRrY3NDbkRaK2ZEUHpaSVJYK3BZdkpSQlBGNkdmYlZQUlF0MTI0RkU0QVVMSlpCT2UwWXdGVUFaRzltdjJGZDRHOUo0dGRPRWIwZm5OQ1ZReHR1UUhvdWc0Z0NINXlBRGd4cmRqdFpQUlplUXF2bkZJU2dFbWlNRFY2WmpidWVQMERnQm05UFllczlUaXpocjg0bXI5OE9sOVF3cHM2Nk9zelpPeUYrV1MyR1NRS2l3MmdDY0Q2QmtCTUFCVDlETkxZNlhGS2dpY25WV0NJdVFSNkJNd2IwT2p6MGhoaXBnM3g1ZHNpbFI2dWJ3QTB4d0dDZ0R2YUxzSkhKdFBQUC95Qkt2UWc4NjJTUUc1Z1lCeUFyWkk1RUxjMStQaTdQZ0NtTTVKZnVBck5SWkJ1TDB1R01rZGc1ZHNYUGt0d2NQZlM0UE1xOXMxeHpEQXhTOUtabFl4UTB3ZEFsT0lBRk9QVTVXeG0xczZLS2ZUenFidkxZVDdITldNQU5DWlppeGloVnA4QVlIU1BscnhkV3BjTU1pTjgvUG11YTFRVzBFK0xhamJRZU5mNkE0QloxTUd3NXo5OGJERkx5YkFuRHF2WVBwdE9rTWNKR0JHdUIrQnJhUmVGUkNZVS9PUFhnVk1mV2pPVytwNEduMW51NVJiZWRaTUlIT2U3TDZwZXZKYStFcWx2dHpXVTlYZFBvZUNRMUFNNnZiQ3ArMHQzUDNjOTZ3Slp6TUhHNmw0V2RKUjdWdUNSNTRFTGM2cTR4RXUwc0N5bUJmaXdwMnlnYmoxQWdPdnpQQlFqY1U4ZEw5YnBOUFFvcHMxZFQ3c2dDR1l4U2NTeEdVUmEyK3J1YlhoK21Xbzg0S2tlSUN1N0ljRmJRRVBiNlBxeDZtZHBYQlY5SHZsZ29SaWt0TFM3bkpjdzlYNGlwdUlNOUNKV1hxSFN4VkZxWGtyRFJaZ09oZGdST1pzRHZ2OFNjTW5NV2dpVjl1V09YeGZBQ1I2cUVycDhCSnBWWTdLRjJVVzNVclV3Z0VRQzUxcVRRcnRpVTFVRno4cEpJUkRxajY3TXpBR1B2YTVFUHNPN3pQa0h3WHlPOThOWDFJZW9tRTRteUZnblFIQXh5c2lRTWtQQkxJWmxzV29FbXJZTHlIZnhkQzZnMWkvUHhmSmtEOU8vYk9XSWYvT2FHZXA3TnVyOGVFd0JvTkNGcEhRdzZ3Yi85czd5RGN3cTBGRGJCVndBUUFROGdVTENVVlNQbjF5NEo0QmxYK3VXcWZJdjg1aVhGYUhONGc3dWFKNElOcjg0d3RMenJBUmVlRnM5OVZlM0Z4OE8vWmZuVmQzaFhkZXFieE9GdVhueEFPWUJFTmFMb1p3SVRXbkEzY3Q2QVBOMEwvdFRiRk9FWHhGWFAzT25UMTFVSTVIeGhZMkhQbmpZaENxRnBlWTgrOEJXR0duazg5L2ZCOUFPWVdQUkNYTUxZVzFlRE1CNUFQQ0hxQmFHRUFpc0RXQ0krUERaNHR0RFNwbEVZS3hmb2R5Nzl1VUtLT2FwSTU1SjRHbGcyZ0lzSnFGNklZQUlNdlpoLzJNR1FHNWJBM3ltTFhnSTBJQVRBajNtbDBHOFZteExpZU90UzRTbmxZWHVmb0J5eWRvVVV3ZEhlVWhrZGs2ZExxYnp3Q05uZE84S0c1bk84REdaYmxZSHMyYndKd2VMZ1dRR21GZ2J5RGdCRzA4T1h4K0FCMUswSUF2LzNjdEhQUDFjRXhPNkcwTEtCWUR1ODJRK3E0YTUyeW5TV1RsVUdFRmtLcGh0K1pKaXU0TC9UOC9nOCsxQWM2SlkvZWpPYmRjdmxSU1dSV2M4dlNVbFJ0M1M5bVhkRUtKelJyRGNGd3pMODZ5blo3cVl6Vyt0QUEzS254NVFoYWEwR2NvdHJIUTcwNmYxNlQ2SjBaWWsrcjNjRTFTRXVIUkdUZ0RZSEJaR1ZXSWRoY3ozV2hsY3VKN0NkREdEVW4vY3JvekpjcHJiRHRZQ0FlRHBZNVBGQUlpWU8raVYyTnoxNXVkY3lrMFhjKzdDcWlQZUtQTEF4dkpBb1BPNVdPT3I3S011Z1R0dEVCUUJvSjdWUUNIekdTOXdxaVgwQWl5Q3dLeEJxQllJalBBOXY5THVKSzBuNGduMHVsMFhFNW03Z3Iwd3BiU3ZlWXFtbkRGMG53M3FXaG0zZ0k0T0NIUWt5aUlBNk53WG9FdU1zUFNqSDgvSVgyYXVzaXVpSWNqYXdYSnRBWE9WZ1lCQVlqS1ZSS2VkWVdqM3ZZRFFKNGNxeThyd2pPNEdBcTUwMnVXR2R5ZmpzdkhGa1BEdzJuNGxBb09waEhqUWFhbE9JSEFDa1NVQXFGL1NXVXk2QlI2aVFMdDZXYU1FUmxxVG90OHJDQmhlVGlUUVlXY00yaDUzOUJLQ3JCY2loLzA5ZEVCQXZ1V0FZVzVlTWg4eDlKblh5QnU1aFMzNTl4UVlhNGxqcCtONTF5Z1Vpb1NkYVVHdmp5QklKYkRkTGRwSEtWN1l4eXF4eE55Qkl3RHEwU01JbWlFMUdrODcwR091eitvRUdOMUUxeFB2VVRvNlZpTm0xR3BhVHlDd0MvTzdBb0NoUnduc3E5VmJOdVoxcElBMkNDeTlCSWs5cmdEZzlPbU1IQWJ3OVFZelFra0JMUkFZa2NOUkFNb0lCUFlMb0U4TEFBWUk2ajVUR0VyMjZpM0tVeUZvNFpEYUFOQk1SZW90dDlFclVBcTQxUkk0VGFZTkFBNFNoV05rZ1ZJMlFvUFpWUk81dllJdEFJYkdaWWNRV0paWml2MkRuY0lvaDh4L1hDTFNONHU2RVNTcWZ3OFVBRVBqZWFPdmoxK2tCTEN1cVFtZDM3aGI4R2Z6KzBKdXVlaW8wakdTNi9aVERHcSs2Q0lKTUxoUExrK2N4OWxZRE8xaytrUFB5QkVoTURuUUpRYk5oMWc0a3MxaW9wRXJxRGhlOXNjVDZKbkxZQmdDOTF2TjVoYnJkMXZoSWdCODUxblpsc3ZoV0xZWkt5ajZEV21BZ1M2eHJYQ3dobEhvUnRyeS9zNGEvMVFTSFdZNGw2RmNLYkN0Y05PeFQweWdweVVwNktINWFwWTJnTEhydDFBRkNJSE9XQXdkcGdvb25LVVJLdlpGYzllSHVLdGpRSGNwWS9NbGUzTm9Rdzdkc2drVGZyNFZYRHE1clJINDhGN1prOHVocmFrSm8xYk1Od2RxWkExZCtlbXBneDN6UFEzaW9iTW5OOUJ1M0FZSVBGRGNvV3UxbWMrbEJBSUFEc1FEcHNoaHBHRVkrZ05ETFpnZkNBRG9OU1F2cVBMa1RTdXhmdU5xN0l3SmhPRFRDdjRZVVl1bnNqa2MzZjgrQm83TTR2OEtZeTVjaXhtUEtWeFhhV3ltbkRXWExRR0d4aVZqQW1hQ29aeTFYUGJQU29uOU8rNFZIU1loYUlkSmlkMmxoSkVTVXp2dTFmODBuQk5oeXdZQTNjWTVvT2hJOHVxbGFMaytoZldYUFVjMUNIQWlqU09uTDJDR1hlUEFaS0hCemQwUGdFRzUwalpSNnBaclRHWFpwV3dBK0oyNDhWdzRLTkFBUURqNFVMTlZCQTZBYno4cnU4VWw5U1Z5SVRDVmJVWS9EUnNqeEx4TFNtaGRZU1lFSGgzb0VpTWNoMnJtMGlYc3NxSFN4STU3eGZaS1UvQ2haK1FqQU9iMWM2WG5NK2czVDROS3pSYzRBSWJHWlI4VFNlYUNZekgwVWE4WkllWThRelhiU0JFQWN2bFNaeXZ3QktZUG5kYjEwTGprQlExYTROVjhQNTF1OHpUUTZleW5UK0FBOExPSXhqTzFvMEFEQUxXamZTaG1qaHdBQ2dOUG9hQ2dzbldPTytWTHdySk9xM1ZFRGdDR0xyYk1qZGVLMEVFR1pxcjlEcEVEZ0ZYZ3FkcEVLNTB2bHNQVVFKZi9uSHd0MS8vLzg5YnFEakNQV1BBQUFBQUFTVVZPUks1Q1lJST1cIik7XHJcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcblx0fVxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///89\n"); /***/ }), /* 90 */ /*!**********************************************************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=script&lang=js& ***! \**********************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-data-charts.vue?vue&type=script&lang=js& */ 91);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTR2QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiI5MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///90\n"); /***/ }), /* 91 */ /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=script&lang=js& ***! \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("/* WEBPACK VAR INJECTION */(function(uniCloud, __f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _uCharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/u-charts.js */ 122));\nvar _configUcharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/config-ucharts.js */ 123));\nvar _configEcharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/config-echarts.js */ 124));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nfunction deepCloneAssign() {\n var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n for (var i in args) {\n for (var key in args[i]) {\n if (args[i].hasOwnProperty(key)) {\n origin[key] = args[i][key] && (0, _typeof2.default)(args[i][key]) === 'object' ? deepCloneAssign(Array.isArray(args[i][key]) ? [] : {}, origin[key], args[i][key]) : args[i][key];\n }\n }\n }\n return origin;\n}\nfunction formatterAssign(args, formatter) {\n for (var key in args) {\n if (args.hasOwnProperty(key) && args[key] !== null && (0, _typeof2.default)(args[key]) === 'object') {\n formatterAssign(args[key], formatter);\n } else if (key === 'format' && typeof args[key] === 'string') {\n args['formatter'] = formatter[args[key]] ? formatter[args[key]] : undefined;\n }\n }\n return args;\n}\n\n// 时间转换函数,为了匹配uniClinetDB读取出的时间与categories不同\nfunction getFormatDate(date) {\n var seperator = \"-\";\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var strDate = date.getDate();\n if (month >= 1 && month <= 9) {\n month = \"0\" + month;\n }\n if (strDate >= 0 && strDate <= 9) {\n strDate = \"0\" + strDate;\n }\n var currentdate = year + seperator + month + seperator + strDate;\n return currentdate;\n}\nvar lastMoveTime = null;\n/**\r\n * 防抖\r\n *\r\n * @param { Function } fn 要执行的方法\r\n * @param { Number } wait 防抖多少毫秒\r\n *\r\n * 在 vue 中使用(注意:不能使用箭头函数,否则this指向不对,并且不能再次封装如:\r\n * move(){ // 错误调用方式\r\n * debounce(function () {\r\n * console.log(this.title);\r\n * }, 1000)});\r\n * 应该直接使用:// 正确调用方式\r\n * move: debounce(function () {\r\n * console.log(this.title);\r\n * }, 1000)\r\n */\nfunction debounce(fn, wait) {\n var timer = false;\n return function () {\n var _arguments = arguments,\n _this = this;\n clearTimeout(timer);\n timer && clearTimeout(timer);\n timer = setTimeout(function () {\n timer = false;\n fn.apply(_this, _arguments); // 把参数传进去\n }, wait);\n };\n}\nvar _default2 = {\n name: 'qiun-data-charts',\n mixins: [uniCloud.mixinDatacom],\n props: {\n type: {\n type: String,\n default: null\n },\n canvasId: {\n type: String,\n default: 'uchartsid'\n },\n canvas2d: {\n type: Boolean,\n default: false\n },\n background: {\n type: String,\n default: 'rgba(0,0,0,0)'\n },\n animation: {\n type: Boolean,\n default: true\n },\n chartData: {\n type: Object,\n default: function _default() {\n return {\n categories: [],\n series: []\n };\n }\n },\n opts: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n eopts: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n loadingType: {\n type: Number,\n default: 2\n },\n errorShow: {\n type: Boolean,\n default: true\n },\n errorReload: {\n type: Boolean,\n default: true\n },\n errorMessage: {\n type: String,\n default: null\n },\n inScrollView: {\n type: Boolean,\n default: false\n },\n reshow: {\n type: Boolean,\n default: false\n },\n reload: {\n type: Boolean,\n default: false\n },\n disableScroll: {\n type: Boolean,\n default: false\n },\n optsWatch: {\n type: Boolean,\n default: true\n },\n onzoom: {\n type: Boolean,\n default: false\n },\n ontap: {\n type: Boolean,\n default: true\n },\n ontouch: {\n type: Boolean,\n default: false\n },\n onmouse: {\n type: Boolean,\n default: true\n },\n onmovetip: {\n type: Boolean,\n default: false\n },\n echartsH5: {\n type: Boolean,\n default: false\n },\n echartsApp: {\n type: Boolean,\n default: false\n },\n tooltipShow: {\n type: Boolean,\n default: true\n },\n tooltipFormat: {\n type: String,\n default: undefined\n },\n tooltipCustom: {\n type: Object,\n default: undefined\n },\n startDate: {\n type: String,\n default: undefined\n },\n endDate: {\n type: String,\n default: undefined\n },\n textEnum: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n groupEnum: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n pageScrollTop: {\n type: Number,\n default: 0\n },\n directory: {\n type: String,\n default: '/'\n },\n tapLegend: {\n type: Boolean,\n default: true\n },\n menus: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n cid: 'uchartsid',\n inWx: false,\n inAli: false,\n inTt: false,\n inBd: false,\n inH5: false,\n inApp: false,\n inWin: false,\n type2d: true,\n disScroll: false,\n openmouse: false,\n pixel: 1,\n cWidth: 375,\n cHeight: 250,\n showchart: false,\n echarts: false,\n echartsResize: {\n state: false\n },\n uchartsOpts: {},\n echartsOpts: {},\n drawData: {},\n lastDrawTime: null\n };\n },\n created: function created() {\n this.cid = this.canvasId;\n if (this.canvasId == 'uchartsid' || this.canvasId == '') {\n var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n var len = t.length;\n var id = '';\n for (var i = 0; i < 32; i++) {\n id += t.charAt(Math.floor(Math.random() * len));\n }\n this.cid = id;\n }\n var systemInfo = uni.getSystemInfoSync();\n if (systemInfo.platform === 'windows' || systemInfo.platform === 'mac') {\n this.inWin = true;\n }\n\n //非微信小程序端强制关闭canvas2d模式\n\n this.type2d = false;\n this.disScroll = this.disableScroll;\n },\n mounted: function mounted() {\n var _this2 = this;\n this.inApp = true;\n if (this.echartsApp === true) {\n this.echarts = true;\n this.openmouse = false;\n }\n this.$nextTick(function () {\n _this2.beforeInit();\n });\n },\n destroyed: function destroyed() {\n if (this.echarts === true) {\n delete _configEcharts.default.option[this.cid];\n delete _configEcharts.default.instance[this.cid];\n } else {\n delete _configUcharts.default.option[this.cid];\n delete _configUcharts.default.instance[this.cid];\n }\n uni.offWindowResize(function () {});\n },\n watch: {\n chartDataProps: {\n handler: function handler(val, oldval) {\n if ((0, _typeof2.default)(val) === 'object') {\n if (JSON.stringify(val) !== JSON.stringify(oldval)) {\n this._clearChart();\n if (val.series && val.series.length > 0) {\n this.beforeInit();\n } else {\n this.mixinDatacomLoading = true;\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n }\n }\n } else {\n this.mixinDatacomLoading = false;\n this._clearChart();\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:chartData数据类型错误';\n }\n },\n immediate: false,\n deep: true\n },\n localdata: {\n handler: function handler(val, oldval) {\n if (JSON.stringify(val) !== JSON.stringify(oldval)) {\n if (val.length > 0) {\n this.beforeInit();\n } else {\n this.mixinDatacomLoading = true;\n this._clearChart();\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n }\n }\n },\n immediate: false,\n deep: true\n },\n optsProps: {\n handler: function handler(val, oldval) {\n if ((0, _typeof2.default)(val) === 'object') {\n if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === false && this.optsWatch == true) {\n this.checkData(this.drawData);\n }\n } else {\n this.mixinDatacomLoading = false;\n this._clearChart();\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:opts数据类型错误';\n }\n },\n immediate: false,\n deep: true\n },\n eoptsProps: {\n handler: function handler(val, oldval) {\n if ((0, _typeof2.default)(val) === 'object') {\n if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === true) {\n this.checkData(this.drawData);\n }\n } else {\n this.mixinDatacomLoading = false;\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:eopts数据类型错误';\n }\n },\n immediate: false,\n deep: true\n },\n reshow: function reshow(val, oldval) {\n var _this3 = this;\n if (val === true && this.mixinDatacomLoading === false) {\n setTimeout(function () {\n _this3.mixinDatacomErrorMessage = null;\n _this3.echartsResize.state = !_this3.echartsResize.state;\n _this3.checkData(_this3.drawData);\n }, 200);\n }\n },\n reload: function reload(val, oldval) {\n if (val === true) {\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n this.reloading();\n }\n },\n mixinDatacomErrorMessage: function mixinDatacomErrorMessage(val, oldval) {\n if (val) {\n this.emitMsg({\n name: 'error',\n params: {\n type: \"error\",\n errorShow: this.errorShow,\n msg: val,\n id: this.cid\n }\n });\n if (this.errorShow) {\n __f__(\"log\", '[秋云图表组件]' + val, \" at uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue:611\");\n }\n }\n },\n errorMessage: function errorMessage(val, oldval) {\n if (val && this.errorShow && val !== null && val !== 'null' && val !== '') {\n this.showchart = false;\n this.mixinDatacomLoading = false;\n this.mixinDatacomErrorMessage = val;\n } else {\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n this.reloading();\n }\n }\n },\n computed: {\n optsProps: function optsProps() {\n return JSON.parse(JSON.stringify(this.opts));\n },\n eoptsProps: function eoptsProps() {\n return JSON.parse(JSON.stringify(this.eopts));\n },\n chartDataProps: function chartDataProps() {\n return JSON.parse(JSON.stringify(this.chartData));\n }\n },\n methods: {\n beforeInit: function beforeInit() {\n this.mixinDatacomErrorMessage = null;\n if ((0, _typeof2.default)(this.chartData) === 'object' && this.chartData != null && this.chartData.series !== undefined && this.chartData.series.length > 0) {\n //拷贝一下chartData,为了opts变更后统一数据来源\n this.drawData = deepCloneAssign({}, this.chartData);\n this.mixinDatacomLoading = false;\n this.showchart = true;\n this.checkData(this.chartData);\n } else if (this.localdata.length > 0) {\n this.mixinDatacomLoading = false;\n this.showchart = true;\n this.localdataInit(this.localdata);\n } else if (this.collection !== '') {\n this.mixinDatacomLoading = false;\n this.getCloudData();\n } else {\n this.mixinDatacomLoading = true;\n }\n },\n localdataInit: function localdataInit(resdata) {\n //替换enum类型为正确的描述\n if (this.groupEnum.length > 0) {\n for (var i = 0; i < resdata.length; i++) {\n for (var j = 0; j < this.groupEnum.length; j++) {\n if (resdata[i].group === this.groupEnum[j].value) {\n resdata[i].group = this.groupEnum[j].text;\n }\n }\n }\n }\n if (this.textEnum.length > 0) {\n for (var _i = 0; _i < resdata.length; _i++) {\n for (var _j = 0; _j < this.textEnum.length; _j++) {\n if (resdata[_i].text === this.textEnum[_j].value) {\n resdata[_i].text = this.textEnum[_j].text;\n }\n }\n }\n }\n var needCategories = false;\n var tmpData = {\n categories: [],\n series: []\n };\n var tmpcategories = [];\n var tmpseries = [];\n //拼接categories\n if (this.echarts === true) {\n needCategories = _configEcharts.default.categories.includes(this.type);\n } else {\n needCategories = _configUcharts.default.categories.includes(this.type);\n }\n if (needCategories === true) {\n //如果props中的chartData带有categories,则优先使用chartData的categories\n if (this.chartData && this.chartData.categories && this.chartData.categories.length > 0) {\n tmpcategories = this.chartData.categories;\n } else {\n //如果是日期类型的数据,不管是本地数据还是云数据,都按起止日期自动拼接categories\n if (this.startDate && this.endDate) {\n var idate = new Date(this.startDate);\n var edate = new Date(this.endDate);\n while (idate <= edate) {\n tmpcategories.push(getFormatDate(idate));\n idate = idate.setDate(idate.getDate() + 1);\n idate = new Date(idate);\n }\n //否则从结果中去重并拼接categories\n } else {\n var tempckey = {};\n resdata.map(function (item, index) {\n if (item.text != undefined && !tempckey[item.text]) {\n tmpcategories.push(item.text);\n tempckey[item.text] = true;\n }\n });\n }\n }\n tmpData.categories = tmpcategories;\n }\n //拼接series\n var tempskey = {};\n resdata.map(function (item, index) {\n if (item.group != undefined && !tempskey[item.group]) {\n tmpseries.push({\n name: item.group,\n data: []\n });\n tempskey[item.group] = true;\n }\n });\n //如果没有获取到分组名称(可能是带categories的数据,也可能是不带的饼图类)\n if (tmpseries.length == 0) {\n tmpseries = [{\n name: '默认分组',\n data: []\n }];\n //如果是需要categories的图表类型\n if (needCategories === true) {\n for (var _j2 = 0; _j2 < tmpcategories.length; _j2++) {\n var seriesdata = 0;\n for (var _i2 = 0; _i2 < resdata.length; _i2++) {\n if (resdata[_i2].text == tmpcategories[_j2]) {\n seriesdata = resdata[_i2].value;\n }\n }\n tmpseries[0].data.push(seriesdata);\n }\n //如果是饼图类的图表类型\n } else {\n for (var _i3 = 0; _i3 < resdata.length; _i3++) {\n tmpseries[0].data.push({\n \"name\": resdata[_i3].text,\n \"value\": resdata[_i3].value\n });\n }\n }\n //如果有分组名\n } else {\n for (var k = 0; k < tmpseries.length; k++) {\n //如果有categories\n if (tmpcategories.length > 0) {\n for (var _j3 = 0; _j3 < tmpcategories.length; _j3++) {\n var _seriesdata = 0;\n for (var _i4 = 0; _i4 < resdata.length; _i4++) {\n if (tmpseries[k].name == resdata[_i4].group && resdata[_i4].text == tmpcategories[_j3]) {\n _seriesdata = resdata[_i4].value;\n }\n }\n tmpseries[k].data.push(_seriesdata);\n }\n //如果传了group而没有传text,即没有categories(正常情况下这种数据是不符合数据要求规范的)\n } else {\n for (var _i5 = 0; _i5 < resdata.length; _i5++) {\n if (tmpseries[k].name == resdata[_i5].group) {\n tmpseries[k].data.push(resdata[_i5].value);\n }\n }\n }\n }\n }\n tmpData.series = tmpseries;\n //拷贝一下chartData,为了opts变更后统一数据来源\n this.drawData = deepCloneAssign({}, tmpData);\n this.checkData(tmpData);\n },\n reloading: function reloading() {\n if (this.errorReload === false) {\n return;\n }\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n if (this.collection !== '') {\n this.mixinDatacomLoading = false;\n this.onMixinDatacomPropsChange(true);\n } else {\n this.beforeInit();\n }\n },\n checkData: function checkData(anyData) {\n var _this4 = this;\n var cid = this.cid;\n //复位opts或eopts\n if (this.echarts === true) {\n _configEcharts.default.option[cid] = deepCloneAssign({}, this.eopts);\n _configEcharts.default.option[cid].id = cid;\n _configEcharts.default.option[cid].type = this.type;\n } else {\n if (this.type && _configUcharts.default.type.includes(this.type)) {\n _configUcharts.default.option[cid] = deepCloneAssign({}, _configUcharts.default[this.type], this.opts);\n _configUcharts.default.option[cid].canvasId = cid;\n } else {\n this.mixinDatacomLoading = false;\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:props参数中type类型不正确';\n }\n }\n //挂载categories和series\n var newData = deepCloneAssign({}, anyData);\n if (newData.series !== undefined && newData.series.length > 0) {\n this.mixinDatacomErrorMessage = null;\n if (this.echarts === true) {\n _configEcharts.default.option[cid].chartData = newData;\n this.$nextTick(function () {\n _this4.init();\n });\n } else {\n _configUcharts.default.option[cid].categories = newData.categories;\n _configUcharts.default.option[cid].series = newData.series;\n this.$nextTick(function () {\n _this4.init();\n });\n }\n }\n },\n resizeHandler: function resizeHandler() {\n var _this5 = this;\n //渲染防抖\n var currTime = Date.now();\n var lastDrawTime = this.lastDrawTime ? this.lastDrawTime : currTime - 3000;\n var duration = currTime - lastDrawTime;\n if (duration < 1000) return;\n var chartdom = uni.createSelectorQuery().in(this).select('#ChartBoxId' + this.cid).boundingClientRect(function (data) {\n _this5.showchart = true;\n if (data.width > 0 && data.height > 0) {\n if (data.width !== _this5.cWidth || data.height !== _this5.cHeight) {\n _this5.checkData(_this5.drawData);\n }\n }\n }).exec();\n },\n getCloudData: function getCloudData() {\n var _this6 = this;\n if (this.mixinDatacomLoading == true) {\n return;\n }\n this.mixinDatacomLoading = true;\n this.mixinDatacomGet().then(function (res) {\n _this6.mixinDatacomResData = res.result.data;\n _this6.localdataInit(_this6.mixinDatacomResData);\n }).catch(function (err) {\n _this6.mixinDatacomLoading = false;\n _this6.showchart = false;\n _this6.mixinDatacomErrorMessage = '请求错误:' + err;\n });\n },\n onMixinDatacomPropsChange: function onMixinDatacomPropsChange(needReset, changed) {\n if (needReset == true && this.collection !== '') {\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n this._clearChart();\n this.getCloudData();\n }\n },\n _clearChart: function _clearChart() {\n var cid = this.cid;\n if (this.echarts !== true && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].context) {\n var ctx = _configUcharts.default.option[cid].context;\n if ((0, _typeof2.default)(ctx) === \"object\" && !!!_configUcharts.default.option[cid].update) {\n ctx.clearRect(0, 0, this.cWidth * this.pixel, this.cHeight * this.pixel);\n ctx.draw();\n }\n }\n },\n init: function init() {\n var _this7 = this;\n var cid = this.cid;\n var chartdom = uni.createSelectorQuery().in(this).select('#ChartBoxId' + cid).boundingClientRect(function (data) {\n if (data.width > 0 && data.height > 0) {\n _this7.mixinDatacomLoading = false;\n _this7.showchart = true;\n _this7.lastDrawTime = Date.now();\n _this7.cWidth = data.width;\n _this7.cHeight = data.height;\n if (_this7.echarts !== true) {\n _configUcharts.default.option[cid].background = _this7.background == 'rgba(0,0,0,0)' ? '#FFFFFF' : _this7.background;\n _configUcharts.default.option[cid].canvas2d = _this7.type2d;\n _configUcharts.default.option[cid].pixelRatio = _this7.pixel;\n _configUcharts.default.option[cid].animation = _this7.animation;\n _configUcharts.default.option[cid].width = data.width * _this7.pixel;\n _configUcharts.default.option[cid].height = data.height * _this7.pixel;\n _configUcharts.default.option[cid].onzoom = _this7.onzoom;\n _configUcharts.default.option[cid].ontap = _this7.ontap;\n _configUcharts.default.option[cid].ontouch = _this7.ontouch;\n _configUcharts.default.option[cid].onmouse = _this7.openmouse;\n _configUcharts.default.option[cid].onmovetip = _this7.onmovetip;\n _configUcharts.default.option[cid].tooltipShow = _this7.tooltipShow;\n _configUcharts.default.option[cid].tooltipFormat = _this7.tooltipFormat;\n _configUcharts.default.option[cid].tooltipCustom = _this7.tooltipCustom;\n _configUcharts.default.option[cid].inScrollView = _this7.inScrollView;\n _configUcharts.default.option[cid].lastDrawTime = _this7.lastDrawTime;\n _configUcharts.default.option[cid].tapLegend = _this7.tapLegend;\n }\n //如果是H5或者App端,采用renderjs渲染图表\n if (_this7.inH5 || _this7.inApp) {\n if (_this7.echarts == true) {\n _configEcharts.default.option[cid].ontap = _this7.ontap;\n _configEcharts.default.option[cid].onmouse = _this7.openmouse;\n _configEcharts.default.option[cid].tooltipShow = _this7.tooltipShow;\n _configEcharts.default.option[cid].tooltipFormat = _this7.tooltipFormat;\n _configEcharts.default.option[cid].tooltipCustom = _this7.tooltipCustom;\n _configEcharts.default.option[cid].lastDrawTime = _this7.lastDrawTime;\n _this7.echartsOpts = deepCloneAssign({}, _configEcharts.default.option[cid]);\n } else {\n _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n _this7.uchartsOpts = deepCloneAssign({}, _configUcharts.default.option[cid]);\n }\n //如果是小程序端,采用uCharts渲染\n } else {\n _configUcharts.default.option[cid] = formatterAssign(_configUcharts.default.option[cid], _configUcharts.default.formatter);\n _this7.mixinDatacomErrorMessage = null;\n _this7.mixinDatacomLoading = false;\n _this7.showchart = true;\n _this7.$nextTick(function () {\n if (_this7.type2d === true) {\n var query = uni.createSelectorQuery().in(_this7);\n query.select('#' + cid).fields({\n node: true,\n size: true\n }).exec(function (res) {\n if (res[0]) {\n var canvas = res[0].node;\n var ctx = canvas.getContext('2d');\n _configUcharts.default.option[cid].context = ctx;\n _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n if (_configUcharts.default.instance[cid] && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].update === true) {\n _this7._updataUChart(cid);\n } else {\n canvas.width = data.width * _this7.pixel;\n canvas.height = data.height * _this7.pixel;\n canvas._width = data.width * _this7.pixel;\n canvas._height = data.height * _this7.pixel;\n setTimeout(function () {\n _configUcharts.default.option[cid].context.restore();\n _configUcharts.default.option[cid].context.save();\n _this7._newChart(cid);\n }, 100);\n }\n } else {\n _this7.showchart = false;\n _this7.mixinDatacomErrorMessage = '参数错误:开启2d模式后,未获取到dom节点,canvas-id:' + cid;\n }\n });\n } else {\n if (_this7.inAli) {\n _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n }\n _configUcharts.default.option[cid].context = uni.createCanvasContext(cid, _this7);\n if (_configUcharts.default.instance[cid] && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].update === true) {\n _this7._updataUChart(cid);\n } else {\n setTimeout(function () {\n _configUcharts.default.option[cid].context.restore();\n _configUcharts.default.option[cid].context.save();\n _this7._newChart(cid);\n }, 100);\n }\n }\n });\n }\n } else {\n _this7.mixinDatacomLoading = false;\n _this7.showchart = false;\n if (_this7.reshow == true) {\n _this7.mixinDatacomErrorMessage = '布局错误:未获取到父元素宽高尺寸!canvas-id:' + cid;\n }\n }\n }).exec();\n },\n saveImage: function saveImage() {\n uni.canvasToTempFilePath({\n canvasId: this.cid,\n success: function success(res) {\n uni.saveImageToPhotosAlbum({\n filePath: res.tempFilePath,\n success: function success() {\n uni.showToast({\n title: '保存成功',\n duration: 2000\n });\n }\n });\n }\n }, this);\n },\n getImage: function getImage() {\n var _this8 = this;\n if (this.type2d == false) {\n uni.canvasToTempFilePath({\n canvasId: this.cid,\n success: function success(res) {\n _this8.emitMsg({\n name: 'getImage',\n params: {\n type: \"getImage\",\n base64: res.tempFilePath\n }\n });\n }\n }, this);\n } else {\n var query = uni.createSelectorQuery().in(this);\n query.select('#' + this.cid).fields({\n node: true,\n size: true\n }).exec(function (res) {\n if (res[0]) {\n var canvas = res[0].node;\n _this8.emitMsg({\n name: 'getImage',\n params: {\n type: \"getImage\",\n base64: canvas.toDataURL('image/png')\n }\n });\n }\n });\n }\n },\n _error: function _error(e) {\n this.mixinDatacomErrorMessage = e.detail.errMsg;\n },\n emitMsg: function emitMsg(msg) {\n this.$emit(msg.name, msg.params);\n },\n getRenderType: function getRenderType() {\n //防止如果开启echarts且父元素为v-if的情况renderjs监听不到prop变化的问题\n if (this.echarts === true && this.mixinDatacomLoading === false) {\n this.beforeInit();\n }\n },\n toJSON: function toJSON() {\n return this;\n }\n }\n};\nexports.default = _default2;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js */ 92)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 121)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZGF0YS1jaGFydHMvcWl1bi1kYXRhLWNoYXJ0cy52dWUiXSwibmFtZXMiOlsiYXJncyIsIm9yaWdpbiIsImZvcm1hdHRlckFzc2lnbiIsIm1vbnRoIiwic3RyRGF0ZSIsImNsZWFyVGltZW91dCIsInRpbWVyIiwiZm4iLCJuYW1lIiwibWl4aW5zIiwicHJvcHMiLCJ0eXBlIiwiZGVmYXVsdCIsImNhbnZhc0lkIiwiY2FudmFzMmQiLCJiYWNrZ3JvdW5kIiwiYW5pbWF0aW9uIiwiY2hhcnREYXRhIiwiY2F0ZWdvcmllcyIsInNlcmllcyIsIm9wdHMiLCJlb3B0cyIsImxvYWRpbmdUeXBlIiwiZXJyb3JTaG93IiwiZXJyb3JSZWxvYWQiLCJlcnJvck1lc3NhZ2UiLCJpblNjcm9sbFZpZXciLCJyZXNob3ciLCJyZWxvYWQiLCJkaXNhYmxlU2Nyb2xsIiwib3B0c1dhdGNoIiwib256b29tIiwib250YXAiLCJvbnRvdWNoIiwib25tb3VzZSIsIm9ubW92ZXRpcCIsImVjaGFydHNINSIsImVjaGFydHNBcHAiLCJ0b29sdGlwU2hvdyIsInRvb2x0aXBGb3JtYXQiLCJ0b29sdGlwQ3VzdG9tIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInRleHRFbnVtIiwiZ3JvdXBFbnVtIiwicGFnZVNjcm9sbFRvcCIsImRpcmVjdG9yeSIsInRhcExlZ2VuZCIsIm1lbnVzIiwiZGF0YSIsImNpZCIsImluV3giLCJpbkFsaSIsImluVHQiLCJpbkJkIiwiaW5INSIsImluQXBwIiwiaW5XaW4iLCJ0eXBlMmQiLCJkaXNTY3JvbGwiLCJvcGVubW91c2UiLCJwaXhlbCIsImNXaWR0aCIsImNIZWlnaHQiLCJzaG93Y2hhcnQiLCJlY2hhcnRzIiwiZWNoYXJ0c1Jlc2l6ZSIsInN0YXRlIiwidWNoYXJ0c09wdHMiLCJlY2hhcnRzT3B0cyIsImRyYXdEYXRhIiwibGFzdERyYXdUaW1lIiwiY3JlYXRlZCIsImlkIiwibW91bnRlZCIsImRlc3Ryb3llZCIsInVuaSIsIndhdGNoIiwiY2hhcnREYXRhUHJvcHMiLCJoYW5kbGVyIiwiaW1tZWRpYXRlIiwiZGVlcCIsImxvY2FsZGF0YSIsIm9wdHNQcm9wcyIsImVvcHRzUHJvcHMiLCJzZXRUaW1lb3V0IiwibWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlIiwicGFyYW1zIiwibXNnIiwiY29tcHV0ZWQiLCJtZXRob2RzIiwiYmVmb3JlSW5pdCIsImxvY2FsZGF0YUluaXQiLCJyZXNkYXRhIiwibmVlZENhdGVnb3JpZXMiLCJ0bXBjYXRlZ29yaWVzIiwiaWRhdGUiLCJ0ZW1wY2tleSIsInRtcERhdGEiLCJ0bXBzZXJpZXMiLCJ0ZW1wc2tleSIsInNlcmllc2RhdGEiLCJyZWxvYWRpbmciLCJjaGVja0RhdGEiLCJjZmUiLCJjZnUiLCJyZXNpemVIYW5kbGVyIiwiY3JlYXRlU2VsZWN0b3JRdWVyeSIsImluIiwic2VsZWN0IiwiYm91bmRpbmdDbGllbnRSZWN0IiwiZXhlYyIsImdldENsb3VkRGF0YSIsInRoZW4iLCJjYXRjaCIsIm9uTWl4aW5EYXRhY29tUHJvcHNDaGFuZ2UiLCJfY2xlYXJDaGFydCIsImN0eCIsImluaXQiLCJxdWVyeSIsImZpZWxkcyIsIm5vZGUiLCJzaXplIiwiY2FudmFzIiwic2F2ZUltYWdlIiwic3VjY2VzcyIsImZpbGVQYXRoIiwidGl0bGUiLCJkdXJhdGlvbiIsImdldEltYWdlIiwiYmFzZTY0IiwiX2Vycm9yIiwiZW1pdE1zZyIsImdldFJlbmRlclR5cGUiLCJ0b0pTT04iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBOEpBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7RUFBQTtFQUFBO0lBQUFBO0VBQUE7RUFDQTtJQUNBO01BQ0E7UUFDQUM7TUFDQTtJQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtJQUNBO01BQ0FDO0lBQ0E7TUFDQUY7SUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNBRztFQUNBO0VBQ0E7SUFDQUM7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7SUFBQTtNQUFBO0lBQ0FDO0lBQ0FDO0lBQ0FBO01BQ0FBO01BQ0FDO0lBQ0E7RUFDQTtBQUNBO0FBQUEsZ0JBRUE7RUFDQUM7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUE7TUFDQUM7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0lBQ0FLO01BQ0FOO01BQ0FDO1FBQ0E7VUFDQU07VUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQVQ7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQVM7TUFDQVY7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQVU7TUFDQVg7TUFDQUM7SUFDQTtJQUNBVztNQUNBWjtNQUNBQztJQUNBO0lBQ0FZO01BQ0FiO01BQ0FDO0lBQ0E7SUFDQWE7TUFDQWQ7TUFDQUM7SUFDQTtJQUNBYztNQUNBZjtNQUNBQztJQUNBO0lBQ0FlO01BQ0FoQjtNQUNBQztJQUNBO0lBQ0FnQjtNQUNBakI7TUFDQUM7SUFDQTtJQUNBaUI7TUFDQWxCO01BQ0FDO0lBQ0E7SUFDQWtCO01BQ0FuQjtNQUNBQztJQUNBO0lBQ0FtQjtNQUNBcEI7TUFDQUM7SUFDQTtJQUNBb0I7TUFDQXJCO01BQ0FDO0lBQ0E7SUFDQXFCO01BQ0F0QjtNQUNBQztJQUNBO0lBQ0FzQjtNQUNBdkI7TUFDQUM7SUFDQTtJQUNBdUI7TUFDQXhCO01BQ0FDO0lBQ0E7SUFDQXdCO01BQ0F6QjtNQUNBQztJQUNBO0lBQ0F5QjtNQUNBMUI7TUFDQUM7SUFDQTtJQUNBMEI7TUFDQTNCO01BQ0FDO0lBQ0E7SUFDQTJCO01BQ0E1QjtNQUNBQztJQUNBO0lBQ0E0QjtNQUNBN0I7TUFDQUM7SUFDQTtJQUNBNkI7TUFDQTlCO01BQ0FDO0lBQ0E7SUFDQThCO01BQ0EvQjtNQUNBQztJQUNBO0lBQ0ErQjtNQUNBaEM7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQWdDO01BQ0FqQztNQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBaUM7TUFDQWxDO01BQ0FDO0lBQ0E7SUFDQWtDO01BQ0FuQztNQUNBQztJQUNBO0lBQ0FtQztNQUNBcEM7TUFDQUM7SUFDQTtJQUNBb0M7TUFDQXJDO01BQ0FDO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQXFDO0lBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQUM7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBO01BQ0E7SUFDQTs7SUFVQTs7SUFFQTtJQWVBO0VBQ0E7RUFDQUM7SUFBQTtJQUVBO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFnQkE7TUFDQTtJQUNBO0VBcUJBO0VBQ0FDO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFFQUM7RUFFQTtFQUNBQztJQUNBQztNQUNBQztRQUNBO1VBQ0E7WUFDQTtZQUNBO2NBQ0E7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FDO01BQ0FIO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FFO01BQ0FKO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FHO01BQ0FMO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7TUFDQUM7TUFDQUM7SUFDQTtJQUNBdEQ7TUFBQTtNQUNBO1FBQ0EwRDtVQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBekQ7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQTBEO01BQ0E7UUFDQTtVQUFBOUU7VUFBQStFO1lBQUE1RTtZQUFBWTtZQUFBaUU7WUFBQWY7VUFBQTtRQUFBO1FBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBaEQ7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FnRTtJQUNBTjtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FOO01BQ0E7SUFDQTtFQUNBO0VBQ0FZO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO1VBQ0E7WUFDQTtjQUNBQztZQUNBO1VBQ0E7UUFDQTtNQUNBO01BQ0E7UUFDQTtVQUNBO1lBQ0E7Y0FDQUE7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQTNFO1FBQUFDO01BQUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBMkU7TUFDQTtRQUNBQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0FDO1FBQ0E7VUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0FBO2NBQ0FDO2NBQ0FB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QUFBK0U7Z0JBQUE1RTtnQkFBQXVIO2NBQUE7WUFBQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO1FBQ0FYLE1BQ0FWLHVCQUNBVztVQUFBQztVQUFBQztRQUFBLEdBQ0FYO1VBQ0E7WUFDQTtZQUNBO2NBQUF2RztjQUFBK0U7Z0JBQUE1RTtnQkFBQXVIO2NBQUE7WUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBb0tBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsNEIiLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8IS0tIFxyXG4gKiBxaXVuLWRhdGEtY2hhcnRzIOeni+S6kemrmOaAp+iDvei3qOWFqOerr+WbvuihqOe7hOS7tlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgUUlVTsKuIOeni+S6kSBodHRwczovL3d3dy51Y2hhcnRzLmNuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkICggaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIClcclxuICog5aSN5Yi25L2/55So6K+35L+d55WZ5pys5q615rOo6YeK77yM5oSf6LCi5pSv5oyB5byA5rqQ77yBXHJcbiAqIOS4uuaWueS+v+abtOWkmuW8gOWPkeiAheS9v+eUqO+8jOWmguacieabtOWlveeahOW7uuiuruivt+aPkOS6pOeggeS6kSBQdWxsIFJlcXVlc3RzIO+8gVxyXG4gKlxyXG4gKiB1Q2hhcnRzwq7lrpjmlrnnvZHnq5lcclxuICogaHR0cHM6Ly93d3cudUNoYXJ0cy5jblxyXG4gKiBcclxuICog5byA5rqQ5Zyw5Z2AOlxyXG4gKiBodHRwczovL2dpdGVlLmNvbS91Q2hhcnRzL3VDaGFydHNcclxuICogXHJcbiAqIHVuaS1hcHDmj5Lku7bluILlnLrlnLDlnYDvvJpcclxuICogaHR0cDovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNzFcclxuICogXHJcbiAtLT5cclxuPHRlbXBsYXRlPlxyXG4gIDx2aWV3IGNsYXNzPVwiY2hhcnRzdmlld1wiIDppZD1cIidDaGFydEJveElkJytjaWRcIj5cclxuICAgIDx2aWV3IHYtaWY9XCJtaXhpbkRhdGFjb21Mb2FkaW5nXCI+XHJcbiAgICAgIDwhLS0g6Ieq5a6a5LmJ5Yqg6L2954q25oCB77yM6K+35pS56L+Z6YeMIC0tPlxyXG4gICAgICA8cWl1bi1sb2FkaW5nIDpsb2FkaW5nVHlwZT1cImxvYWRpbmdUeXBlXCIgLz5cclxuICAgIDwvdmlldz5cclxuICAgIDx2aWV3IHYtaWY9XCJtaXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgJiYgZXJyb3JTaG93XCIgQHRhcD1cInJlbG9hZGluZ1wiPlxyXG4gICAgICA8IS0tIOiHquWumuS5iemUmeivr+aPkOekuu+8jOivt+aUuei/memHjCAtLT5cclxuICAgICAgPHFpdW4tZXJyb3IgOmVycm9yTWVzc2FnZT1cImVycm9yTWVzc2FnZVwiIC8+XHJcbiAgICA8L3ZpZXc+XHJcbiAgICA8IS0tIEFQUOWSjEg16YeH55SocmVuZGVyanPmuLLmn5Plm77ooaggLS0+XHJcbiAgICA8IS0tICNpZmRlZiBBUFAtVlVFIHx8IEg1IC0tPlxyXG4gICAgPGJsb2NrIHYtaWY9XCJlY2hhcnRzXCI+XHJcbiAgICAgIDx2aWV3XHJcbiAgICAgICAgOnN0eWxlPVwieyBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO1wiXHJcbiAgICAgICAgOmRhdGEtZGlyZWN0b3J5PVwiZGlyZWN0b3J5XCJcclxuICAgICAgICA6aWQ9XCInRUMnK2NpZFwiIFxyXG4gICAgICAgIDpwcm9wPVwiZWNoYXJ0c09wdHNcIiBcclxuICAgICAgICA6Y2hhbmdlOnByb3A9XCJyZGNoYXJ0cy5lY2luaXRcIiBcclxuICAgICAgICA6cmVzaXplPVwiZWNoYXJ0c1Jlc2l6ZVwiXHJcbiAgICAgICAgOmNoYW5nZTpyZXNpemU9XCJyZGNoYXJ0cy5lY3Jlc2l6ZVwiXHJcbiAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgLz5cclxuICAgIDwvYmxvY2s+XHJcbiAgICA8YmxvY2sgdi1lbHNlPlxyXG4gICAgICA8dmlld1xyXG4gICAgICAgIHYtb246dGFwPVwicmRjaGFydHMudGFwXCJcclxuICAgICAgICB2LW9uOm1vdXNlbW92ZT1cInJkY2hhcnRzLm1vdXNlTW92ZVwiXHJcbiAgICAgICAgdi1vbjptb3VzZWRvd249XCJyZGNoYXJ0cy5tb3VzZURvd25cIlxyXG4gICAgICAgIHYtb246bW91c2V1cD1cInJkY2hhcnRzLm1vdXNlVXBcIlxyXG4gICAgICAgIHYtb246dG91Y2hzdGFydD1cInJkY2hhcnRzLnRvdWNoU3RhcnRcIlxyXG4gICAgICAgIHYtb246dG91Y2htb3ZlPVwicmRjaGFydHMudG91Y2hNb3ZlXCJcclxuICAgICAgICB2LW9uOnRvdWNoZW5kPVwicmRjaGFydHMudG91Y2hFbmRcIlxyXG4gICAgICAgIDppZD1cIidVQycrY2lkXCJcclxuICAgICAgICA6cHJvcD1cInVjaGFydHNPcHRzXCJcclxuICAgICAgICA6Y2hhbmdlOnByb3A9XCJyZGNoYXJ0cy51Y2luaXRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNhbnZhc1xyXG4gICAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzYWJsZVNjcm9sbFwiXHJcbiAgICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3ZpZXc+XHJcbiAgICA8L2Jsb2NrPlxyXG4gICAgPCEtLSAjZW5kaWYgLS0+XHJcbiAgICA8IS0tIOaUr+S7mOWuneWwj+eoi+W6jyAtLT5cclxuICAgIDwhLS0gI2lmZGVmIE1QLUFMSVBBWSAtLT5cclxuICAgIDxibG9jayB2LWlmPVwib250b3VjaFwiPlxyXG4gICAgICA8Y2FudmFzXHJcbiAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICA6Y2FudmFzSWQ9XCJjaWRcIlxyXG4gICAgICAgIDp3aWR0aD1cImNXaWR0aCAqIHBpeGVsXCJcclxuICAgICAgICA6aGVpZ2h0PVwiY0hlaWdodCAqIHBpeGVsXCJcclxuICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgQHRhcD1cIl90YXBcIlxyXG4gICAgICAgIEB0b3VjaHN0YXJ0PVwiX3RvdWNoU3RhcnRcIlxyXG4gICAgICAgIEB0b3VjaG1vdmU9XCJfdG91Y2hNb3ZlXCJcclxuICAgICAgICBAdG91Y2hlbmQ9XCJfdG91Y2hFbmRcIlxyXG4gICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgLz5cclxuICAgIDwvYmxvY2s+XHJcbiAgICA8YmxvY2sgdi1pZj1cIiFvbnRvdWNoXCI+XHJcbiAgICAgIDxjYW52YXNcclxuICAgICAgICA6aWQ9XCJjaWRcIlxyXG4gICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgOndpZHRoPVwiY1dpZHRoICogcGl4ZWxcIlxyXG4gICAgICAgIDpoZWlnaHQ9XCJjSGVpZ2h0ICogcGl4ZWxcIlxyXG4gICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGNXaWR0aCArICdweCcsIGhlaWdodDogY0hlaWdodCArICdweCcsIGJhY2tncm91bmQ6IGJhY2tncm91bmQgfVwiXHJcbiAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICBAdGFwPVwiX3RhcFwiXHJcbiAgICAgICAgQGVycm9yPVwiX2Vycm9yXCJcclxuICAgICAgICB2LXNob3c9XCJzaG93Y2hhcnRcIlxyXG4gICAgICAvPlxyXG4gICAgPC9ibG9jaz5cclxuICAgIDwhLS0gI2VuZGlmIC0tPlxyXG4gICAgPCEtLSDlhbbku5blsI/nqIvluo/pgJrov4d2dWXmuLLmn5Plm77ooaggLS0+XHJcbiAgICA8IS0tICNpZmRlZiBNUC1XRUlYSU4gfHwgTVAtQkFJRFUgfHwgTVAtUVEgfHwgTVAtVE9VVElBTyB8fCBNUC1LVUFJU0hPVSB8fCBNUC1MQVJLIHx8IE1QLUpEIHx8IE1QLTM2MCAtLT5cclxuICAgIDxibG9jayB2LWlmPVwidHlwZTJkXCI+XHJcbiAgICAgIDx2aWV3IHYtaWY9XCJvbnRvdWNoXCIgQHRhcD1cIl90YXBcIj5cclxuICAgICAgICA8Y2FudmFzXHJcbiAgICAgICAgICA6aWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOmNhbnZhc0lkPVwiY2lkXCJcclxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGNXaWR0aCArICdweCcsIGhlaWdodDogY0hlaWdodCArICdweCcsIGJhY2tncm91bmQ6IGJhY2tncm91bmQgfVwiXHJcbiAgICAgICAgICB0eXBlPVwiMmRcIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICAgIEB0b3VjaHN0YXJ0PVwiX3RvdWNoU3RhcnRcIlxyXG4gICAgICAgICAgQHRvdWNobW92ZT1cIl90b3VjaE1vdmVcIlxyXG4gICAgICAgICAgQHRvdWNoZW5kPVwiX3RvdWNoRW5kXCJcclxuICAgICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgICB2LXNob3c9XCJzaG93Y2hhcnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvdmlldz5cclxuICAgICAgPHZpZXcgdi1pZj1cIiFvbnRvdWNoXCIgQHRhcD1cIl90YXBcIj5cclxuICAgICAgICA8Y2FudmFzXHJcbiAgICAgICAgICA6aWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOmNhbnZhc0lkPVwiY2lkXCJcclxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGNXaWR0aCArICdweCcsIGhlaWdodDogY0hlaWdodCArICdweCcsIGJhY2tncm91bmQ6IGJhY2tncm91bmQgfVwiXHJcbiAgICAgICAgICB0eXBlPVwiMmRcIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgICB2LXNob3c9XCJzaG93Y2hhcnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvdmlldz5cclxuICAgIDwvYmxvY2s+XHJcbiAgICA8YmxvY2sgdi1pZj1cIiF0eXBlMmRcIj5cclxuICAgICAgPHZpZXcgdi1pZj1cIm9udG91Y2hcIiBAdGFwPVwiX3RhcFwiPlxyXG4gICAgICAgIDxjYW52YXNcclxuICAgICAgICAgIDppZD1cImNpZFwiXHJcbiAgICAgICAgICA6Y2FudmFzSWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogY1dpZHRoICsgJ3B4JywgaGVpZ2h0OiBjSGVpZ2h0ICsgJ3B4JywgYmFja2dyb3VuZDogYmFja2dyb3VuZCB9XCJcclxuICAgICAgICAgIEB0b3VjaHN0YXJ0PVwiX3RvdWNoU3RhcnRcIlxyXG4gICAgICAgICAgQHRvdWNobW92ZT1cIl90b3VjaE1vdmVcIlxyXG4gICAgICAgICAgQHRvdWNoZW5kPVwiX3RvdWNoRW5kXCJcclxuICAgICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgICAgdi1pZj1cInNob3djaGFydFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC92aWV3PlxyXG4gICAgICA8dmlldyB2LWlmPVwiIW9udG91Y2hcIiA+XHJcbiAgICAgICAgPGNhbnZhc1xyXG4gICAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICAgIEB0YXA9XCJfdGFwXCJcclxuICAgICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgICB2LWlmPVwic2hvd2NoYXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3ZpZXc+XHJcbiAgICA8L2Jsb2NrPlxyXG4gICAgPCEtLSAjZW5kaWYgLS0+XHJcbiAgPC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuaW1wb3J0IHVDaGFydHMgZnJvbSAnLi4vLi4vanNfc2RrL3UtY2hhcnRzL3UtY2hhcnRzLmpzJztcclxuaW1wb3J0IGNmdSBmcm9tICcuLi8uLi9qc19zZGsvdS1jaGFydHMvY29uZmlnLXVjaGFydHMuanMnO1xyXG4vLyAjaWZkZWYgQVBQLVZVRSB8fCBINVxyXG5pbXBvcnQgY2ZlIGZyb20gJy4uLy4uL2pzX3Nkay91LWNoYXJ0cy9jb25maWctZWNoYXJ0cy5qcyc7XHJcbi8vICNlbmRpZlxyXG5cclxuZnVuY3Rpb24gZGVlcENsb25lQXNzaWduKG9yaWdpbiA9IHt9LCAuLi5hcmdzKSB7XHJcbiAgZm9yIChsZXQgaSBpbiBhcmdzKSB7XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gYXJnc1tpXSkge1xyXG4gICAgICBpZiAoYXJnc1tpXS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgb3JpZ2luW2tleV0gPSBhcmdzW2ldW2tleV0gJiYgdHlwZW9mIGFyZ3NbaV1ba2V5XSA9PT0gJ29iamVjdCcgPyBkZWVwQ2xvbmVBc3NpZ24oQXJyYXkuaXNBcnJheShhcmdzW2ldW2tleV0pID8gW10gOiB7fSwgb3JpZ2luW2tleV0sIGFyZ3NbaV1ba2V5XSkgOiBhcmdzW2ldW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG9yaWdpbjtcclxufVxyXG5cclxuZnVuY3Rpb24gZm9ybWF0dGVyQXNzaWduKGFyZ3MsZm9ybWF0dGVyKSB7XHJcbiAgZm9yIChsZXQga2V5IGluIGFyZ3MpIHtcclxuICAgIGlmKGFyZ3MuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBhcmdzW2tleV0gIT09IG51bGwgJiYgdHlwZW9mIGFyZ3Nba2V5XSA9PT0gJ29iamVjdCcpe1xyXG4gICAgICBmb3JtYXR0ZXJBc3NpZ24oYXJnc1trZXldLGZvcm1hdHRlcilcclxuICAgIH1lbHNlIGlmKGtleSA9PT0gJ2Zvcm1hdCcgJiYgdHlwZW9mIGFyZ3Nba2V5XSA9PT0gJ3N0cmluZycpe1xyXG4gICAgICBhcmdzWydmb3JtYXR0ZXInXSA9IGZvcm1hdHRlclthcmdzW2tleV1dID8gZm9ybWF0dGVyW2FyZ3Nba2V5XV0gOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBhcmdzO1xyXG59XHJcblxyXG4vLyDml7bpl7TovazmjaLlh73mlbDvvIzkuLrkuobljLnphY11bmlDbGluZXREQuivu+WPluWHuueahOaXtumXtOS4jmNhdGVnb3JpZXPkuI3lkIxcclxuZnVuY3Rpb24gZ2V0Rm9ybWF0RGF0ZShkYXRlKSB7XHJcblx0dmFyIHNlcGVyYXRvciA9IFwiLVwiO1xyXG5cdHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG5cdHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcblx0dmFyIHN0ckRhdGUgPSBkYXRlLmdldERhdGUoKTtcclxuXHRpZiAobW9udGggPj0gMSAmJiBtb250aCA8PSA5KSB7XHJcblx0XHRcdG1vbnRoID0gXCIwXCIgKyBtb250aDtcclxuXHR9XHJcblx0aWYgKHN0ckRhdGUgPj0gMCAmJiBzdHJEYXRlIDw9IDkpIHtcclxuXHRcdFx0c3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuXHR9XHJcblx0dmFyIGN1cnJlbnRkYXRlID0geWVhciArIHNlcGVyYXRvciArIG1vbnRoICsgc2VwZXJhdG9yICsgc3RyRGF0ZTtcclxuXHRyZXR1cm4gY3VycmVudGRhdGU7XHJcbn1cclxuXHJcbnZhciBsYXN0TW92ZVRpbWUgPSBudWxsO1xyXG4vKipcclxuICog6Ziy5oqWXHJcbiAqXHJcbiAqIEBwYXJhbSB7IEZ1bmN0aW9uIH0gZm4g6KaB5omn6KGM55qE5pa55rOVXHJcbiAqIEBwYXJhbSB7IE51bWJlciB9IHdhaXQgIOmYsuaKluWkmuWwkeavq+enklxyXG4gKlxyXG4gKiDlnKggdnVlIOS4reS9v+eUqO+8iOazqOaEj++8muS4jeiDveS9v+eUqOeureWktOWHveaVsO+8jOWQpuWImXRoaXPmjIflkJHkuI3lr7nvvIzlubbkuJTkuI3og73lho3mrKHlsIHoo4XlpoLvvJpcclxuICogbW92ZSgpeyAgLy8g6ZSZ6K+v6LCD55So5pa55byPXHJcbiAqICAgZGVib3VuY2UoZnVuY3Rpb24gKCkge1xyXG4gKiAgIGNvbnNvbGUubG9nKHRoaXMudGl0bGUpO1xyXG4gKiB9LCAxMDAwKX3vvIk7XHJcbiAqIOW6lOivpeebtOaOpeS9v+eUqO+8mi8vIOato+ehruiwg+eUqOaWueW8j1xyXG4gKiBtb3ZlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XHJcbiAqICAgY29uc29sZS5sb2codGhpcy50aXRsZSk7XHJcbiAqIH0sIDEwMDApXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWJvdW5jZShmbiwgd2FpdCkge1xyXG4gIGxldCB0aW1lciA9IGZhbHNlO1xyXG4gIHJldHVybiBmdW5jdGlvbigpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICB0aW1lciAmJiBjbGVhclRpbWVvdXQodGltZXIpO1xyXG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGltZXIgPSBmYWxzZTtcclxuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8g5oqK5Y+C5pWw5Lyg6L+b5Y67XHJcbiAgICB9LCB3YWl0KTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbmFtZTogJ3FpdW4tZGF0YS1jaGFydHMnLFxyXG4gIG1peGluczogW3VuaUNsb3VkLm1peGluRGF0YWNvbV0sXHJcbiAgcHJvcHM6IHtcclxuICAgIHR5cGU6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBudWxsXHJcbiAgICB9LFxyXG4gICAgY2FudmFzSWQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiAndWNoYXJ0c2lkJ1xyXG4gICAgfSxcclxuICAgIGNhbnZhczJkOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgYmFja2dyb3VuZDoge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6ICdyZ2JhKDAsMCwwLDApJ1xyXG4gICAgfSxcclxuICAgIGFuaW1hdGlvbjoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgY2hhcnREYXRhOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgY2F0ZWdvcmllczogW10sXHJcbiAgICAgICAgICBzZXJpZXM6IFtdXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG9wdHM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGVvcHRzOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBsb2FkaW5nVHlwZToge1xyXG4gICAgICB0eXBlOiBOdW1iZXIsXHJcbiAgICAgIGRlZmF1bHQ6IDJcclxuICAgIH0sXHJcbiAgICBlcnJvclNob3c6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGVycm9yUmVsb2FkOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlcnJvck1lc3NhZ2U6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBudWxsXHJcbiAgICB9LFxyXG4gICAgaW5TY3JvbGxWaWV3OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgcmVzaG93OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgcmVsb2FkOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgZGlzYWJsZVNjcm9sbDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIG9wdHNXYXRjaDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgb256b29tOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgb250YXA6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIG9udG91Y2g6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBvbm1vdXNlOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBvbm1vdmV0aXA6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBlY2hhcnRzSDU6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBlY2hhcnRzQXBwOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgdG9vbHRpcFNob3c6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRvb2x0aXBGb3JtYXQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICB0b29sdGlwQ3VzdG9tOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgc3RhcnREYXRlOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgZW5kRGF0ZToge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIHRleHRFbnVtOiB7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICBkZWZhdWx0ICgpIHtcclxuICAgICAgICByZXR1cm4gW11cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGdyb3VwRW51bToge1xyXG4gICAgICB0eXBlOiBBcnJheSxcclxuICAgICAgZGVmYXVsdCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBwYWdlU2Nyb2xsVG9wOiB7XHJcbiAgICAgIHR5cGU6IE51bWJlcixcclxuICAgICAgZGVmYXVsdDogMFxyXG4gICAgfSxcclxuICAgIGRpcmVjdG9yeToge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6ICcvJ1xyXG4gICAgfSxcclxuICAgIHRhcExlZ2VuZDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbWVudXM6IHtcclxuICAgICAgdHlwZTogQXJyYXksXHJcbiAgICAgIGRlZmF1bHQgKCkge1xyXG4gICAgICAgIHJldHVybiBbXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2lkOiAndWNoYXJ0c2lkJyxcclxuICAgICAgaW5XeDogZmFsc2UsXHJcbiAgICAgIGluQWxpOiBmYWxzZSxcclxuICAgICAgaW5UdDogZmFsc2UsXHJcbiAgICAgIGluQmQ6IGZhbHNlLFxyXG4gICAgICBpbkg1OiBmYWxzZSxcclxuICAgICAgaW5BcHA6IGZhbHNlLFxyXG4gICAgICBpbldpbjogZmFsc2UsXHJcbiAgICAgIHR5cGUyZDogdHJ1ZSxcclxuICAgICAgZGlzU2Nyb2xsOiBmYWxzZSxcclxuICAgICAgb3Blbm1vdXNlOiBmYWxzZSxcclxuICAgICAgcGl4ZWw6IDEsXHJcbiAgICAgIGNXaWR0aDogMzc1LFxyXG4gICAgICBjSGVpZ2h0OiAyNTAsXHJcbiAgICAgIHNob3djaGFydDogZmFsc2UsXHJcbiAgICAgIGVjaGFydHM6IGZhbHNlLFxyXG4gICAgICBlY2hhcnRzUmVzaXplOntcclxuICAgICAgICBzdGF0ZTpmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICB1Y2hhcnRzT3B0czoge30sXHJcbiAgICAgIGVjaGFydHNPcHRzOiB7fSxcclxuICAgICAgZHJhd0RhdGE6e30sXHJcbiAgICAgIGxhc3REcmF3VGltZTpudWxsLFxyXG4gICAgfTtcclxuICB9LFxyXG4gIGNyZWF0ZWQoKXtcclxuICAgIHRoaXMuY2lkID0gdGhpcy5jYW52YXNJZFxyXG4gICAgaWYgKHRoaXMuY2FudmFzSWQgPT0gJ3VjaGFydHNpZCcgfHwgdGhpcy5jYW52YXNJZCA9PSAnJykge1xyXG4gICAgICBsZXQgdCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J1xyXG4gICAgICBsZXQgbGVuID0gdC5sZW5ndGhcclxuICAgICAgbGV0IGlkID0gJydcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XHJcbiAgICAgICAgaWQgKz0gdC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbGVuKSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNpZCA9IGlkXHJcbiAgICB9XHJcbiAgICBjb25zdCBzeXN0ZW1JbmZvID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKClcclxuICAgIGlmKHN5c3RlbUluZm8ucGxhdGZvcm0gPT09ICd3aW5kb3dzJyB8fCBzeXN0ZW1JbmZvLnBsYXRmb3JtID09PSAnbWFjJyl7XHJcbiAgICAgIHRoaXMuaW5XaW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gI2lmZGVmIE1QLVdFSVhJTlxyXG4gICAgdGhpcy5pbld4ID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmNhbnZhczJkID09PSBmYWxzZSB8fCBzeXN0ZW1JbmZvLnBsYXRmb3JtID09PSAnd2luZG93cycgfHwgc3lzdGVtSW5mby5wbGF0Zm9ybSA9PT0gJ21hYycpIHtcclxuICAgICAgdGhpcy50eXBlMmQgPSBmYWxzZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnR5cGUyZCA9IHRydWU7XHJcbiAgICAgIHRoaXMucGl4ZWwgPSBzeXN0ZW1JbmZvLnBpeGVsUmF0aW87XHJcbiAgICB9XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIC8v6Z2e5b6u5L+h5bCP56iL5bqP56uv5by65Yi25YWz6ZetY2FudmFzMmTmqKHlvI9cclxuICAgIC8vICNpZm5kZWYgTVAtV0VJWElOXHJcbiAgICB0aGlzLnR5cGUyZCA9IGZhbHNlO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgIE1QLVRPVVRJQU8gfHwgTVAtTEFSSyB8fCBNUC1BTElQQVlcclxuICAgIHRoaXMudHlwZTJkID0gdGhpcy5jYW52YXMyZDtcclxuICAgIC8vICNlbmRpZlxyXG4gICAgLy8gI2lmZGVmIE1QLUFMSVBBWVxyXG4gICAgdGhpcy5pbkFsaSA9IHRydWU7XHJcbiAgICB0aGlzLnBpeGVsID0gc3lzdGVtSW5mby5waXhlbFJhdGlvO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgTVAtQkFJRFVcclxuICAgIHRoaXMuaW5CZCA9IHRydWU7XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIC8vICNpZmRlZiBNUC1UT1VUSUFPXHJcbiAgICB0aGlzLmluVHQgPSB0cnVlO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgICB0aGlzLmRpc1Njcm9sbCA9IHRoaXMuZGlzYWJsZVNjcm9sbDtcclxuICB9LFxyXG4gIG1vdW50ZWQoKSB7XHJcbiAgICAvLyAjaWZkZWYgQVBQLVZVRVxyXG4gICAgdGhpcy5pbkFwcCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5lY2hhcnRzQXBwID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZWNoYXJ0cyA9IHRydWU7XHJcbiAgICAgIHRoaXMub3Blbm1vdXNlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIC8vICNpZmRlZiBBUFAtTlZVRVxyXG4gICAgdGhpcy5pbkFwcCA9IHRydWU7XHJcbiAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBcIuaaguS4jeaUr+aMgU5WVUVcIlxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgSDVcclxuICAgIHRoaXMuaW5INSA9IHRydWU7XHJcbiAgICBpZih0aGlzLmluV2luID09PSB0cnVlKXtcclxuICAgICAgdGhpcy5vcGVubW91c2UgPSB0aGlzLm9ubW91c2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lY2hhcnRzSDUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5lY2hhcnRzID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vICNlbmRpZlxyXG4gICAgdGhpcy4kbmV4dFRpY2soKCk9PntcclxuICAgICAgdGhpcy5iZWZvcmVJbml0KCk7XHJcbiAgICB9KVxyXG4gICAgLy8gI2lmbmRlZiBNUC1BTElQQVkgfHwgTVAtQkFJRFUgfHwgTVAtVE9VVElBTyB8fCBBUFAtVlVFXHJcbiAgICBjb25zdCB0aW1lID0gdGhpcy5pbkg1ID8gNTAwIDogMjAwO1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgdW5pLm9uV2luZG93UmVzaXplKFxyXG4gICAgICBkZWJvdW5jZShmdW5jdGlvbihyZXMpIHtcclxuICAgICAgICBpZiAoX3RoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBlcnJtc2cgPSBfdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgaWYgKGVycm1zZyAhPT0gbnVsbCAmJiBlcnJtc2cgIT09ICdudWxsJyAmJiBlcnJtc2cgIT09ICcnKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChfdGhpcy5lY2hhcnRzKSB7XHJcbiAgICAgICAgICBfdGhpcy5lY2hhcnRzUmVzaXplLnN0YXRlID0gIV90aGlzLmVjaGFydHNSZXNpemUuc3RhdGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIF90aGlzLnJlc2l6ZUhhbmRsZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRpbWUpXHJcbiAgICApO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgfSxcclxuICBkZXN0cm95ZWQoKXtcclxuICAgIGlmKHRoaXMuZWNoYXJ0cyA9PT0gdHJ1ZSl7XHJcbiAgICAgIGRlbGV0ZSBjZmUub3B0aW9uW3RoaXMuY2lkXVxyXG4gICAgICBkZWxldGUgY2ZlLmluc3RhbmNlW3RoaXMuY2lkXVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGRlbGV0ZSBjZnUub3B0aW9uW3RoaXMuY2lkXVxyXG4gICAgICBkZWxldGUgY2Z1Lmluc3RhbmNlW3RoaXMuY2lkXVxyXG4gICAgfVxyXG4gICAgLy8gI2lmbmRlZiBNUC1BTElQQVkgfHwgTVAtQkFJRFUgfHwgTVAtVE9VVElBT1xyXG4gICAgdW5pLm9mZldpbmRvd1Jlc2l6ZSgoKT0+e30pXHJcbiAgICAvLyAjZW5kaWZcclxuICB9LFxyXG4gIHdhdGNoOiB7XHJcbiAgICBjaGFydERhdGFQcm9wczoge1xyXG4gICAgICBoYW5kbGVyKHZhbCwgb2xkdmFsKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkdmFsKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGVhckNoYXJ0KCk7XHJcbiAgICAgICAgICAgIGlmICh2YWwuc2VyaWVzICYmIHZhbC5zZXJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYmVmb3JlSW5pdCgpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gJ+WPguaVsOmUmeivr++8mmNoYXJ0RGF0YeaVsOaNruexu+Wei+mUmeivryc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbG9jYWxkYXRhOntcclxuICAgICAgaGFuZGxlcih2YWwsIG9sZHZhbCkge1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWwpICE9PSBKU09OLnN0cmluZ2lmeShvbGR2YWwpKSB7XHJcbiAgICAgICAgICBpZiAodmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5iZWZvcmVJbml0KCk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgb3B0c1Byb3BzOiB7XHJcbiAgICAgIGhhbmRsZXIodmFsLCBvbGR2YWwpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWwpICE9PSBKU09OLnN0cmluZ2lmeShvbGR2YWwpICYmIHRoaXMuZWNoYXJ0cyA9PT0gZmFsc2UgJiYgdGhpcy5vcHRzV2F0Y2ggPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrRGF0YSh0aGlzLmRyYXdEYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jbGVhckNoYXJ0KCk7XHJcbiAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn5Y+C5pWw6ZSZ6K+v77yab3B0c+aVsOaNruexu+Wei+mUmeivryc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZW9wdHNQcm9wczoge1xyXG4gICAgICBoYW5kbGVyKHZhbCwgb2xkdmFsKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkdmFsKSAmJiB0aGlzLmVjaGFydHMgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5kcmF3RGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gJ+WPguaVsOmUmeivr++8mmVvcHRz5pWw5o2u57G75Z6L6ZSZ6K+vJztcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGltbWVkaWF0ZTogZmFsc2UsXHJcbiAgICAgIGRlZXA6IHRydWVcclxuICAgIH0sXHJcbiAgICByZXNob3codmFsLCBvbGR2YWwpIHtcclxuICAgICAgaWYgKHZhbCA9PT0gdHJ1ZSAmJiB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmVjaGFydHNSZXNpemUuc3RhdGUgPSAhdGhpcy5lY2hhcnRzUmVzaXplLnN0YXRlO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5kcmF3RGF0YSk7XHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJlbG9hZCh2YWwsIG9sZHZhbCkge1xyXG4gICAgICBpZiAodmFsID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1peGluRGF0YWNvbUVycm9yTWVzc2FnZSh2YWwsIG9sZHZhbCkge1xyXG4gICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnZXJyb3InLCBwYXJhbXM6IHt0eXBlOlwiZXJyb3JcIiwgZXJyb3JTaG93OiB0aGlzLmVycm9yU2hvdywgbXNnOiB2YWwsIGlkOiB0aGlzLmNpZH19KTtcclxuICAgICAgICBpZih0aGlzLmVycm9yU2hvdyl7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnW+eni+S6keWbvuihqOe7hOS7tl0nICsgdmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvck1lc3NhZ2UodmFsLCBvbGR2YWwpIHtcclxuICAgICAgaWYgKHZhbCAmJiB0aGlzLmVycm9yU2hvdyAmJiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSAnbnVsbCcgJiYgdmFsICE9PSAnJykge1xyXG4gICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSB2YWw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgY29tcHV0ZWQ6IHtcclxuICAgIG9wdHNQcm9wcygpIHtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5vcHRzKSk7XHJcbiAgICB9LFxyXG4gICAgZW9wdHNQcm9wcygpIHtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5lb3B0cykpO1xyXG4gICAgfSxcclxuICAgIGNoYXJ0RGF0YVByb3BzKCkge1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0RGF0YSkpO1xyXG4gICAgfSxcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGJlZm9yZUluaXQoKXtcclxuICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY2hhcnREYXRhID09PSAnb2JqZWN0JyAmJiB0aGlzLmNoYXJ0RGF0YSAhPSBudWxsICYmIHRoaXMuY2hhcnREYXRhLnNlcmllcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY2hhcnREYXRhLnNlcmllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy/mi7fotJ3kuIDkuItjaGFydERhdGHvvIzkuLrkuoZvcHRz5Y+Y5pu05ZCO57uf5LiA5pWw5o2u5p2l5rqQXHJcbiAgICAgICAgdGhpcy5kcmF3RGF0YSA9IGRlZXBDbG9uZUFzc2lnbih7fSwgdGhpcy5jaGFydERhdGEpO1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoZWNrRGF0YSh0aGlzLmNoYXJ0RGF0YSk7XHJcbiAgICAgIH1lbHNlIGlmKHRoaXMubG9jYWxkYXRhLmxlbmd0aD4wKXtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2NhbGRhdGFJbml0KHRoaXMubG9jYWxkYXRhKTtcclxuICAgICAgfWVsc2UgaWYodGhpcy5jb2xsZWN0aW9uICE9PSAnJyl7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXRDbG91ZERhdGEoKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGxvY2FsZGF0YUluaXQocmVzZGF0YSl7XHJcbiAgICAgIC8v5pu/5o2iZW51beexu+Wei+S4uuato+ehrueahOaPj+i/sFxyXG4gICAgICBpZih0aGlzLmdyb3VwRW51bS5sZW5ndGg+MCl7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZ3JvdXBFbnVtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmKHJlc2RhdGFbaV0uZ3JvdXAgPT09IHRoaXMuZ3JvdXBFbnVtW2pdLnZhbHVlKXtcclxuICAgICAgICAgICAgICByZXNkYXRhW2ldLmdyb3VwID0gdGhpcy5ncm91cEVudW1bal0udGV4dFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMudGV4dEVudW0ubGVuZ3RoPjApe1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnRleHRFbnVtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmKHJlc2RhdGFbaV0udGV4dCA9PT0gdGhpcy50ZXh0RW51bVtqXS52YWx1ZSl7XHJcbiAgICAgICAgICAgICAgcmVzZGF0YVtpXS50ZXh0ID0gdGhpcy50ZXh0RW51bVtqXS50ZXh0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5lZWRDYXRlZ29yaWVzID0gZmFsc2U7XHJcbiAgICAgIGxldCB0bXBEYXRhID0ge2NhdGVnb3JpZXM6W10sIHNlcmllczpbXX1cclxuICAgICAgbGV0IHRtcGNhdGVnb3JpZXMgPSBbXVxyXG4gICAgICBsZXQgdG1wc2VyaWVzID0gW107XHJcbiAgICAgIC8v5ou85o6lY2F0ZWdvcmllc1xyXG4gICAgICBpZih0aGlzLmVjaGFydHMgPT09IHRydWUpe1xyXG4gICAgICAgIG5lZWRDYXRlZ29yaWVzID0gY2ZlLmNhdGVnb3JpZXMuaW5jbHVkZXModGhpcy50eXBlKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBuZWVkQ2F0ZWdvcmllcyA9IGNmdS5jYXRlZ29yaWVzLmluY2x1ZGVzKHRoaXMudHlwZSlcclxuICAgICAgfVxyXG4gICAgICBpZihuZWVkQ2F0ZWdvcmllcyA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgLy/lpoLmnpxwcm9wc+S4reeahGNoYXJ0RGF0YeW4puaciWNhdGVnb3JpZXPvvIzliJnkvJjlhYjkvb/nlKhjaGFydERhdGHnmoRjYXRlZ29yaWVzXHJcbiAgICAgICAgaWYodGhpcy5jaGFydERhdGEgJiYgdGhpcy5jaGFydERhdGEuY2F0ZWdvcmllcyAmJiB0aGlzLmNoYXJ0RGF0YS5jYXRlZ29yaWVzLmxlbmd0aD4wKXtcclxuICAgICAgICAgIHRtcGNhdGVnb3JpZXMgPSB0aGlzLmNoYXJ0RGF0YS5jYXRlZ29yaWVzXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAvL+WmguaenOaYr+aXpeacn+exu+Wei+eahOaVsOaNru+8jOS4jeeuoeaYr+acrOWcsOaVsOaNrui/mOaYr+S6keaVsOaNru+8jOmDveaMiei1t+atouaXpeacn+iHquWKqOaLvOaOpWNhdGVnb3JpZXNcclxuICAgICAgICAgIGlmKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSl7XHJcbiAgICAgICAgICAgIGxldCBpZGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlKVxyXG4gICAgICAgICAgICBsZXQgZWRhdGUgPSBuZXcgRGF0ZSh0aGlzLmVuZERhdGUpXHJcbiAgICAgICAgICAgIHdoaWxlIChpZGF0ZSA8PSBlZGF0ZSkge1xyXG4gICAgICAgICAgICBcdHRtcGNhdGVnb3JpZXMucHVzaChnZXRGb3JtYXREYXRlKGlkYXRlKSlcclxuICAgICAgICAgICAgXHRpZGF0ZSA9IGlkYXRlLnNldERhdGUoaWRhdGUuZ2V0RGF0ZSgpICsgMSlcclxuICAgICAgICAgICAgXHRpZGF0ZSA9IG5ldyBEYXRlKGlkYXRlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAvL+WQpuWImeS7jue7k+aenOS4reWOu+mHjeW5tuaLvOaOpWNhdGVnb3JpZXNcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBsZXQgdGVtcGNrZXkgPSB7fTtcclxuICAgICAgICAgICAgcmVzZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS50ZXh0ICE9IHVuZGVmaW5lZCAmJiAhdGVtcGNrZXlbaXRlbS50ZXh0XSkge1xyXG4gICAgICAgICAgICAgICAgdG1wY2F0ZWdvcmllcy5wdXNoKGl0ZW0udGV4dClcclxuICAgICAgICAgICAgICAgIHRlbXBja2V5W2l0ZW0udGV4dF0gPSB0cnVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdG1wRGF0YS5jYXRlZ29yaWVzID0gdG1wY2F0ZWdvcmllc1xyXG4gICAgICB9XHJcbiAgICAgIC8v5ou85o6lc2VyaWVzXHJcbiAgICAgIGxldCB0ZW1wc2tleSA9IHt9O1xyXG4gICAgICByZXNkYXRhLm1hcChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtLmdyb3VwICE9IHVuZGVmaW5lZCAmJiAhdGVtcHNrZXlbaXRlbS5ncm91cF0pIHtcclxuICAgICAgICAgIHRtcHNlcmllcy5wdXNoKHsgbmFtZTogaXRlbS5ncm91cCwgZGF0YTogW10gfSk7XHJcbiAgICAgICAgICB0ZW1wc2tleVtpdGVtLmdyb3VwXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgLy/lpoLmnpzmsqHmnInojrflj5bliLDliIbnu4TlkI3np7Ao5Y+v6IO95piv5bimY2F0ZWdvcmllc+eahOaVsOaNru+8jOS5n+WPr+iDveaYr+S4jeW4pueahOmlvOWbvuexuylcclxuICAgICAgaWYgKHRtcHNlcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHRtcHNlcmllcyA9IFt7IG5hbWU6ICfpu5jorqTliIbnu4QnLCBkYXRhOiBbXSB9XTtcclxuICAgICAgICAvL+WmguaenOaYr+mcgOimgWNhdGVnb3JpZXPnmoTlm77ooajnsbvlnotcclxuICAgICAgICBpZihuZWVkQ2F0ZWdvcmllcyA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRtcGNhdGVnb3JpZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IHNlcmllc2RhdGEgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAocmVzZGF0YVtpXS50ZXh0ID09IHRtcGNhdGVnb3JpZXNbal0pIHtcclxuICAgICAgICAgICAgICAgIHNlcmllc2RhdGEgPSByZXNkYXRhW2ldLnZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0bXBzZXJpZXNbMF0uZGF0YS5wdXNoKHNlcmllc2RhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIC8v5aaC5p6c5piv6aW85Zu+57G755qE5Zu+6KGo57G75Z6LXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdG1wc2VyaWVzWzBdLmRhdGEucHVzaCh7XCJuYW1lXCI6IHJlc2RhdGFbaV0udGV4dCxcInZhbHVlXCI6IHJlc2RhdGFbaV0udmFsdWV9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIC8v5aaC5p6c5pyJ5YiG57uE5ZCNXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCB0bXBzZXJpZXMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgIC8v5aaC5p6c5pyJY2F0ZWdvcmllc1xyXG4gICAgICAgICAgaWYgKHRtcGNhdGVnb3JpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRtcGNhdGVnb3JpZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgc2VyaWVzZGF0YSA9IDA7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodG1wc2VyaWVzW2tdLm5hbWUgPT0gcmVzZGF0YVtpXS5ncm91cCAmJiByZXNkYXRhW2ldLnRleHQgPT0gdG1wY2F0ZWdvcmllc1tqXSkge1xyXG4gICAgICAgICAgICAgICAgICBzZXJpZXNkYXRhID0gcmVzZGF0YVtpXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdG1wc2VyaWVzW2tdLmRhdGEucHVzaChzZXJpZXNkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgLy/lpoLmnpzkvKDkuoZncm91cOiAjOayoeacieS8oHRleHTvvIzljbPmsqHmnIljYXRlZ29yaWVz77yI5q2j5bi45oOF5Ya15LiL6L+Z56eN5pWw5o2u5piv5LiN56ym5ZCI5pWw5o2u6KaB5rGC6KeE6IyD55qE77yJXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodG1wc2VyaWVzW2tdLm5hbWUgPT0gcmVzZGF0YVtpXS5ncm91cCkge1xyXG4gICAgICAgICAgICAgICAgdG1wc2VyaWVzW2tdLmRhdGEucHVzaChyZXNkYXRhW2ldLnZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdG1wRGF0YS5zZXJpZXMgPSB0bXBzZXJpZXNcclxuICAgICAgLy/mi7fotJ3kuIDkuItjaGFydERhdGHvvIzkuLrkuoZvcHRz5Y+Y5pu05ZCO57uf5LiA5pWw5o2u5p2l5rqQXHJcbiAgICAgIHRoaXMuZHJhd0RhdGEgPSBkZWVwQ2xvbmVBc3NpZ24oe30sIHRtcERhdGEpO1xyXG4gICAgICB0aGlzLmNoZWNrRGF0YSh0bXBEYXRhKVxyXG4gICAgfSxcclxuICAgIHJlbG9hZGluZygpIHtcclxuICAgICAgaWYodGhpcy5lcnJvclJlbG9hZCA9PT0gZmFsc2Upe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmNvbGxlY3Rpb24gIT09ICcnKSB7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbk1peGluRGF0YWNvbVByb3BzQ2hhbmdlKHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmVmb3JlSW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2hlY2tEYXRhKGFueURhdGEpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIC8v5aSN5L2Nb3B0c+aIlmVvcHRzXHJcbiAgICAgIGlmKHRoaXMuZWNoYXJ0cyA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdID0gZGVlcENsb25lQXNzaWduKHt9LCB0aGlzLmVvcHRzKTtcclxuICAgICAgICBjZmUub3B0aW9uW2NpZF0uaWQgPSBjaWQ7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnR5cGUgPSB0aGlzLnR5cGU7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgJiYgY2Z1LnR5cGUuaW5jbHVkZXModGhpcy50eXBlKSkge1xyXG4gICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdID0gZGVlcENsb25lQXNzaWduKHt9LCBjZnVbdGhpcy50eXBlXSwgdGhpcy5vcHRzKTtcclxuICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jYW52YXNJZCA9IGNpZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn5Y+C5pWw6ZSZ6K+v77yacHJvcHPlj4LmlbDkuK10eXBl57G75Z6L5LiN5q2j56GuJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy/mjILovb1jYXRlZ29yaWVz5ZKMc2VyaWVzXHJcbiAgICAgIGxldCBuZXdEYXRhID0gZGVlcENsb25lQXNzaWduKHt9LCBhbnlEYXRhKTtcclxuICAgICAgaWYgKG5ld0RhdGEuc2VyaWVzICE9PSB1bmRlZmluZWQgJiYgbmV3RGF0YS5zZXJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5lY2hhcnRzID09PSB0cnVlKSB7XHJcbiAgICAgICAgICBjZmUub3B0aW9uW2NpZF0uY2hhcnREYXRhID0gbmV3RGF0YTtcclxuICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNhdGVnb3JpZXMgPSBuZXdEYXRhLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uc2VyaWVzID0gbmV3RGF0YS5zZXJpZXM7XHJcbiAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+e1xyXG4gICAgICAgICAgICB0aGlzLmluaXQoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICByZXNpemVIYW5kbGVyKCkge1xyXG4gICAgICAvL+a4suafk+mYsuaKllxyXG4gICAgICBsZXQgY3VyclRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICBsZXQgbGFzdERyYXdUaW1lID0gdGhpcy5sYXN0RHJhd1RpbWU/dGhpcy5sYXN0RHJhd1RpbWU6Y3VyclRpbWUtMzAwMDtcclxuICAgICAgbGV0IGR1cmF0aW9uID0gY3VyclRpbWUgLSBsYXN0RHJhd1RpbWU7XHJcbiAgICAgIGlmIChkdXJhdGlvbiA8IDEwMDApIHJldHVybjtcclxuICAgICAgbGV0IGNoYXJ0ZG9tID0gdW5pXHJcbiAgICAgICAgLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKVxyXG4gICAgICAgIC8vICNpZm5kZWYgTVAtQUxJUEFZXHJcbiAgICAgICAgLmluKHRoaXMpXHJcbiAgICAgICAgLy8gI2VuZGlmXHJcbiAgICAgICAgLnNlbGVjdCgnI0NoYXJ0Qm94SWQnK3RoaXMuY2lkKVxyXG4gICAgICAgIC5ib3VuZGluZ0NsaWVudFJlY3QoZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAoZGF0YS53aWR0aCA+IDAgJiYgZGF0YS5oZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLndpZHRoICE9PSB0aGlzLmNXaWR0aCB8fCBkYXRhLmhlaWdodCAhPT0gdGhpcy5jSGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5kcmF3RGF0YSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmV4ZWMoKTtcclxuICAgIH0sXHJcbiAgICBnZXRDbG91ZERhdGEoKSB7XHJcbiAgICAgIGlmICh0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUdldCgpXHJcbiAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tUmVzRGF0YSA9IHJlcy5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgIHRoaXMubG9jYWxkYXRhSW5pdCh0aGlzLm1peGluRGF0YWNvbVJlc0RhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9ICfor7fmsYLplJnor6/vvJonICsgZXJyO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIG9uTWl4aW5EYXRhY29tUHJvcHNDaGFuZ2UobmVlZFJlc2V0LCBjaGFuZ2VkKSB7XHJcbiAgICAgIGlmIChuZWVkUmVzZXQgPT0gdHJ1ZSAmJiB0aGlzLmNvbGxlY3Rpb24gIT09ICcnKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Q2xvdWREYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBfY2xlYXJDaGFydCgpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIGlmICh0aGlzLmVjaGFydHMgIT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdICYmIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0KSB7XHJcbiAgICAgICAgY29uc3QgY3R4ID0gY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQ7XHJcbiAgICAgICAgaWYodHlwZW9mIGN0eCA9PT0gXCJvYmplY3RcIiAmJiAhISFjZnUub3B0aW9uW2NpZF0udXBkYXRlKXtcclxuICAgICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy5jV2lkdGgqdGhpcy5waXhlbCwgdGhpcy5jSGVpZ2h0KnRoaXMucGl4ZWwpO1xyXG4gICAgICAgICAgY3R4LmRyYXcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBpbml0KCkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgbGV0IGNoYXJ0ZG9tID0gdW5pXHJcbiAgICAgICAgLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKVxyXG4gICAgICAgIC8vICNpZm5kZWYgTVAtQUxJUEFZXHJcbiAgICAgICAgLmluKHRoaXMpXHJcbiAgICAgICAgLy8gI2VuZGlmXHJcbiAgICAgICAgLnNlbGVjdCgnI0NoYXJ0Qm94SWQnK2NpZClcclxuICAgICAgICAuYm91bmRpbmdDbGllbnRSZWN0KGRhdGEgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGEud2lkdGggPiAwICYmIGRhdGEuaGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxhc3REcmF3VGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY1dpZHRoID0gZGF0YS53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5jSGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWNoYXJ0cyAhPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmJhY2tncm91bmQgPSB0aGlzLmJhY2tncm91bmQgPT0gJ3JnYmEoMCwwLDAsMCknID8gJyNGRkZGRkYnIDogdGhpcy5iYWNrZ3JvdW5kO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jYW52YXMyZCA9IHRoaXMudHlwZTJkO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5waXhlbFJhdGlvID0gdGhpcy5waXhlbDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uYW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb247XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLndpZHRoID0gZGF0YS53aWR0aCAqIHRoaXMucGl4ZWw7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmhlaWdodCA9IGRhdGEuaGVpZ2h0ICogdGhpcy5waXhlbDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ub256b29tID0gdGhpcy5vbnpvb207XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLm9udGFwID0gdGhpcy5vbnRhcDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ub250b3VjaCA9IHRoaXMub250b3VjaDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ub25tb3VzZSA9IHRoaXMub3Blbm1vdXNlO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5vbm1vdmV0aXAgPSB0aGlzLm9ubW92ZXRpcDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0udG9vbHRpcFNob3cgPSB0aGlzLnRvb2x0aXBTaG93O1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID0gdGhpcy50b29sdGlwRm9ybWF0O1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS50b29sdGlwQ3VzdG9tID0gdGhpcy50b29sdGlwQ3VzdG9tO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5pblNjcm9sbFZpZXcgPSB0aGlzLmluU2Nyb2xsVmlldztcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ubGFzdERyYXdUaW1lID0gdGhpcy5sYXN0RHJhd1RpbWU7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLnRhcExlZ2VuZCA9IHRoaXMudGFwTGVnZW5kO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5aaC5p6c5pivSDXmiJbogIVBcHDnq6/vvIzph4fnlKhyZW5kZXJqc+a4suafk+WbvuihqFxyXG4gICAgICAgICAgICBpZiAodGhpcy5pbkg1IHx8IHRoaXMuaW5BcHApIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5lY2hhcnRzID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS5vbnRhcCA9IHRoaXMub250YXA7XHJcbiAgICAgICAgICAgICAgICBjZmUub3B0aW9uW2NpZF0ub25tb3VzZSA9IHRoaXMub3Blbm1vdXNlO1xyXG4gICAgICAgICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnRvb2x0aXBTaG93ID0gdGhpcy50b29sdGlwU2hvdztcclxuICAgICAgICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID0gdGhpcy50b29sdGlwRm9ybWF0O1xyXG4gICAgICAgICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnRvb2x0aXBDdXN0b20gPSB0aGlzLnRvb2x0aXBDdXN0b207XHJcbiAgICAgICAgICAgICAgICBjZmUub3B0aW9uW2NpZF0ubGFzdERyYXdUaW1lID0gdGhpcy5sYXN0RHJhd1RpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRzID0gZGVlcENsb25lQXNzaWduKHt9LCBjZmUub3B0aW9uW2NpZF0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ucm90YXRlTG9jayA9IGNmdS5vcHRpb25bY2lkXS5yb3RhdGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVjaGFydHNPcHRzID0gZGVlcENsb25lQXNzaWduKHt9LCBjZnUub3B0aW9uW2NpZF0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy/lpoLmnpzmmK/lsI/nqIvluo/nq6/vvIzph4fnlKh1Q2hhcnRz5riy5p+TXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdID0gZm9ybWF0dGVyQXNzaWduKGNmdS5vcHRpb25bY2lkXSxjZnUuZm9ybWF0dGVyKVxyXG4gICAgICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PntcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUyZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBxdWVyeSA9IHVuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuaW4odGhpcylcclxuICAgICAgICAgICAgICAgICAgcXVlcnlcclxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KCcjJyArIGNpZClcclxuICAgICAgICAgICAgICAgICAgICAuZmllbGRzKHsgbm9kZTogdHJ1ZSwgc2l6ZTogdHJ1ZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5leGVjKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzWzBdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHJlc1swXS5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQgPSBjdHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5yb3RhdGVMb2NrID0gY2Z1Lm9wdGlvbltjaWRdLnJvdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2Z1Lmluc3RhbmNlW2NpZF0gJiYgY2Z1Lm9wdGlvbltjaWRdICYmIGNmdS5vcHRpb25bY2lkXS51cGRhdGUgPT09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0YVVDaGFydChjaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGRhdGEud2lkdGggKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBkYXRhLmhlaWdodCAqIHRoaXMucGl4ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl93aWR0aCA9IGRhdGEud2lkdGggKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5faGVpZ2h0ID0gZGF0YS5oZWlnaHQgKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0LnJlc3RvcmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0LnNhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25ld0NoYXJ0KGNpZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn5Y+C5pWw6ZSZ6K+v77ya5byA5ZCvMmTmqKHlvI/lkI7vvIzmnKrojrflj5bliLBkb23oioLngrnvvIxjYW52YXMtaWQ6JyArIGNpZDtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5BbGkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5yb3RhdGVMb2NrID0gY2Z1Lm9wdGlvbltjaWRdLnJvdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dCA9IHVuaS5jcmVhdGVDYW52YXNDb250ZXh0KGNpZCwgdGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGNmdS5pbnN0YW5jZVtjaWRdICYmIGNmdS5vcHRpb25bY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0udXBkYXRlID09PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGFVQ2hhcnQoY2lkKVxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dC5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXdDaGFydChjaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgfSwxMDApXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVzaG93ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9ICfluIPlsYDplJnor6/vvJrmnKrojrflj5bliLDniLblhYPntKDlrr3pq5jlsLrlr7jvvIFjYW52YXMtaWQ6JyArIGNpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmV4ZWMoKTtcclxuICAgIH0sXHJcbiAgICBzYXZlSW1hZ2UoKXtcclxuICAgIFx0dW5pLmNhbnZhc1RvVGVtcEZpbGVQYXRoKHtcclxuICAgIFx0ICBjYW52YXNJZDogdGhpcy5jaWQsXHJcbiAgICBcdCAgc3VjY2VzczogcmVzPT57XHJcbiAgICBcdCAgICAvLyNpZmRlZiBINVxyXG4gICAgXHRcdFx0dmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIFx0XHRcdGEuaHJlZiA9IHJlcy50ZW1wRmlsZVBhdGg7XHJcbiAgICBcdFx0XHRhLmRvd25sb2FkID0gdGhpcy5jaWQ7XHJcbiAgICBcdFx0XHRhLnRhcmdldCA9ICdfYmxhbmsnXHJcbiAgICBcdFx0XHRhLmNsaWNrKCk7XHJcbiAgICBcdCAgICAvLyNlbmRpZlxyXG4gICAgXHQgICAgLy8jaWZuZGVmIEg1XHJcbiAgICBcdCAgICAgIHVuaS5zYXZlSW1hZ2VUb1Bob3Rvc0FsYnVtKHtcclxuICAgICAgICAgICAgICBmaWxlUGF0aDogcmVzLnRlbXBGaWxlUGF0aCxcclxuICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZjmiJDlip8nLFxyXG4gICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgXHQgICAgICB9KTtcclxuICAgIFx0ICAgIC8vI2VuZGlmXHJcbiAgICBcdCAgfSBcclxuICAgIFx0fSx0aGlzKTtcclxuICAgIH0sXHJcbiAgICBnZXRJbWFnZSgpe1xyXG4gICAgICBpZih0aGlzLnR5cGUyZCA9PSBmYWxzZSl7XHJcbiAgICAgICAgdW5pLmNhbnZhc1RvVGVtcEZpbGVQYXRoKHtcclxuICAgICAgICAgIGNhbnZhc0lkOiB0aGlzLmNpZCxcclxuICAgICAgICAgIHN1Y2Nlc3M6IHJlcz0+e1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdnZXRJbWFnZScsIHBhcmFtczoge3R5cGU6XCJnZXRJbWFnZVwiLCBiYXNlNjQ6IHJlcy50ZW1wRmlsZVBhdGh9fSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSx0aGlzKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgY29uc3QgcXVlcnkgPSB1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLmluKHRoaXMpXHJcbiAgICAgICAgcXVlcnlcclxuICAgICAgICAgIC5zZWxlY3QoJyMnICsgdGhpcy5jaWQpXHJcbiAgICAgICAgICAuZmllbGRzKHsgbm9kZTogdHJ1ZSwgc2l6ZTogdHJ1ZSB9KVxyXG4gICAgICAgICAgLmV4ZWMocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc1swXSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHJlc1swXS5ub2RlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2dldEltYWdlJywgcGFyYW1zOiB7dHlwZTpcImdldEltYWdlXCIsIGJhc2U2NDogY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyl9fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gI2lmbmRlZiBBUFAtVlVFIHx8IEg1XHJcbiAgICBfbmV3Q2hhcnQoY2lkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdID0gbmV3IHVDaGFydHMoY2Z1Lm9wdGlvbltjaWRdKTtcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uYWRkRXZlbnRMaXN0ZW5lcigncmVuZGVyQ29tcGxldGUnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnY29tcGxldGUnLCBwYXJhbXM6IHt0eXBlOlwiY29tcGxldGVcIiwgY29tcGxldGU6IHRydWUsIGlkOiBjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSk7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uZGVsRXZlbnRMaXN0ZW5lcigncmVuZGVyQ29tcGxldGUnKVxyXG4gICAgICB9KTtcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsTGVmdCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdzY3JvbGxMZWZ0JywgcGFyYW1zOiB7dHlwZTpcInNjcm9sbExlZnRcIiwgc2Nyb2xsTGVmdDogdHJ1ZSwgaWQ6IGNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbFJpZ2h0JywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ3Njcm9sbFJpZ2h0JywgcGFyYW1zOiB7dHlwZTpcInNjcm9sbFJpZ2h0XCIsIHNjcm9sbFJpZ2h0OiB0cnVlLCBpZDogY2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBfdXBkYXRhVUNoYXJ0KGNpZCkge1xyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS51cGRhdGVEYXRhKGNmdS5vcHRpb25bY2lkXSlcclxuICAgIH0sXHJcbiAgICBfdG9vbHRpcERlZmF1bHQoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKSB7XHJcbiAgICAgIGlmIChjYXRlZ29yeSkge1xyXG4gICAgICAgIGxldCBkYXRhID0gaXRlbS5kYXRhXHJcbiAgICAgICAgaWYodHlwZW9mIGl0ZW0uZGF0YSA9PT0gXCJvYmplY3RcIil7XHJcbiAgICAgICAgICBkYXRhID0gaXRlbS5kYXRhLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjYXRlZ29yeSArICcgJyArIGl0ZW0ubmFtZSArICc6JyArIGRhdGE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ucHJvcGVydGllcyAmJiBpdGVtLnByb3BlcnRpZXMubmFtZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ucHJvcGVydGllcy5uYW1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lICsgJzonICsgaXRlbS5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIF9zaG93VG9vbHRpcChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLmNpZFxyXG4gICAgICBsZXQgdGMgPSBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEN1c3RvbVxyXG4gICAgICBpZiAodGMgJiYgdGMgIT09IHVuZGVmaW5lZCAmJiB0YyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRjLnggPj0gMCAmJiB0Yy55ID49IDApIHtcclxuICAgICAgICAgIG9mZnNldCA9IHsgeDogdGMueCwgeTogdGMueSArIDEwIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNob3dUb29sVGlwKGUsIHtcclxuICAgICAgICAgIGluZGV4OiB0Yy5pbmRleCxcclxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxyXG4gICAgICAgICAgdGV4dExpc3Q6IHRjLnRleHRMaXN0LFxyXG4gICAgICAgICAgZm9ybWF0dGVyOiAoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXQgPT09ICdzdHJpbmcnICYmIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zaG93VG9vbFRpcChlLCB7XHJcbiAgICAgICAgICBmb3JtYXR0ZXI6IChpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdCA9PT0gJ3N0cmluZycgJiYgY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0oaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9vbHRpcERlZmF1bHQoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgX3RhcChlLG1vdmUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIGxldCBjdXJyZW50SW5kZXggPSBudWxsO1xyXG4gICAgICBsZXQgbGVnZW5kSW5kZXggPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5pblNjcm9sbFZpZXcgPT09IHRydWUgfHwgdGhpcy5pbkFsaSkge1xyXG4gICAgICAgIGxldCBjaGFydGRvbSA9IHVuaVxyXG4gICAgICAgICAgLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKVxyXG4gICAgICAgICAgLy8gI2lmbmRlZiBNUC1BTElQQVlcclxuICAgICAgICAgIC5pbih0aGlzKVxyXG4gICAgICAgICAgLnNlbGVjdCgnI0NoYXJ0Qm94SWQnK2NpZClcclxuICAgICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgICAgLy8gI2lmZGVmIE1QLUFMSVBBWVxyXG4gICAgICAgICAgLnNlbGVjdCgnIycrdGhpcy5jaWQpXHJcbiAgICAgICAgICAvLyAjZW5kaWZcclxuICAgICAgICAgIC5ib3VuZGluZ0NsaWVudFJlY3QoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGUuY2hhbmdlZFRvdWNoZXM9W107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmluQWxpKSB7XHJcbiAgICAgICAgICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHsgeDogZS5kZXRhaWwuY2xpZW50WCAtIGRhdGEubGVmdCwgeTogZS5kZXRhaWwuY2xpZW50WSAtIGRhdGEudG9wfSk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh7IHg6IGUuZGV0YWlsLnggLSBkYXRhLmxlZnQsIHk6IGUuZGV0YWlsLnkgLSBkYXRhLnRvcCAtIHRoaXMucGFnZVNjcm9sbFRvcH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKG1vdmUpe1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnRvb2x0aXBTaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcChlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGNmdS5pbnN0YW5jZVtjaWRdLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICAgICAgICAgICAgbGVnZW5kSW5kZXggPSBjZnUuaW5zdGFuY2VbY2lkXS5nZXRMZWdlbmREYXRhSW5kZXgoZSk7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy50YXBMZWdlbmQgPT09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0udG91Y2hMZWdlbmQoZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnRvb2x0aXBTaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcChlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnZ2V0SW5kZXgnLCBwYXJhbXM6IHsgdHlwZTpcImdldEluZGV4XCIsIGV2ZW50OnsgeDogZS5kZXRhaWwueCAtIGRhdGEubGVmdCwgeTogZS5kZXRhaWwueSAtIGRhdGEudG9wIH0sIGN1cnJlbnRJbmRleDogY3VycmVudEluZGV4LCBsZWdlbmRJbmRleDogbGVnZW5kSW5kZXgsIGlkOiBjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZXhlYygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmKG1vdmUpe1xyXG4gICAgICAgICAgaWYgKHRoaXMudG9vbHRpcFNob3cgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAoZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBlLmNoYW5nZWRUb3VjaGVzPVtdO1xyXG4gICAgICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHsgeDogZS5kZXRhaWwueCAtIGUuY3VycmVudFRhcmdldC5vZmZzZXRMZWZ0LCB5OiBlLmRldGFpbC55IC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCB9KTtcclxuICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGNmdS5pbnN0YW5jZVtjaWRdLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICAgICAgICBsZWdlbmRJbmRleCA9IGNmdS5pbnN0YW5jZVtjaWRdLmdldExlZ2VuZERhdGFJbmRleChlKTtcclxuICAgICAgICAgIGlmKHRoaXMudGFwTGVnZW5kID09PSB0cnVlKXtcclxuICAgICAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0udG91Y2hMZWdlbmQoZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy50b29sdGlwU2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcChlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2dldEluZGV4JywgcGFyYW1zOiB7dHlwZTpcImdldEluZGV4XCIsIGV2ZW50OnsgeDogZS5kZXRhaWwueCwgeTogZS5kZXRhaWwueSAtIGUuY3VycmVudFRhcmdldC5vZmZzZXRUb3AgfSwgY3VycmVudEluZGV4OiBjdXJyZW50SW5kZXgsIGxlZ2VuZEluZGV4OiBsZWdlbmRJbmRleCwgaWQ6IGNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBfdG91Y2hTdGFydChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLmNpZFxyXG4gICAgICBsYXN0TW92ZVRpbWU9RGF0ZS5ub3coKTtcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLnRvdWNoZXMubGVuZ3RoID09IDEpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbFN0YXJ0KGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTonZ2V0VG91Y2hTdGFydCcsIHBhcmFtczp7dHlwZTpcInRvdWNoU3RhcnRcIiwgZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSwgaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgfSxcclxuICAgIF90b3VjaE1vdmUoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgbGV0IGN1cnJNb3ZlVGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgIGxldCBkdXJhdGlvbiA9IGN1cnJNb3ZlVGltZSAtIGxhc3RNb3ZlVGltZTtcclxuICAgICAgbGV0IHRvdWNoTW92ZUxpbWl0ID0gY2Z1Lm9wdGlvbltjaWRdLnRvdWNoTW92ZUxpbWl0IHx8IDI0O1xyXG4gICAgICBpZiAoZHVyYXRpb24gPCBNYXRoLmZsb29yKDEwMDAgLyB0b3VjaE1vdmVMaW1pdCkpIHJldHVybjsvL+avj+enkjYw5binXHJcbiAgICAgIGxhc3RNb3ZlVGltZSA9IGN1cnJNb3ZlVGltZTtcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGwoZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5vbnRhcCA9PT0gdHJ1ZSAmJiBjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSBmYWxzZSAmJiB0aGlzLm9ubW92ZXRpcCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5fdGFwKGUsdHJ1ZSlcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLm9udG91Y2ggPT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiB0aGlzLm9uem9vbSA9PT0gdHJ1ZSAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5kb2J1bGVab29tKGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2dldFRvdWNoTW92ZScsIHBhcmFtczoge3R5cGU6XCJ0b3VjaE1vdmVcIiwgZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSwgaWQ6IGNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgIH0sXHJcbiAgICBfdG91Y2hFbmQoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLnRvdWNoZXMubGVuZ3RoID09IDApe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbEVuZChlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVtaXRNc2coe25hbWU6J2dldFRvdWNoRW5kJywgcGFyYW1zOnt0eXBlOlwidG91Y2hFbmRcIiwgZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSwgaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgICBpZih0aGlzLm9udGFwID09PSB0cnVlICYmIGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IGZhbHNlICYmIHRoaXMub25tb3ZldGlwID09PSB0cnVlKXtcclxuICAgICAgICB0aGlzLl90YXAoZSx0cnVlKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICBfZXJyb3IoZSkge1xyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IGUuZGV0YWlsLmVyck1zZztcclxuICAgIH0sXHJcbiAgICBlbWl0TXNnKG1zZykge1xyXG4gICAgICB0aGlzLiRlbWl0KG1zZy5uYW1lLCBtc2cucGFyYW1zKTtcclxuICAgIH0sXHJcbiAgICBnZXRSZW5kZXJUeXBlKCkge1xyXG4gICAgICAvL+mYsuatouWmguaenOW8gOWQr2VjaGFydHPkuJTniLblhYPntKDkuLp2LWlm55qE5oOF5Ya1cmVuZGVyanPnm5HlkKzkuI3liLBwcm9w5Y+Y5YyW55qE6Zeu6aKYXHJcbiAgICAgIGlmKHRoaXMuZWNoYXJ0cz09PXRydWUgJiYgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nPT09ZmFsc2Upe1xyXG4gICAgICAgIHRoaXMuYmVmb3JlSW5pdCgpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB0b0pTT04oKXtcclxuICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuICB9XHJcbn07XHJcbjwvc2NyaXB0PlxyXG5cclxuPCEtLSAjaWZkZWYgQVBQLVZVRSB8fCBINSAtLT5cclxuPHNjcmlwdCBtb2R1bGU9XCJyZGNoYXJ0c1wiIGxhbmc9XCJyZW5kZXJqc1wiPlxyXG5pbXBvcnQgdUNoYXJ0c1JEIGZyb20gJy4uLy4uL2pzX3Nkay91LWNoYXJ0cy91LWNoYXJ0cy5qcyc7XHJcbmltcG9ydCBjZnUgZnJvbSAnLi4vLi4vanNfc2RrL3UtY2hhcnRzL2NvbmZpZy11Y2hhcnRzLmpzJztcclxuaW1wb3J0IGNmZSBmcm9tICcuLi8uLi9qc19zZGsvdS1jaGFydHMvY29uZmlnLWVjaGFydHMuanMnO1xyXG5cclxudmFyIHRoYXQgPSB7fTtcclxudmFyIHJvb3Rkb20gPSBudWxsO1xyXG5cclxuZnVuY3Rpb24gcmRkZWVwQ2xvbmVBc3NpZ24ob3JpZ2luID0ge30sIC4uLmFyZ3MpIHtcclxuICBmb3IgKGxldCBpIGluIGFyZ3MpIHtcclxuICAgIGZvciAobGV0IGtleSBpbiBhcmdzW2ldKSB7XHJcbiAgICAgIGlmIChhcmdzW2ldLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBvcmlnaW5ba2V5XSA9IGFyZ3NbaV1ba2V5XSAmJiB0eXBlb2YgYXJnc1tpXVtrZXldID09PSAnb2JqZWN0JyA/IHJkZGVlcENsb25lQXNzaWduKEFycmF5LmlzQXJyYXkoYXJnc1tpXVtrZXldKSA/IFtdIDoge30sIG9yaWdpbltrZXldLCBhcmdzW2ldW2tleV0pIDogYXJnc1tpXVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBvcmlnaW47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJkZm9ybWF0dGVyQXNzaWduKGFyZ3MsZm9ybWF0dGVyKSB7XHJcbiAgZm9yIChsZXQga2V5IGluIGFyZ3MpIHtcclxuICAgIGlmKGFyZ3MuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBhcmdzW2tleV0gIT09IG51bGwgJiYgdHlwZW9mIGFyZ3Nba2V5XSA9PT0gJ29iamVjdCcpe1xyXG4gICAgICByZGZvcm1hdHRlckFzc2lnbihhcmdzW2tleV0sZm9ybWF0dGVyKVxyXG4gICAgfWVsc2UgaWYoa2V5ID09PSAnZm9ybWF0JyAmJiB0eXBlb2YgYXJnc1trZXldID09PSAnc3RyaW5nJyl7XHJcbiAgICAgIGFyZ3NbJ2Zvcm1hdHRlciddID0gZm9ybWF0dGVyW2FyZ3Nba2V5XV0gPyBmb3JtYXR0ZXJbYXJnc1trZXldXSA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFyZ3M7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmlkOm51bGxcclxuICAgIH1cclxuICB9LFxyXG4gIG1vdW50ZWQoKSB7XHJcbiAgICByb290ZG9tID0ge3RvcDowLGxlZnQ6MH1cclxuICAgIC8vICNpZmRlZiBINVxyXG4gICAgbGV0IGRtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndW5pLW1haW4nKVswXVxyXG4gICAgaWYoZG0gPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgIGRtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndW5pLXBhZ2Utd3JhcHBlcicpWzBdXHJcbiAgICB9XHJcbiAgICByb290ZG9tID0ge3RvcDpkbS5vZmZzZXRUb3AsbGVmdDpkbS5vZmZzZXRMZWZ0fVxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgIGlmKHRoaXMucmlkID09PSBudWxsKXtcclxuICAgICAgICB0aGlzLiRvd25lckluc3RhbmNlICYmIHRoaXMuJG93bmVySW5zdGFuY2UuY2FsbE1ldGhvZCgnZ2V0UmVuZGVyVHlwZScpXHJcbiAgICAgIH1cclxuICAgIH0sMjAwKVxyXG4gIH0sXHJcbiAgZGVzdHJveWVkKCl7XHJcbiAgICBkZWxldGUgY2Z1Lm9wdGlvblt0aGlzLnJpZF1cclxuICAgIGRlbGV0ZSBjZnUuaW5zdGFuY2VbdGhpcy5yaWRdXHJcbiAgICBkZWxldGUgY2ZlLm9wdGlvblt0aGlzLnJpZF1cclxuICAgIGRlbGV0ZSBjZmUuaW5zdGFuY2VbdGhpcy5yaWRdXHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICAvLz09PT09PT09PT09PT095Lul5LiL5pivRUNoYXJ0c+eahOaWueazlT09PT09PT09PT09PT09PT09PT09XHJcbiAgICBlY2luaXQobmV3VmFsLCBvbGRWYWwsIG93bmVyLCBpbnN0YW5jZSl7XHJcbiAgICAgIGxldCBjaWQgPSBKU09OLnN0cmluZ2lmeShuZXdWYWwuaWQpXHJcbiAgICAgIHRoaXMucmlkID0gY2lkXHJcbiAgICAgIHRoYXRbY2lkXSA9IHRoaXMuJG93bmVySW5zdGFuY2UgfHwgaW5zdGFuY2VcclxuICAgICAgbGV0IGVvcHRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdWYWwpKVxyXG4gICAgICBsZXQgdHlwZSA9IGVvcHRzLnR5cGU7XHJcbiAgICAgIC8v6L295YWl5bm26KaG55uW6buY6K6k6YWN572uXHJcbiAgICAgIGlmICh0eXBlICYmIGNmZS50eXBlLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdID0gcmRkZWVwQ2xvbmVBc3NpZ24oe30sIGNmZVt0eXBlXSwgZW9wdHMpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjZmUub3B0aW9uW2NpZF0gPSByZGRlZXBDbG9uZUFzc2lnbih7fSwgZW9wdHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBuZXdEYXRhID0gZW9wdHMuY2hhcnREYXRhO1xyXG4gICAgICBpZihuZXdEYXRhKXtcclxuICAgICAgICAvL+aMgui9vWNhdGVnb3JpZXPlkoxzZXJpZXNcclxuICAgICAgICBpZihjZmUub3B0aW9uW2NpZF0ueEF4aXMgJiYgY2ZlLm9wdGlvbltjaWRdLnhBeGlzLnR5cGUgJiYgY2ZlLm9wdGlvbltjaWRdLnhBeGlzLnR5cGUgPT09ICdjYXRlZ29yeScpe1xyXG4gICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnhBeGlzLmRhdGEgPSBuZXdEYXRhLmNhdGVnb3JpZXNcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2ZlLm9wdGlvbltjaWRdLnlBeGlzICYmIGNmZS5vcHRpb25bY2lkXS55QXhpcy50eXBlICYmIGNmZS5vcHRpb25bY2lkXS55QXhpcy50eXBlID09PSAnY2F0ZWdvcnknKXtcclxuICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS55QXhpcy5kYXRhID0gbmV3RGF0YS5jYXRlZ29yaWVzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNmZS5vcHRpb25bY2lkXS5zZXJpZXMgPSBbXVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3RGF0YS5zZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS5zZXJpZXNUZW1wbGF0ZSA9IGNmZS5vcHRpb25bY2lkXS5zZXJpZXNUZW1wbGF0ZSA/IGNmZS5vcHRpb25bY2lkXS5zZXJpZXNUZW1wbGF0ZSA6IHt9XHJcbiAgICAgICAgICBsZXQgVGVtcGxhdGUgPSByZGRlZXBDbG9uZUFzc2lnbih7fSxjZmUub3B0aW9uW2NpZF0uc2VyaWVzVGVtcGxhdGUsbmV3RGF0YS5zZXJpZXNbaV0pXHJcbiAgICAgICAgICBjZmUub3B0aW9uW2NpZF0uc2VyaWVzLnB1c2goVGVtcGxhdGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdy5lY2hhcnRzID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgdGhpcy5uZXdFQ2hhcnQoKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxyXG4gICAgICAgIC8vICNpZmRlZiBBUFAtVlVFXHJcbiAgICAgICAgc2NyaXB0LnNyYyA9ICcuL3VuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvc3RhdGljL2FwcC1wbHVzL2VjaGFydHMubWluLmpzJ1xyXG4gICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgIC8vICNpZmRlZiBINVxyXG4gICAgICAgIGNvbnN0IHJvb3R1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5ID0gaW5zdGFuY2UuZ2V0RGF0YXNldCgpLmRpcmVjdG9yeVxyXG4gICAgICAgIHNjcmlwdC5zcmMgPSByb290dXJsICsgZGlyZWN0b3J5ICsgJ3VuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvc3RhdGljL2g1L2VjaGFydHMubWluLmpzJ1xyXG4gICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSB0aGlzLm5ld0VDaGFydFxyXG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZWNyZXNpemUobmV3VmFsLCBvbGRWYWwsIG93bmVyLCBpbnN0YW5jZSl7XHJcbiAgICAgIGlmKGNmZS5pbnN0YW5jZVt0aGlzLnJpZF0pe1xyXG4gICAgICAgIGNmZS5pbnN0YW5jZVt0aGlzLnJpZF0ucmVzaXplKClcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG5ld0VDaGFydCgpe1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgaWYoY2ZlLmluc3RhbmNlW2NpZF0gPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgY2ZlLmluc3RhbmNlW2NpZF0gPSBlY2hhcnRzLmluaXQodGhhdFtjaWRdLiRlbC5jaGlsZHJlblswXSlcclxuICAgICAgICAvL29udGFw5byA5ZCv5ZCO5omN6Kem5Y+RY2xpY2vkuovku7ZcclxuICAgICAgICBpZihjZmUub3B0aW9uW2NpZF0ub250YXAgPT09IHRydWUpe1xyXG4gICAgICAgICAgY2ZlLmluc3RhbmNlW2NpZF0ub24oJ2NsaWNrJywgcmVzZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBldmVudCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgIHg6cmVzZGF0YS5ldmVudC5vZmZzZXRYLHk6cmVzZGF0YS5ldmVudC5vZmZzZXRZXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRJbmRleFwiLCBwYXJhbXM6e3R5cGU6XCJnZXRJbmRleFwiLCBldmVudDpldmVudCwgY3VycmVudEluZGV4OnJlc2RhdGEuZGF0YUluZGV4LCB2YWx1ZTpyZXNkYXRhLmRhdGEsIHNlcmllc05hbWU6IHJlc2RhdGEuc2VyaWVzTmFtZSxpZDpjaWR9fSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAvLyDlop7liqBFQ2hhcnRz55qEaGlnaGxpZ2h05raI5oGv77yM5a6e546w5oyJ5LiL56e75Yqo6L+U5Zue57Si5byV5Yqf6IO944CCYWRkIGJ5IG9uZWZpc2gg5Yib5bu65LqOIDIwMjEtMTItMTEgMDk6NTBcclxuICAgICAgICAgIGNmZS5pbnN0YW5jZVtjaWRdLm9uKCdoaWdobGlnaHQnLCByZXNkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0SGlnaGxpZ2h0XCIsIHBhcmFtczp7dHlwZTpcImhpZ2hsaWdodFwiLCByZXM6cmVzZGF0YSwgaWQ6Y2lkfX0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0YUVDaGFydChjaWQsY2ZlLm9wdGlvbltjaWRdKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnVwZGF0YUVDaGFydChjaWQsY2ZlLm9wdGlvbltjaWRdKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgdXBkYXRhRUNoYXJ0KGNpZCxvcHRpb24pe1xyXG4gICAgICAvL+abv+aNom9wdGlvbuWGhWZvcm1hdOWxnuaAp+S4umZvcm1hdHRlcueahOmihOWumuS5ieaWueazlVxyXG4gICAgICBvcHRpb24gPSByZGZvcm1hdHRlckFzc2lnbihvcHRpb24sY2ZlLmZvcm1hdHRlcilcclxuICAgICAgaWYob3B0aW9uLnRvb2x0aXApe1xyXG4gICAgICAgIG9wdGlvbi50b29sdGlwLnNob3cgPSBvcHRpb24udG9vbHRpcFNob3c/dHJ1ZTpmYWxzZTtcclxuICAgICAgICBvcHRpb24udG9vbHRpcC5wb3NpdGlvbiA9IHRoaXMudG9vbHRpcFBvc2l0aW9uKClcclxuICAgICAgICAvL3Rvb2x0aXBGb3JtYXTmlrnms5XvvIzmm7/mjaLnu4Tku7bnmoR0b29sdGlwRm9ybWF05Li6Y29uZmlnLWVjaGFydHMuanPlhoXlr7nlupTnmoTmlrnms5VcclxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi50b29sdGlwRm9ybWF0ID09PSAnc3RyaW5nJyAmJiBjZmUuZm9ybWF0dGVyW29wdGlvbi50b29sdGlwRm9ybWF0XSkge1xyXG4gICAgICAgICAgb3B0aW9uLnRvb2x0aXAuZm9ybWF0dGVyID0gb3B0aW9uLnRvb2x0aXAuZm9ybWF0dGVyID8gb3B0aW9uLnRvb2x0aXAuZm9ybWF0dGVyIDogY2ZlLmZvcm1hdHRlcltvcHRpb24udG9vbHRpcEZvcm1hdF1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g6aKc6Imy5riQ5Y+Y5re75Yqg55qE5pa55rOVXHJcbiAgICAgIGlmIChvcHRpb24uc2VyaWVzKSB7XHJcbiAgICAgIFx0Zm9yIChsZXQgaSBpbiBvcHRpb24uc2VyaWVzKSB7XHJcbiAgICAgIFx0XHRsZXQgbGluZWFyR3JhZGllbnQgPSBvcHRpb24uc2VyaWVzW2ldLmxpbmVhckdyYWRpZW50XHJcbiAgICAgIFx0XHRpZiAobGluZWFyR3JhZGllbnQpIHtcclxuICAgICAgXHRcdFx0b3B0aW9uLnNlcmllc1tpXS5jb2xvciA9IG5ldyBlY2hhcnRzLmdyYXBoaWMuTGluZWFyR3JhZGllbnQobGluZWFyR3JhZGllbnRbMF0sbGluZWFyR3JhZGllbnRbMV0sbGluZWFyR3JhZGllbnRbMl0sbGluZWFyR3JhZGllbnRbM10sbGluZWFyR3JhZGllbnRbNF0pXHJcbiAgICAgIFx0XHR9XHJcbiAgICAgIFx0fVxyXG4gICAgICB9XHJcbiAgICAgIGNmZS5pbnN0YW5jZVtjaWRdLnNldE9wdGlvbihvcHRpb24sIG9wdGlvbi5ub3RNZXJnZSlcclxuICAgICAgY2ZlLmluc3RhbmNlW2NpZF0ub24oJ2ZpbmlzaGVkJywgZnVuY3Rpb24oKXtcclxuICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJjb21wbGV0ZVwiLHBhcmFtczp7dHlwZTpcImNvbXBsZXRlXCIsY29tcGxldGU6dHJ1ZSxpZDpjaWR9fSlcclxuICAgICAgICBpZihjZmUuaW5zdGFuY2VbY2lkXSl7XHJcbiAgICAgICAgICBjZmUuaW5zdGFuY2VbY2lkXS5vZmYoJ2ZpbmlzaGVkJylcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy/kv67lpI1pbml05Yid5aeL5YyW5a6e5L6L6I635Y+W5a696auY5LiN5q2j56Gu6Zeu6aKYXHJcbiAgICAgIGlmKFxyXG4gICAgICAgIHR5cGVvZiB0aGF0W2NpZF0uJGVsLmNoaWxkcmVuWzBdLmNsaWVudFdpZHRoICE9ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIE1hdGguYWJzKCB0aGF0W2NpZF0uJGVsLmNoaWxkcmVuWzBdLmNsaWVudFdpZHRoIC0gY2ZlLmluc3RhbmNlW2NpZF0uZ2V0V2lkdGgoKSApPjMgfHxcclxuICAgICAgICAgICAgTWF0aC5hYnMoIHRoYXRbY2lkXS4kZWwuY2hpbGRyZW5bMF0uY2xpZW50SGVpZ2h0IC0gY2ZlLmluc3RhbmNlW2NpZF0uZ2V0SGVpZ2h0KCkgKT4zXHJcbiAgICAgICAgICApXHJcbiAgICAgICl7dGhpcy5lY3Jlc2l6ZSgpO31cclxuICAgIH0sXHJcbiAgICB0b29sdGlwUG9zaXRpb24oKXtcclxuICAgICAgcmV0dXJuIChwb2ludCwgcGFyYW1zLCBkb20sIHJlY3QsIHNpemUpID0+IHtcclxuICAgICAgXHRsZXQgeCA9IHBvaW50WzBdXHJcbiAgICAgIFx0bGV0IHkgPSBwb2ludFsxXVxyXG4gICAgICBcdGxldCB2aWV3V2lkdGggPSBzaXplLnZpZXdTaXplWzBdXHJcbiAgICAgIFx0bGV0IHZpZXdIZWlnaHQgPSBzaXplLnZpZXdTaXplWzFdXHJcbiAgICAgIFx0bGV0IGJveFdpZHRoID0gc2l6ZS5jb250ZW50U2l6ZVswXVxyXG4gICAgICBcdGxldCBib3hIZWlnaHQgPSBzaXplLmNvbnRlbnRTaXplWzFdXHJcbiAgICAgIFx0bGV0IHBvc1ggPSB4ICsgMzAgXHJcbiAgICAgIFx0bGV0IHBvc1kgPSB5ICsgMzAgXHJcbiAgICAgIFx0aWYgKHBvc1ggKyBib3hXaWR0aCA+IHZpZXdXaWR0aCkgeyBcclxuICAgICAgXHRcdHBvc1ggPSB4IC0gYm94V2lkdGggLSAzMFxyXG4gICAgICBcdH1cclxuICAgICAgXHRpZiAocG9zWSArIGJveEhlaWdodCA+IHZpZXdIZWlnaHQpIHtcclxuICAgICAgXHRcdHBvc1kgPSB5IC0gYm94SGVpZ2h0IC0gMzBcclxuICAgICAgXHR9XHJcbiAgICAgIFx0cmV0dXJuIFtwb3NYLCBwb3NZXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy89PT09PT09PT09PT09PeS7peS4i+aYr3VDaGFydHPnmoTmlrnms5U9PT09PT09PT09PT09PT09PT09PVxyXG4gICAgdWNpbml0KG5ld1ZhbCwgb2xkVmFsLCBvd25lciwgaW5zdGFuY2Upe1xyXG4gICAgICBpZihKU09OLnN0cmluZ2lmeShuZXdWYWwpID09IEpTT04uc3RyaW5naWZ5KG9sZFZhbCkpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZighbmV3VmFsLmNhbnZhc0lkKXtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGNpZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3VmFsLmNhbnZhc0lkKSlcclxuICAgICAgdGhpcy5yaWQgPSBjaWRcclxuICAgICAgdGhhdFtjaWRdID0gdGhpcy4kb3duZXJJbnN0YW5jZSB8fCBpbnN0YW5jZVxyXG4gICAgICBjZnUub3B0aW9uW2NpZF0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXHJcbiAgICAgIGNmdS5vcHRpb25bY2lkXSA9IHJkZm9ybWF0dGVyQXNzaWduKGNmdS5vcHRpb25bY2lkXSxjZnUuZm9ybWF0dGVyKVxyXG4gICAgICBsZXQgY2FudmFzZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2lkKVxyXG4gICAgICBpZihjYW52YXNkb20gJiYgY2FudmFzZG9tLmNoaWxkcmVuWzBdKXtcclxuICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dCA9IGNhbnZhc2RvbS5jaGlsZHJlblswXS5nZXRDb250ZXh0KFwiMmRcIilcclxuICAgICAgICBpZihjZnUuaW5zdGFuY2VbY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0gJiYgY2Z1Lm9wdGlvbltjaWRdLnVwZGF0ZSA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0YVVDaGFydCgpXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0LnJlc3RvcmUoKTtcclxuICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQuc2F2ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm5ld1VDaGFydCgpXHJcbiAgICAgICAgICB9LDEwMClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBuZXdVQ2hhcnQoKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXSA9IG5ldyB1Q2hhcnRzUkQoY2Z1Lm9wdGlvbltjaWRdKVxyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS5hZGRFdmVudExpc3RlbmVyKCdyZW5kZXJDb21wbGV0ZScsICgpID0+IHtcclxuICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJjb21wbGV0ZVwiLHBhcmFtczp7dHlwZTpcImNvbXBsZXRlXCIsY29tcGxldGU6dHJ1ZSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5kZWxFdmVudExpc3RlbmVyKCdyZW5kZXJDb21wbGV0ZScpXHJcbiAgICAgIH0pO1xyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGxMZWZ0JywgKCkgPT4ge1xyXG4gICAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcInNjcm9sbExlZnRcIixwYXJhbXM6e3R5cGU6XCJzY3JvbGxMZWZ0XCIsc2Nyb2xsTGVmdDp0cnVlLGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgICB9KTtcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsUmlnaHQnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwic2Nyb2xsUmlnaHRcIixwYXJhbXM6e3R5cGU6XCJzY3JvbGxSaWdodFwiLHNjcm9sbFJpZ2h0OnRydWUsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHVwZGF0YVVDaGFydCgpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnVwZGF0ZURhdGEoY2Z1Lm9wdGlvbltjaWRdKVxyXG4gICAgfSxcclxuICAgIHRvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cykge1xyXG4gICAgICBpZiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IGl0ZW0uZGF0YVxyXG4gICAgICAgIGlmKHR5cGVvZiBpdGVtLmRhdGEgPT09IFwib2JqZWN0XCIpe1xyXG4gICAgICAgICAgZGF0YSA9IGl0ZW0uZGF0YS52YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2F0ZWdvcnkgKyAnICcgKyBpdGVtLm5hbWUgKyAnOicgKyBkYXRhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpdGVtLnByb3BlcnRpZXMgJiYgaXRlbS5wcm9wZXJ0aWVzLm5hbWUpIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLnByb3BlcnRpZXMubmFtZSA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUgKyAnOicgKyBpdGVtLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2hvd1Rvb2x0aXAoZSxjaWQpIHtcclxuICAgICAgbGV0IHRjID0gY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBDdXN0b21cclxuICAgICAgaWYgKHRjICYmIHRjICE9PSB1bmRlZmluZWQgJiYgdGMgIT09IG51bGwpIHtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0Yy54ID49IDAgJiYgdGMueSA+PSAwKSB7XHJcbiAgICAgICAgICBvZmZzZXQgPSB7IHg6IHRjLngsIHk6IHRjLnkgKyAxMCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zaG93VG9vbFRpcChlLCB7XHJcbiAgICAgICAgICBpbmRleDogdGMuaW5kZXgsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcclxuICAgICAgICAgIHRleHRMaXN0OiB0Yy50ZXh0TGlzdCxcclxuICAgICAgICAgIGZvcm1hdHRlcjogKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cykgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID09PSAnc3RyaW5nJyAmJiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XShpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zaG93VG9vbFRpcChlLCB7XHJcbiAgICAgICAgICBmb3JtYXR0ZXI6IChpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdCA9PT0gJ3N0cmluZycgJiYgY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0oaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b29sdGlwRGVmYXVsdChpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB0YXAoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9udGFwID0gY2Z1Lm9wdGlvbltjaWRdLm9udGFwXHJcbiAgICAgIGxldCB0b29sdGlwU2hvdyA9IGNmdS5vcHRpb25bY2lkXS50b29sdGlwU2hvd1xyXG4gICAgICBsZXQgdGFwTGVnZW5kID0gY2Z1Lm9wdGlvbltjaWRdLnRhcExlZ2VuZFxyXG4gICAgICBpZihvbnRhcCA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBsZXQgY3VycmVudEluZGV4PW51bGxcclxuICAgICAgbGV0IGxlZ2VuZEluZGV4PW51bGxcclxuICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICBsZXQgdG1wZSA9IHt9XHJcbiAgICAgIGlmKGUuZGV0YWlsLngpey8vdGFw5oiW6ICFY2xpY2vnmoTkuovku7ZcclxuICAgICAgICB0bXBlID0geyB4OiBlLmRldGFpbC54IC0gcmNoYXJ0ZG9tLmxlZnQsIHk6ZS5kZXRhaWwueSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgfWVsc2V7Ly9tb3VzZeeahOS6i+S7tlxyXG4gICAgICAgIHRtcGUgPSB7IHg6IGUuY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgfVxyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzID0gW107XHJcbiAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh0bXBlKVxyXG4gICAgICBjdXJyZW50SW5kZXg9Y2Z1Lmluc3RhbmNlW2NpZF0uZ2V0Q3VycmVudERhdGFJbmRleChlKVxyXG4gICAgICBsZWdlbmRJbmRleD1jZnUuaW5zdGFuY2VbY2lkXS5nZXRMZWdlbmREYXRhSW5kZXgoZSlcclxuICAgICAgaWYodGFwTGVnZW5kID09PSB0cnVlKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS50b3VjaExlZ2VuZChlKTtcclxuICAgICAgfVxyXG4gICAgICBpZih0b29sdGlwU2hvdz09dHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcChlLGNpZClcclxuICAgICAgfVxyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRJbmRleFwiLHBhcmFtczp7dHlwZTpcImdldEluZGV4XCIsZXZlbnQ6dG1wZSxjdXJyZW50SW5kZXg6Y3VycmVudEluZGV4LGxlZ2VuZEluZGV4OmxlZ2VuZEluZGV4LGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgfSxcclxuICAgIHRvdWNoU3RhcnQoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9udG91Y2ggPSBjZnUub3B0aW9uW2NpZF0ub250b3VjaFxyXG4gICAgICBpZihvbnRvdWNoID09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGlmKGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IHRydWUgJiYgZS50b3VjaGVzLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGxTdGFydChlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRUb3VjaFN0YXJ0XCIscGFyYW1zOnt0eXBlOlwidG91Y2hTdGFydFwiLGV2ZW50OmUuY2hhbmdlZFRvdWNoZXNbMF0saWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICB9LFxyXG4gICAgdG91Y2hNb3ZlKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGxldCBvbnRvdWNoID0gY2Z1Lm9wdGlvbltjaWRdLm9udG91Y2hcclxuICAgICAgaWYob250b3VjaCA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBpZihjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSB0cnVlICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID09IDEpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbChlKTtcclxuICAgICAgfVxyXG4gICAgICBpZihjZnUub3B0aW9uW2NpZF0ub250YXAgPT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gZmFsc2UgJiYgY2Z1Lm9wdGlvbltjaWRdLm9ubW92ZXRpcCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICAgIGxldCB0bXBlID0geyB4OiBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggLSByY2hhcnRkb20ubGVmdCwgeTplLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgLSByY2hhcnRkb20udG9wICsgcm9vdGRvbS50b3B9XHJcbiAgICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHRtcGUpXHJcbiAgICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBTaG93ID09PSB0cnVlKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSxjaWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKG9udG91Y2ggPT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBjZnUub3B0aW9uW2NpZF0ub256b29tID09PSB0cnVlICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID09IDIpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmRvYnVsZVpvb20oZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0VG91Y2hNb3ZlXCIscGFyYW1zOnt0eXBlOlwidG91Y2hNb3ZlXCIsZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgIH0sXHJcbiAgICB0b3VjaEVuZChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBsZXQgb250b3VjaCA9IGNmdS5vcHRpb25bY2lkXS5vbnRvdWNoXHJcbiAgICAgIGlmKG9udG91Y2ggPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLnRvdWNoZXMubGVuZ3RoID09IDApe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbEVuZChlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRUb3VjaEVuZFwiLHBhcmFtczp7dHlwZTpcInRvdWNoRW5kXCIsZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgIH0sXHJcbiAgICBtb3VzZURvd24oZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9ubW91c2UgPSBjZnUub3B0aW9uW2NpZF0ub25tb3VzZVxyXG4gICAgICBpZihvbm1vdXNlID09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGxldCByY2hhcnRkb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnVUMnK2NpZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgICAgbGV0IHRtcGUgPSB7fVxyXG4gICAgICB0bXBlID0geyB4OiBlLmNsaWVudFggLSByY2hhcnRkb20ubGVmdCwgeTplLmNsaWVudFkgLSByY2hhcnRkb20udG9wICsgcm9vdGRvbS50b3B9XHJcbiAgICAgIGUuY2hhbmdlZFRvdWNoZXMgPSBbXTtcclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHRtcGUpXHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbFN0YXJ0KGUpXHJcbiAgICAgIGNmdS5vcHRpb25bY2lkXS5tb3VzZWRvd249dHJ1ZTtcclxuICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0VG91Y2hTdGFydFwiLHBhcmFtczp7dHlwZTpcIm1vdXNlRG93blwiLGV2ZW50OnRtcGUsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICB9LFxyXG4gICAgbW91c2VNb3ZlKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGxldCBvbm1vdXNlID0gY2Z1Lm9wdGlvbltjaWRdLm9ubW91c2VcclxuICAgICAgbGV0IHRvb2x0aXBTaG93ID0gY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBTaG93XHJcbiAgICAgIGlmKG9ubW91c2UgPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICBsZXQgdG1wZSA9IHt9XHJcbiAgICAgIHRtcGUgPSB7IHg6IGUuY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcyA9IFtdO1xyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzLnVuc2hpZnQodG1wZSlcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLm1vdXNlZG93bil7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsKGUpXHJcbiAgICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0VG91Y2hNb3ZlXCIscGFyYW1zOnt0eXBlOlwibW91c2VNb3ZlXCIsZXZlbnQ6dG1wZSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgICAgfWVsc2UgaWYoY2Z1Lmluc3RhbmNlW2NpZF0pe1xyXG4gICAgICAgIGlmKHRvb2x0aXBTaG93PT10cnVlKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSxjaWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbW91c2VVcChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBsZXQgb25tb3VzZSA9IGNmdS5vcHRpb25bY2lkXS5vbm1vdXNlXHJcbiAgICAgIGlmKG9ubW91c2UgPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICBsZXQgdG1wZSA9IHt9XHJcbiAgICAgIHRtcGUgPSB7IHg6IGUuY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcyA9IFtdO1xyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzLnVuc2hpZnQodG1wZSlcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsRW5kKGUpXHJcbiAgICAgIGNmdS5vcHRpb25bY2lkXS5tb3VzZWRvd249ZmFsc2U7XHJcbiAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImdldFRvdWNoRW5kXCIscGFyYW1zOnt0eXBlOlwibW91c2VVcFwiLGV2ZW50OnRtcGUsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICB9LFxyXG4gIH1cclxufVxyXG48L3NjcmlwdD5cclxuPCEtLSAjZW5kaWYgLS0+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4uY2hhcnRzdmlldyB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleDogMTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\n"); /***/ }), /* 92 */ /*!************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js ***! \************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global, wx) { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 102)); var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ 103)); var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 15)); var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95)); var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4)); var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 105)); var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 17)); var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2)); var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 109)); var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 111)); var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 112)); var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ 113)); var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 117)); var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 118)); var _pages = _interopRequireDefault(__webpack_require__(/*! @/pages.json */ 119)); var _excluded = ["spaceAppId", "accessKey"]; function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { 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(_e34) { throw _e34; }, 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 = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e35) { didErr = true; err = _e35; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; } function _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); } function _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; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self && self; function t(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e; } function n(e, t, n) { return e(n = { path: t, exports: {}, require: function require(e, t) { return function () { throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs"); }(null == t && n.path); } }, n.exports), n.exports; } var s = n(function (e, t) { var n; e.exports = (n = n || function (e, t) { var n = Object.create || function () { function e() {} return function (t) { var n; return e.prototype = t, n = new e(), e.prototype = null, n; }; }(), s = {}, r = s.lib = {}, i = r.Base = { extend: function extend(e) { var t = n(this); return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function () { t.$super.init.apply(this, arguments); }), t.init.prototype = t, t.$super = this, t; }, create: function create() { var e = this.extend(); return e.init.apply(e, arguments), e; }, init: function init() {}, mixIn: function mixIn(e) { for (var t in e) { e.hasOwnProperty(t) && (this[t] = e[t]); } e.hasOwnProperty("toString") && (this.toString = e.toString); }, clone: function clone() { return this.init.prototype.extend(this); } }, o = r.WordArray = i.extend({ init: function init(e, n) { e = this.words = e || [], this.sigBytes = n != t ? n : 4 * e.length; }, toString: function toString(e) { return (e || c).stringify(this); }, concat: function concat(e) { var t = this.words, n = e.words, s = this.sigBytes, r = e.sigBytes; if (this.clamp(), s % 4) for (var i = 0; i < r; i++) { var o = n[i >>> 2] >>> 24 - i % 4 * 8 & 255; t[s + i >>> 2] |= o << 24 - (s + i) % 4 * 8; } else for (i = 0; i < r; i += 4) { t[s + i >>> 2] = n[i >>> 2]; } return this.sigBytes += r, this; }, clamp: function clamp() { var t = this.words, n = this.sigBytes; t[n >>> 2] &= 4294967295 << 32 - n % 4 * 8, t.length = e.ceil(n / 4); }, clone: function clone() { var e = i.clone.call(this); return e.words = this.words.slice(0), e; }, random: function random(t) { for (var n, s = [], r = function r(t) { t = t; var n = 987654321, s = 4294967295; return function () { var r = ((n = 36969 * (65535 & n) + (n >> 16) & s) << 16) + (t = 18e3 * (65535 & t) + (t >> 16) & s) & s; return r /= 4294967296, (r += .5) * (e.random() > .5 ? 1 : -1); }; }, i = 0; i < t; i += 4) { var a = r(4294967296 * (n || e.random())); n = 987654071 * a(), s.push(4294967296 * a() | 0); } return new o.init(s, t); } }), a = s.enc = {}, c = a.Hex = { stringify: function stringify(e) { for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) { var i = t[r >>> 2] >>> 24 - r % 4 * 8 & 255; s.push((i >>> 4).toString(16)), s.push((15 & i).toString(16)); } return s.join(""); }, parse: function parse(e) { for (var t = e.length, n = [], s = 0; s < t; s += 2) { n[s >>> 3] |= parseInt(e.substr(s, 2), 16) << 24 - s % 8 * 4; } return new o.init(n, t / 2); } }, u = a.Latin1 = { stringify: function stringify(e) { for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) { var i = t[r >>> 2] >>> 24 - r % 4 * 8 & 255; s.push(String.fromCharCode(i)); } return s.join(""); }, parse: function parse(e) { for (var t = e.length, n = [], s = 0; s < t; s++) { n[s >>> 2] |= (255 & e.charCodeAt(s)) << 24 - s % 4 * 8; } return new o.init(n, t); } }, l = a.Utf8 = { stringify: function stringify(e) { try { return decodeURIComponent(escape(u.stringify(e))); } catch (e) { throw new Error("Malformed UTF-8 data"); } }, parse: function parse(e) { return u.parse(unescape(encodeURIComponent(e))); } }, h = r.BufferedBlockAlgorithm = i.extend({ reset: function reset() { this._data = new o.init(), this._nDataBytes = 0; }, _append: function _append(e) { "string" == typeof e && (e = l.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes; }, _process: function _process(t) { var n = this._data, s = n.words, r = n.sigBytes, i = this.blockSize, a = r / (4 * i), c = (a = t ? e.ceil(a) : e.max((0 | a) - this._minBufferSize, 0)) * i, u = e.min(4 * c, r); if (c) { for (var l = 0; l < c; l += i) { this._doProcessBlock(s, l); } var h = s.splice(0, c); n.sigBytes -= u; } return new o.init(h, u); }, clone: function clone() { var e = i.clone.call(this); return e._data = this._data.clone(), e; }, _minBufferSize: 0 }); r.Hasher = h.extend({ cfg: i.extend(), init: function init(e) { this.cfg = this.cfg.extend(e), this.reset(); }, reset: function reset() { h.reset.call(this), this._doReset(); }, update: function update(e) { return this._append(e), this._process(), this; }, finalize: function finalize(e) { return e && this._append(e), this._doFinalize(); }, blockSize: 16, _createHelper: function _createHelper(e) { return function (t, n) { return new e.init(n).finalize(t); }; }, _createHmacHelper: function _createHmacHelper(e) { return function (t, n) { return new d.HMAC.init(e, n).finalize(t); }; } }); var d = s.algo = {}; return s; }(Math), n); }), r = s, i = (n(function (e, t) { var n; e.exports = (n = r, function (e) { var t = n, s = t.lib, r = s.WordArray, i = s.Hasher, o = t.algo, a = []; !function () { for (var t = 0; t < 64; t++) { a[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0; } }(); var c = o.MD5 = i.extend({ _doReset: function _doReset() { this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]); }, _doProcessBlock: function _doProcessBlock(e, t) { for (var n = 0; n < 16; n++) { var s = t + n, r = e[s]; e[s] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8); } var i = this._hash.words, o = e[t + 0], c = e[t + 1], p = e[t + 2], f = e[t + 3], g = e[t + 4], m = e[t + 5], y = e[t + 6], _ = e[t + 7], w = e[t + 8], v = e[t + 9], I = e[t + 10], S = e[t + 11], b = e[t + 12], k = e[t + 13], A = e[t + 14], P = e[t + 15], T = i[0], C = i[1], x = i[2], O = i[3]; T = u(T, C, x, O, o, 7, a[0]), O = u(O, T, C, x, c, 12, a[1]), x = u(x, O, T, C, p, 17, a[2]), C = u(C, x, O, T, f, 22, a[3]), T = u(T, C, x, O, g, 7, a[4]), O = u(O, T, C, x, m, 12, a[5]), x = u(x, O, T, C, y, 17, a[6]), C = u(C, x, O, T, _, 22, a[7]), T = u(T, C, x, O, w, 7, a[8]), O = u(O, T, C, x, v, 12, a[9]), x = u(x, O, T, C, I, 17, a[10]), C = u(C, x, O, T, S, 22, a[11]), T = u(T, C, x, O, b, 7, a[12]), O = u(O, T, C, x, k, 12, a[13]), x = u(x, O, T, C, A, 17, a[14]), T = l(T, C = u(C, x, O, T, P, 22, a[15]), x, O, c, 5, a[16]), O = l(O, T, C, x, y, 9, a[17]), x = l(x, O, T, C, S, 14, a[18]), C = l(C, x, O, T, o, 20, a[19]), T = l(T, C, x, O, m, 5, a[20]), O = l(O, T, C, x, I, 9, a[21]), x = l(x, O, T, C, P, 14, a[22]), C = l(C, x, O, T, g, 20, a[23]), T = l(T, C, x, O, v, 5, a[24]), O = l(O, T, C, x, A, 9, a[25]), x = l(x, O, T, C, f, 14, a[26]), C = l(C, x, O, T, w, 20, a[27]), T = l(T, C, x, O, k, 5, a[28]), O = l(O, T, C, x, p, 9, a[29]), x = l(x, O, T, C, _, 14, a[30]), T = h(T, C = l(C, x, O, T, b, 20, a[31]), x, O, m, 4, a[32]), O = h(O, T, C, x, w, 11, a[33]), x = h(x, O, T, C, S, 16, a[34]), C = h(C, x, O, T, A, 23, a[35]), T = h(T, C, x, O, c, 4, a[36]), O = h(O, T, C, x, g, 11, a[37]), x = h(x, O, T, C, _, 16, a[38]), C = h(C, x, O, T, I, 23, a[39]), T = h(T, C, x, O, k, 4, a[40]), O = h(O, T, C, x, o, 11, a[41]), x = h(x, O, T, C, f, 16, a[42]), C = h(C, x, O, T, y, 23, a[43]), T = h(T, C, x, O, v, 4, a[44]), O = h(O, T, C, x, b, 11, a[45]), x = h(x, O, T, C, P, 16, a[46]), T = d(T, C = h(C, x, O, T, p, 23, a[47]), x, O, o, 6, a[48]), O = d(O, T, C, x, _, 10, a[49]), x = d(x, O, T, C, A, 15, a[50]), C = d(C, x, O, T, m, 21, a[51]), T = d(T, C, x, O, b, 6, a[52]), O = d(O, T, C, x, f, 10, a[53]), x = d(x, O, T, C, I, 15, a[54]), C = d(C, x, O, T, c, 21, a[55]), T = d(T, C, x, O, w, 6, a[56]), O = d(O, T, C, x, P, 10, a[57]), x = d(x, O, T, C, y, 15, a[58]), C = d(C, x, O, T, k, 21, a[59]), T = d(T, C, x, O, g, 6, a[60]), O = d(O, T, C, x, S, 10, a[61]), x = d(x, O, T, C, p, 15, a[62]), C = d(C, x, O, T, v, 21, a[63]), i[0] = i[0] + T | 0, i[1] = i[1] + C | 0, i[2] = i[2] + x | 0, i[3] = i[3] + O | 0; }, _doFinalize: function _doFinalize() { var t = this._data, n = t.words, s = 8 * this._nDataBytes, r = 8 * t.sigBytes; n[r >>> 5] |= 128 << 24 - r % 32; var i = e.floor(s / 4294967296), o = s; n[15 + (r + 64 >>> 9 << 4)] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), n[14 + (r + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (n.length + 1), this._process(); for (var a = this._hash, c = a.words, u = 0; u < 4; u++) { var l = c[u]; c[u] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); } return a; }, clone: function clone() { var e = i.clone.call(this); return e._hash = this._hash.clone(), e; } }); function u(e, t, n, s, r, i, o) { var a = e + (t & n | ~t & s) + r + o; return (a << i | a >>> 32 - i) + t; } function l(e, t, n, s, r, i, o) { var a = e + (t & s | n & ~s) + r + o; return (a << i | a >>> 32 - i) + t; } function h(e, t, n, s, r, i, o) { var a = e + (t ^ n ^ s) + r + o; return (a << i | a >>> 32 - i) + t; } function d(e, t, n, s, r, i, o) { var a = e + (n ^ (t | ~s)) + r + o; return (a << i | a >>> 32 - i) + t; } t.MD5 = i._createHelper(c), t.HmacMD5 = i._createHmacHelper(c); }(Math), n.MD5); }), n(function (e, t) { var n; e.exports = (n = r, void function () { var e = n, t = e.lib.Base, s = e.enc.Utf8; e.algo.HMAC = t.extend({ init: function init(e, t) { e = this._hasher = new e.init(), "string" == typeof t && (t = s.parse(t)); var n = e.blockSize, r = 4 * n; t.sigBytes > r && (t = e.finalize(t)), t.clamp(); for (var i = this._oKey = t.clone(), o = this._iKey = t.clone(), a = i.words, c = o.words, u = 0; u < n; u++) { a[u] ^= 1549556828, c[u] ^= 909522486; } i.sigBytes = o.sigBytes = r, this.reset(); }, reset: function reset() { var e = this._hasher; e.reset(), e.update(this._iKey); }, update: function update(e) { return this._hasher.update(e), this; }, finalize: function finalize(e) { var t = this._hasher, n = t.finalize(e); return t.reset(), t.finalize(this._oKey.clone().concat(n)); } }); }()); }), n(function (e, t) { e.exports = r.HmacMD5; })), o = n(function (e, t) { e.exports = r.enc.Utf8; }), a = n(function (e, t) { var n; e.exports = (n = r, function () { var e = n, t = e.lib.WordArray; function s(e, n, s) { for (var r = [], i = 0, o = 0; o < n; o++) { if (o % 4) { var a = s[e.charCodeAt(o - 1)] << o % 4 * 2, c = s[e.charCodeAt(o)] >>> 6 - o % 4 * 2; r[i >>> 2] |= (a | c) << 24 - i % 4 * 8, i++; } } return t.create(r, i); } e.enc.Base64 = { stringify: function stringify(e) { var t = e.words, n = e.sigBytes, s = this._map; e.clamp(); for (var r = [], i = 0; i < n; i += 3) { for (var o = (t[i >>> 2] >>> 24 - i % 4 * 8 & 255) << 16 | (t[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255) << 8 | t[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, a = 0; a < 4 && i + .75 * a < n; a++) { r.push(s.charAt(o >>> 6 * (3 - a) & 63)); } } var c = s.charAt(64); if (c) for (; r.length % 4;) { r.push(c); } return r.join(""); }, parse: function parse(e) { var t = e.length, n = this._map, r = this._reverseMap; if (!r) { r = this._reverseMap = []; for (var i = 0; i < n.length; i++) { r[n.charCodeAt(i)] = i; } } var o = n.charAt(64); if (o) { var a = e.indexOf(o); -1 !== a && (t = a); } return s(e, t, r); }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" }; }(), n.enc.Base64); }); var c = "FUNCTION", u = "OBJECT", l = "CLIENT_DB", h = "pending", d = "fulfilled", p = "rejected"; function f(e) { return Object.prototype.toString.call(e).slice(8, -1).toLowerCase(); } function g(e) { return "object" === f(e); } function m(e) { return "function" == typeof e; } function y(e) { return function () { try { return e.apply(e, arguments); } catch (e) { console.error(e); } }; } var _ = "REJECTED", w = "NOT_PENDING"; var v = /*#__PURE__*/function () { function v() { var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref.createPromise, _ref$retryRule = _ref.retryRule, t = _ref$retryRule === void 0 ? _ : _ref$retryRule; (0, _classCallCheck2.default)(this, v); this.createPromise = e, this.status = null, this.promise = null, this.retryRule = t; } (0, _createClass2.default)(v, [{ key: "needRetry", get: function get() { if (!this.status) return !0; switch (this.retryRule) { case _: return this.status === p; case w: return this.status !== h; } } }, { key: "exec", value: function exec() { var _this = this; return this.needRetry ? (this.status = h, this.promise = this.createPromise().then(function (e) { return _this.status = d, Promise.resolve(e); }, function (e) { return _this.status = p, Promise.reject(e); }), this.promise) : this.promise; } }]); return v; }(); function I(e) { return e && "string" == typeof e ? JSON.parse(e) : e; } var S = "development" === "development", b = "app-plus", k = "true" === false || !0 === false, A = I([]), P = "h5" === b ? "web" : "app-plus" === b ? "app" : b, T = I(undefined), C = I([]) || [], x = true; var O = ""; try { O = (__webpack_require__(/*! uni-stat-config */ 120).default || __webpack_require__(/*! uni-stat-config */ 120)).appid; } catch (e) {} var E = {}; function L(e) { var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var n, s; return n = E, s = e, Object.prototype.hasOwnProperty.call(n, s) || (E[e] = t), E[e]; } "app" === P && (E = uni._globalUniCloudObj ? uni._globalUniCloudObj : uni._globalUniCloudObj = {}); var R = ["invoke", "success", "fail", "complete"], U = L("_globalUniCloudInterceptor"); function N(e, t) { U[e] || (U[e] = {}), g(t) && Object.keys(t).forEach(function (n) { R.indexOf(n) > -1 && function (e, t, n) { var s = U[e][t]; s || (s = U[e][t] = []), -1 === s.indexOf(n) && m(n) && s.push(n); }(e, n, t[n]); }); } function D(e, t) { U[e] || (U[e] = {}), g(t) ? Object.keys(t).forEach(function (n) { R.indexOf(n) > -1 && function (e, t, n) { var s = U[e][t]; if (!s) return; var r = s.indexOf(n); r > -1 && s.splice(r, 1); }(e, n, t[n]); }) : delete U[e]; } function M(e, t) { return e && 0 !== e.length ? e.reduce(function (e, n) { return e.then(function () { return n(t); }); }, Promise.resolve()) : Promise.resolve(); } function q(e, t) { return U[e] && U[e][t] || []; } function F(e) { N("callObject", e); } var K = L("_globalUniCloudListener"), j = "response", B = "needLogin", $ = "refreshToken", W = "clientdb", H = "cloudfunction", z = "cloudobject"; function J(e) { return K[e] || (K[e] = []), K[e]; } function V(e, t) { var n = J(e); n.includes(t) || n.push(t); } function G(e, t) { var n = J(e), s = n.indexOf(t); -1 !== s && n.splice(s, 1); } function Y(e, t) { var n = J(e); for (var _e2 = 0; _e2 < n.length; _e2++) { (0, n[_e2])(t); } } var Q, X = !1; function Z() { return Q || (Q = new Promise(function (e) { X && e(), function t() { if ("function" == typeof getCurrentPages) { var _t2 = getCurrentPages(); _t2 && _t2[0] && (X = !0, e()); } X || setTimeout(function () { t(); }, 30); }(); }), Q); } function ee(e) { var t = {}; for (var _n2 in e) { var _s2 = e[_n2]; m(_s2) && (t[_n2] = y(_s2)); } return t; } var te = /*#__PURE__*/function (_Error) { (0, _inherits2.default)(te, _Error); var _super = _createSuper(te); function te(e) { var _this2; (0, _classCallCheck2.default)(this, te); _this2 = _super.call(this, e.message), _this2.errMsg = e.message || e.errMsg || "unknown system error", _this2.code = _this2.errCode = e.code || e.errCode || "SYSTEM_ERROR", _this2.errSubject = _this2.subject = e.subject || e.errSubject, _this2.cause = e.cause, _this2.requestId = e.requestId; return _this2; } (0, _createClass2.default)(te, [{ key: "toJson", value: function toJson() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; if (!(e >= 10)) return e++, { errCode: this.errCode, errMsg: this.errMsg, errSubject: this.errSubject, cause: this.cause && this.cause.toJson ? this.cause.toJson(e) : this.cause }; } }]); return te; }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error)); var ne = { request: function request(e) { return uni.request(e); }, uploadFile: function uploadFile(e) { return uni.uploadFile(e); }, setStorageSync: function setStorageSync(e, t) { return uni.setStorageSync(e, t); }, getStorageSync: function getStorageSync(e) { return uni.getStorageSync(e); }, removeStorageSync: function removeStorageSync(e) { return uni.removeStorageSync(e); }, clearStorageSync: function clearStorageSync() { return uni.clearStorageSync(); } }; function se() { return { token: ne.getStorageSync("uni_id_token") || ne.getStorageSync("uniIdToken"), tokenExpired: ne.getStorageSync("uni_id_token_expired") }; } function re() { var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref2.token, t = _ref2.tokenExpired; e && ne.setStorageSync("uni_id_token", e), t && ne.setStorageSync("uni_id_token_expired", t); } var ie, oe; function ae() { return ie || (ie = uni.getSystemInfoSync()), ie; } function ce() { var e, t; try { if (uni.getLaunchOptionsSync) { if (uni.getLaunchOptionsSync.toString().indexOf("not yet implemented") > -1) return; var _uni$getLaunchOptions = uni.getLaunchOptionsSync(), _n3 = _uni$getLaunchOptions.scene, _s3 = _uni$getLaunchOptions.channel; e = _s3, t = _n3; } } catch (e) {} return { channel: e, scene: t }; } function ue() { var e = uni.getLocale && uni.getLocale() || "en"; if (oe) return _objectSpread(_objectSpread({}, oe), {}, { locale: e, LOCALE: e }); var t = ae(), n = t.deviceId, s = t.osName, r = t.uniPlatform, i = t.appId, o = ["pixelRatio", "brand", "model", "system", "language", "version", "platform", "host", "SDKVersion", "swanNativeVersion", "app", "AppPlatform", "fontSizeSetting"]; for (var _e3 = 0; _e3 < o.length; _e3++) { delete t[o[_e3]]; } return oe = _objectSpread(_objectSpread({ PLATFORM: r, OS: s, APPID: i, DEVICEID: n }, ce()), t), _objectSpread(_objectSpread({}, oe), {}, { locale: e, LOCALE: e }); } var le = { sign: function sign(e, t) { var n = ""; return Object.keys(e).sort().forEach(function (t) { e[t] && (n = n + "&" + t + "=" + e[t]); }), n = n.slice(1), i(n, t).toString(); }, wrappedRequest: function wrappedRequest(e, t) { return new Promise(function (n, s) { t(Object.assign(e, { complete: function complete(e) { e || (e = {}), S && "web" === P && e.errMsg && 0 === e.errMsg.indexOf("request:fail") && console.warn("发布H5,需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5"); var t = e.data && e.data.header && e.data.header["x-serverless-request-id"] || e.header && e.header["request-id"]; if (!e.statusCode || e.statusCode >= 400) return s(new te({ code: "SYS_ERR", message: e.errMsg || "request:fail", requestId: t })); var r = e.data; if (r.error) return s(new te({ code: r.error.code, message: r.error.message, requestId: t })); r.result = r.data, r.requestId = t, delete r.data, n(r); } })); }); }, toBase64: function toBase64(e) { return a.stringify(o.parse(e)); } }; var he = /*#__PURE__*/function () { function he(e) { var _this3 = this; (0, _classCallCheck2.default)(this, he); ["spaceId", "clientSecret"].forEach(function (t) { if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error("".concat(t, " required")); }), this.config = Object.assign({}, { endpoint: 0 === e.spaceId.indexOf("mp-") ? "https://api.next.bspapp.com" : "https://api.bspapp.com" }, e), this.config.provider = "aliyun", this.config.requestUrl = this.config.endpoint + "/client", this.config.envType = this.config.envType || "public", this.config.accessTokenKey = "access_token_" + this.config.spaceId, this.adapter = ne, this._getAccessTokenPromiseHub = new v({ createPromise: function createPromise() { return _this3.requestAuth(_this3.setupRequest({ method: "serverless.auth.user.anonymousAuthorize", params: "{}" }, "auth")).then(function (e) { if (!e.result || !e.result.accessToken) throw new te({ code: "AUTH_FAILED", message: "获取accessToken失败" }); _this3.setAccessToken(e.result.accessToken); }); }, retryRule: w }); } (0, _createClass2.default)(he, [{ key: "hasAccessToken", get: function get() { return !!this.accessToken; } }, { key: "setAccessToken", value: function setAccessToken(e) { this.accessToken = e; } }, { key: "requestWrapped", value: function requestWrapped(e) { return le.wrappedRequest(e, this.adapter.request); } }, { key: "requestAuth", value: function requestAuth(e) { return this.requestWrapped(e); } }, { key: "request", value: function request(e, t) { var _this4 = this; return Promise.resolve().then(function () { return _this4.hasAccessToken ? t ? _this4.requestWrapped(e) : _this4.requestWrapped(e).catch(function (t) { return new Promise(function (e, n) { !t || "GATEWAY_INVALID_TOKEN" !== t.code && "InvalidParameter.InvalidToken" !== t.code ? n(t) : e(); }).then(function () { return _this4.getAccessToken(); }).then(function () { var t = _this4.rebuildRequest(e); return _this4.request(t, !0); }); }) : _this4.getAccessToken().then(function () { var t = _this4.rebuildRequest(e); return _this4.request(t, !0); }); }); } }, { key: "rebuildRequest", value: function rebuildRequest(e) { var t = Object.assign({}, e); return t.data.token = this.accessToken, t.header["x-basement-token"] = this.accessToken, t.header["x-serverless-sign"] = le.sign(t.data, this.config.clientSecret), t; } }, { key: "setupRequest", value: function setupRequest(e, t) { var n = Object.assign({}, e, { spaceId: this.config.spaceId, timestamp: Date.now() }), s = { "Content-Type": "application/json" }; return "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret), { url: this.config.requestUrl, method: "POST", data: n, dataType: "json", header: s }; } }, { key: "getAccessToken", value: function getAccessToken() { return this._getAccessTokenPromiseHub.exec(); } }, { key: "authorize", value: function () { var _authorize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() { return _regenerator.default.wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return this.getAccessToken(); case 2: case "end": return _context.stop(); } } }, _callee, this); })); function authorize() { return _authorize.apply(this, arguments); } return authorize; }() }, { key: "callFunction", value: function callFunction(e) { var t = { method: "serverless.function.runtime.invoke", params: JSON.stringify({ functionTarget: e.name, functionArgs: e.data || {} }) }; return this.request(this.setupRequest(t)); } }, { key: "getOSSUploadOptionsFromPath", value: function getOSSUploadOptionsFromPath(e) { var t = { method: "serverless.file.resource.generateProximalSign", params: JSON.stringify(e) }; return this.request(this.setupRequest(t)); } }, { key: "uploadFileToOSS", value: function uploadFileToOSS(_ref3) { var _this5 = this; var e = _ref3.url, t = _ref3.formData, n = _ref3.name, s = _ref3.filePath, r = _ref3.fileType, i = _ref3.onUploadProgress; return new Promise(function (o, a) { var c = _this5.adapter.uploadFile({ url: e, formData: t, name: n, filePath: s, fileType: r, header: { "X-OSS-server-side-encrpytion": "AES256" }, success: function success(e) { e && e.statusCode < 400 ? o(e) : a(new te({ code: "UPLOAD_FAILED", message: "文件上传失败" })); }, fail: function fail(e) { a(new te({ code: e.code || "UPLOAD_FAILED", message: e.message || e.errMsg || "文件上传失败" })); } }); "function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) { i({ loaded: e.totalBytesSent, total: e.totalBytesExpectedToSend }); }); }); } }, { key: "reportOSSUpload", value: function reportOSSUpload(e) { var t = { method: "serverless.file.resource.report", params: JSON.stringify(e) }; return this.request(this.setupRequest(t)); } }, { key: "uploadFile", value: function () { var _uploadFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref4) { var e, t, _ref4$fileType, n, _ref4$cloudPathAsReal, s, r, i, o, a, c, u, l, h, d, p, g, m, y, _, _e4, w; return _regenerator.default.wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: e = _ref4.filePath, t = _ref4.cloudPath, _ref4$fileType = _ref4.fileType, n = _ref4$fileType === void 0 ? "image" : _ref4$fileType, _ref4$cloudPathAsReal = _ref4.cloudPathAsRealPath, s = _ref4$cloudPathAsReal === void 0 ? !1 : _ref4$cloudPathAsReal, r = _ref4.onUploadProgress, i = _ref4.config; if (!("string" !== f(t))) { _context2.next = 3; break; } throw new te({ code: "INVALID_PARAM", message: "cloudPath必须为字符串类型" }); case 3: if (t = t.trim()) { _context2.next = 5; break; } throw new te({ code: "INVALID_PARAM", message: "cloudPath不可为空" }); case 5: if (!/:\/\//.test(t)) { _context2.next = 7; break; } throw new te({ code: "INVALID_PARAM", message: "cloudPath不合法" }); case 7: o = i && i.envType || this.config.envType; if (!(s && ("/" !== t[0] && (t = "/" + t), t.indexOf("\\") > -1))) { _context2.next = 10; break; } throw new te({ code: "INVALID_PARAM", message: "使用cloudPath作为路径时,cloudPath不可包含“\\”" }); case 10: _context2.next = 12; return this.getOSSUploadOptionsFromPath({ env: o, filename: s ? t.split("/").pop() : t, fileId: s ? t : void 0 }); case 12: a = _context2.sent.result; c = "https://" + a.cdnDomain + "/" + a.ossPath; u = a.securityToken; l = a.accessKeyId; h = a.signature; d = a.host; p = a.ossPath; g = a.id; m = a.policy; y = a.ossCallbackUrl; _ = { "Cache-Control": "max-age=2592000", "Content-Disposition": "attachment", OSSAccessKeyId: l, Signature: h, host: d, id: g, key: p, policy: m, success_action_status: 200 }; if (u && (_["x-oss-security-token"] = u), y) { _e4 = JSON.stringify({ callbackUrl: y, callbackBody: JSON.stringify({ fileId: g, spaceId: this.config.spaceId }), callbackBodyType: "application/json" }); _.callback = le.toBase64(_e4); } w = { url: "https://" + a.host, formData: _, fileName: "file", name: "file", filePath: e, fileType: n }; _context2.next = 27; return this.uploadFileToOSS(Object.assign({}, w, { onUploadProgress: r })); case 27: if (!y) { _context2.next = 29; break; } return _context2.abrupt("return", { success: !0, filePath: e, fileID: c }); case 29: _context2.next = 31; return this.reportOSSUpload({ id: g }); case 31: if (!_context2.sent.success) { _context2.next = 33; break; } return _context2.abrupt("return", { success: !0, filePath: e, fileID: c }); case 33: throw new te({ code: "UPLOAD_FAILED", message: "文件上传失败" }); case 34: case "end": return _context2.stop(); } } }, _callee2, this); })); function uploadFile(_x) { return _uploadFile.apply(this, arguments); } return uploadFile; }() }, { key: "getTempFileURL", value: function getTempFileURL() { var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref5.fileList; return new Promise(function (t, n) { Array.isArray(e) && 0 !== e.length || n(new te({ code: "INVALID_PARAM", message: "fileList的元素必须是非空的字符串" })), t({ fileList: e.map(function (e) { return { fileID: e, tempFileURL: e }; }) }); }); } }, { key: "getFileInfo", value: function () { var _getFileInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() { var _ref6, e, t, _args3 = arguments; return _regenerator.default.wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: _ref6 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, e = _ref6.fileList; if (!(!Array.isArray(e) || 0 === e.length)) { _context3.next = 3; break; } throw new te({ code: "INVALID_PARAM", message: "fileList的元素必须是非空的字符串" }); case 3: t = { method: "serverless.file.resource.info", params: JSON.stringify({ id: e.map(function (e) { return e.split("?")[0]; }).join(",") }) }; _context3.next = 6; return this.request(this.setupRequest(t)); case 6: _context3.t0 = _context3.sent.result; return _context3.abrupt("return", { fileList: _context3.t0 }); case 8: case "end": return _context3.stop(); } } }, _callee3, this); })); function getFileInfo() { return _getFileInfo.apply(this, arguments); } return getFileInfo; }() }]); return he; }(); var de = { init: function init(e) { var t = new he(e), n = { signInAnonymously: function signInAnonymously() { return t.authorize(); }, getLoginState: function getLoginState() { return Promise.resolve(!1); } }; return t.auth = function () { return n; }, t.customAuth = t.auth, t; } }; var pe = "undefined" != typeof location && "http:" === location.protocol ? "http:" : "https:"; var fe; !function (e) { e.local = "local", e.none = "none", e.session = "session"; }(fe || (fe = {})); var ge = function ge() {}, me = n(function (e, t) { var n; e.exports = (n = r, function (e) { var t = n, s = t.lib, r = s.WordArray, i = s.Hasher, o = t.algo, a = [], c = []; !function () { function t(t) { for (var n = e.sqrt(t), s = 2; s <= n; s++) { if (!(t % s)) return !1; } return !0; } function n(e) { return 4294967296 * (e - (0 | e)) | 0; } for (var s = 2, r = 0; r < 64;) { t(s) && (r < 8 && (a[r] = n(e.pow(s, .5))), c[r] = n(e.pow(s, 1 / 3)), r++), s++; } }(); var u = [], l = o.SHA256 = i.extend({ _doReset: function _doReset() { this._hash = new r.init(a.slice(0)); }, _doProcessBlock: function _doProcessBlock(e, t) { for (var n = this._hash.words, s = n[0], r = n[1], i = n[2], o = n[3], a = n[4], l = n[5], h = n[6], d = n[7], p = 0; p < 64; p++) { if (p < 16) u[p] = 0 | e[t + p];else { var f = u[p - 15], g = (f << 25 | f >>> 7) ^ (f << 14 | f >>> 18) ^ f >>> 3, m = u[p - 2], y = (m << 15 | m >>> 17) ^ (m << 13 | m >>> 19) ^ m >>> 10; u[p] = g + u[p - 7] + y + u[p - 16]; } var _ = s & r ^ s & i ^ r & i, w = (s << 30 | s >>> 2) ^ (s << 19 | s >>> 13) ^ (s << 10 | s >>> 22), v = d + ((a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25)) + (a & l ^ ~a & h) + c[p] + u[p]; d = h, h = l, l = a, a = o + v | 0, o = i, i = r, r = s, s = v + (w + _) | 0; } n[0] = n[0] + s | 0, n[1] = n[1] + r | 0, n[2] = n[2] + i | 0, n[3] = n[3] + o | 0, n[4] = n[4] + a | 0, n[5] = n[5] + l | 0, n[6] = n[6] + h | 0, n[7] = n[7] + d | 0; }, _doFinalize: function _doFinalize() { var t = this._data, n = t.words, s = 8 * this._nDataBytes, r = 8 * t.sigBytes; return n[r >>> 5] |= 128 << 24 - r % 32, n[14 + (r + 64 >>> 9 << 4)] = e.floor(s / 4294967296), n[15 + (r + 64 >>> 9 << 4)] = s, t.sigBytes = 4 * n.length, this._process(), this._hash; }, clone: function clone() { var e = i.clone.call(this); return e._hash = this._hash.clone(), e; } }); t.SHA256 = i._createHelper(l), t.HmacSHA256 = i._createHmacHelper(l); }(Math), n.SHA256); }), ye = me, _e = n(function (e, t) { e.exports = r.HmacSHA256; }); var we = function we() { var e; if (!Promise) { e = function e() {}, e.promise = {}; var _t3 = function _t3() { throw new te({ message: 'Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.' }); }; return Object.defineProperty(e.promise, "then", { get: _t3 }), Object.defineProperty(e.promise, "catch", { get: _t3 }), e; } var t = new Promise(function (t, n) { e = function e(_e5, s) { return _e5 ? n(_e5) : t(s); }; }); return e.promise = t, e; }; function ve(e) { return void 0 === e; } function Ie(e) { return "[object Null]" === Object.prototype.toString.call(e); } var Se; function be(e) { var t = (n = e, "[object Array]" === Object.prototype.toString.call(n) ? e : [e]); var n; var _iterator = _createForOfIteratorHelper(t), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var _e6 = _step.value; var _t4 = _e6.isMatch, _n4 = _e6.genAdapter, _s4 = _e6.runtime; if (_t4()) return { adapter: _n4(), runtime: _s4 }; } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } } !function (e) { e.WEB = "web", e.WX_MP = "wx_mp"; }(Se || (Se = {})); var ke = { adapter: null, runtime: void 0 }, Ae = ["anonymousUuidKey"]; var Pe = /*#__PURE__*/function (_ge) { (0, _inherits2.default)(Pe, _ge); var _super2 = _createSuper(Pe); function Pe() { var _this6; (0, _classCallCheck2.default)(this, Pe); _this6 = _super2.call(this), ke.adapter.root.tcbObject || (ke.adapter.root.tcbObject = {}); return _this6; } (0, _createClass2.default)(Pe, [{ key: "setItem", value: function setItem(e, t) { ke.adapter.root.tcbObject[e] = t; } }, { key: "getItem", value: function getItem(e) { return ke.adapter.root.tcbObject[e]; } }, { key: "removeItem", value: function removeItem(e) { delete ke.adapter.root.tcbObject[e]; } }, { key: "clear", value: function clear() { delete ke.adapter.root.tcbObject; } }]); return Pe; }(ge); function Te(e, t) { switch (e) { case "local": return t.localStorage || new Pe(); case "none": return new Pe(); default: return t.sessionStorage || new Pe(); } } var Ce = /*#__PURE__*/function () { function Ce(e) { (0, _classCallCheck2.default)(this, Ce); if (!this._storage) { this._persistence = ke.adapter.primaryStorage || e.persistence, this._storage = Te(this._persistence, ke.adapter); var _t5 = "access_token_".concat(e.env), _n5 = "access_token_expire_".concat(e.env), _s5 = "refresh_token_".concat(e.env), _r = "anonymous_uuid_".concat(e.env), _i = "login_type_".concat(e.env), _o = "user_info_".concat(e.env); this.keys = { accessTokenKey: _t5, accessTokenExpireKey: _n5, refreshTokenKey: _s5, anonymousUuidKey: _r, loginTypeKey: _i, userInfoKey: _o }; } } (0, _createClass2.default)(Ce, [{ key: "updatePersistence", value: function updatePersistence(e) { if (e === this._persistence) return; var t = "local" === this._persistence; this._persistence = e; var n = Te(e, ke.adapter); for (var _e7 in this.keys) { var _s6 = this.keys[_e7]; if (t && Ae.includes(_e7)) continue; var _r2 = this._storage.getItem(_s6); ve(_r2) || Ie(_r2) || (n.setItem(_s6, _r2), this._storage.removeItem(_s6)); } this._storage = n; } }, { key: "setStore", value: function setStore(e, t, n) { if (!this._storage) return; var s = { version: n || "localCachev1", content: t }, r = JSON.stringify(s); try { this._storage.setItem(e, r); } catch (e) { throw e; } } }, { key: "getStore", value: function getStore(e, t) { try { if (!this._storage) return; } catch (e) { return ""; } t = t || "localCachev1"; var n = this._storage.getItem(e); if (!n) return ""; if (n.indexOf(t) >= 0) { return JSON.parse(n).content; } return ""; } }, { key: "removeStore", value: function removeStore(e) { this._storage.removeItem(e); } }]); return Ce; }(); var xe = {}, Oe = {}; function Ee(e) { return xe[e]; } var Le = /*#__PURE__*/(0, _createClass2.default)(function Le(e, t) { (0, _classCallCheck2.default)(this, Le); this.data = t || null, this.name = e; }); var Re = /*#__PURE__*/function (_Le) { (0, _inherits2.default)(Re, _Le); var _super3 = _createSuper(Re); function Re(e, t) { var _this7; (0, _classCallCheck2.default)(this, Re); _this7 = _super3.call(this, "error", { error: e, data: t }), _this7.error = e; return _this7; } return (0, _createClass2.default)(Re); }(Le); var Ue = new ( /*#__PURE__*/function () { function _class() { (0, _classCallCheck2.default)(this, _class); this._listeners = {}; } (0, _createClass2.default)(_class, [{ key: "on", value: function on(e, t) { return function (e, t, n) { n[e] = n[e] || [], n[e].push(t); }(e, t, this._listeners), this; } }, { key: "off", value: function off(e, t) { return function (e, t, n) { if (n && n[e]) { var _s7 = n[e].indexOf(t); -1 !== _s7 && n[e].splice(_s7, 1); } }(e, t, this._listeners), this; } }, { key: "fire", value: function fire(e, t) { if (e instanceof Re) return console.error(e.error), this; var n = "string" == typeof e ? new Le(e, t || {}) : e; var s = n.name; if (this._listens(s)) { n.target = this; var _e8 = this._listeners[s] ? (0, _toConsumableArray2.default)(this._listeners[s]) : []; var _iterator2 = _createForOfIteratorHelper(_e8), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var _t6 = _step2.value; _t6.call(this, n); } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } return this; } }, { key: "_listens", value: function _listens(e) { return this._listeners[e] && this._listeners[e].length > 0; } }]); return _class; }())(); function Ne(e, t) { Ue.on(e, t); } function De(e) { var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; Ue.fire(e, t); } function Me(e, t) { Ue.off(e, t); } var qe = "loginStateChanged", Fe = "loginStateExpire", Ke = "loginTypeChanged", je = "anonymousConverted", Be = "refreshAccessToken"; var $e; !function (e) { e.ANONYMOUS = "ANONYMOUS", e.WECHAT = "WECHAT", e.WECHAT_PUBLIC = "WECHAT-PUBLIC", e.WECHAT_OPEN = "WECHAT-OPEN", e.CUSTOM = "CUSTOM", e.EMAIL = "EMAIL", e.USERNAME = "USERNAME", e.NULL = "NULL"; }($e || ($e = {})); var We = ["auth.getJwt", "auth.logout", "auth.signInWithTicket", "auth.signInAnonymously", "auth.signIn", "auth.fetchAccessTokenWithRefreshToken", "auth.signUpWithEmailAndPassword", "auth.activateEndUserMail", "auth.sendPasswordResetEmail", "auth.resetPasswordWithToken", "auth.isUsernameRegistered"], He = { "X-SDK-Version": "1.3.5" }; function ze(e, t, n) { var s = e[t]; e[t] = function (t) { var r = {}, i = {}; n.forEach(function (n) { var _n$call = n.call(e, t), s = _n$call.data, o = _n$call.headers; Object.assign(r, s), Object.assign(i, o); }); var o = t.data; return o && function () { var e; if (e = o, "[object FormData]" !== Object.prototype.toString.call(e)) t.data = _objectSpread(_objectSpread({}, o), r);else for (var _e9 in r) { o.append(_e9, r[_e9]); } }(), t.headers = _objectSpread(_objectSpread({}, t.headers || {}), i), s.call(e, t); }; } function Je() { var e = Math.random().toString(16).slice(2); return { data: { seqId: e }, headers: _objectSpread(_objectSpread({}, He), {}, { "x-seqid": e }) }; } var Ve = /*#__PURE__*/function () { function Ve() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; (0, _classCallCheck2.default)(this, Ve); var t; this.config = e, this._reqClass = new ke.adapter.reqClass({ timeout: this.config.timeout, timeoutMsg: "\u8BF7\u6C42\u5728".concat(this.config.timeout / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD"), restrictedMethods: ["post"] }), this._cache = Ee(this.config.env), this._localCache = (t = this.config.env, Oe[t]), ze(this._reqClass, "post", [Je]), ze(this._reqClass, "upload", [Je]), ze(this._reqClass, "download", [Je]); } (0, _createClass2.default)(Ve, [{ key: "post", value: function () { var _post = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(e) { return _regenerator.default.wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: _context4.next = 2; return this._reqClass.post(e); case 2: return _context4.abrupt("return", _context4.sent); case 3: case "end": return _context4.stop(); } } }, _callee4, this); })); function post(_x2) { return _post.apply(this, arguments); } return post; }() }, { key: "upload", value: function () { var _upload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(e) { return _regenerator.default.wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return this._reqClass.upload(e); case 2: return _context5.abrupt("return", _context5.sent); case 3: case "end": return _context5.stop(); } } }, _callee5, this); })); function upload(_x3) { return _upload.apply(this, arguments); } return upload; }() }, { key: "download", value: function () { var _download = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(e) { return _regenerator.default.wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: _context6.next = 2; return this._reqClass.download(e); case 2: return _context6.abrupt("return", _context6.sent); case 3: case "end": return _context6.stop(); } } }, _callee6, this); })); function download(_x4) { return _download.apply(this, arguments); } return download; }() }, { key: "refreshAccessToken", value: function () { var _refreshAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() { var e, t; return _regenerator.default.wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: this._refreshAccessTokenPromise || (this._refreshAccessTokenPromise = this._refreshAccessToken()); _context7.prev = 1; _context7.next = 4; return this._refreshAccessTokenPromise; case 4: e = _context7.sent; _context7.next = 10; break; case 7: _context7.prev = 7; _context7.t0 = _context7["catch"](1); t = _context7.t0; case 10: if (!(this._refreshAccessTokenPromise = null, this._shouldRefreshAccessTokenHook = null, t)) { _context7.next = 12; break; } throw t; case 12: return _context7.abrupt("return", e); case 13: case "end": return _context7.stop(); } } }, _callee7, this, [[1, 7]]); })); function refreshAccessToken() { return _refreshAccessToken2.apply(this, arguments); } return refreshAccessToken; }() }, { key: "_refreshAccessToken", value: function () { var _refreshAccessToken3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() { var _this$_cache$keys, e, t, n, s, r, i, o, a, _e10, _e11, _t7, _s8; return _regenerator.default.wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: _this$_cache$keys = this._cache.keys, e = _this$_cache$keys.accessTokenKey, t = _this$_cache$keys.accessTokenExpireKey, n = _this$_cache$keys.refreshTokenKey, s = _this$_cache$keys.loginTypeKey, r = _this$_cache$keys.anonymousUuidKey; this._cache.removeStore(e), this._cache.removeStore(t); i = this._cache.getStore(n); if (i) { _context8.next = 5; break; } throw new te({ message: "未登录CloudBase" }); case 5: o = { refresh_token: i }; _context8.next = 8; return this.request("auth.fetchAccessTokenWithRefreshToken", o); case 8: a = _context8.sent; if (!a.data.code) { _context8.next = 21; break; } _e10 = a.data.code; if (!("SIGN_PARAM_INVALID" === _e10 || "REFRESH_TOKEN_EXPIRED" === _e10 || "INVALID_REFRESH_TOKEN" === _e10)) { _context8.next = 20; break; } if (!(this._cache.getStore(s) === $e.ANONYMOUS && "INVALID_REFRESH_TOKEN" === _e10)) { _context8.next = 19; break; } _e11 = this._cache.getStore(r); _t7 = this._cache.getStore(n); _context8.next = 17; return this.send("auth.signInAnonymously", { anonymous_uuid: _e11, refresh_token: _t7 }); case 17: _s8 = _context8.sent; return _context8.abrupt("return", (this.setRefreshToken(_s8.refresh_token), this._refreshAccessToken())); case 19: De(Fe), this._cache.removeStore(n); case 20: throw new te({ code: a.data.code, message: "\u5237\u65B0access token\u5931\u8D25\uFF1A".concat(a.data.code) }); case 21: if (!a.data.access_token) { _context8.next = 23; break; } return _context8.abrupt("return", (De(Be), this._cache.setStore(e, a.data.access_token), this._cache.setStore(t, a.data.access_token_expire + Date.now()), { accessToken: a.data.access_token, accessTokenExpire: a.data.access_token_expire })); case 23: a.data.refresh_token && (this._cache.removeStore(n), this._cache.setStore(n, a.data.refresh_token), this._refreshAccessToken()); case 24: case "end": return _context8.stop(); } } }, _callee8, this); })); function _refreshAccessToken() { return _refreshAccessToken3.apply(this, arguments); } return _refreshAccessToken; }() }, { key: "getAccessToken", value: function () { var _getAccessToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() { var _this$_cache$keys2, e, t, n, s, r, i; return _regenerator.default.wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: _this$_cache$keys2 = this._cache.keys, e = _this$_cache$keys2.accessTokenKey, t = _this$_cache$keys2.accessTokenExpireKey, n = _this$_cache$keys2.refreshTokenKey; if (this._cache.getStore(n)) { _context9.next = 3; break; } throw new te({ message: "refresh token不存在,登录状态异常" }); case 3: s = this._cache.getStore(e), r = this._cache.getStore(t), i = !0; _context9.t0 = this._shouldRefreshAccessTokenHook; if (!_context9.t0) { _context9.next = 9; break; } _context9.next = 8; return this._shouldRefreshAccessTokenHook(s, r); case 8: _context9.t0 = !_context9.sent; case 9: _context9.t1 = _context9.t0; if (!_context9.t1) { _context9.next = 12; break; } i = !1; case 12: return _context9.abrupt("return", (!s || !r || r < Date.now()) && i ? this.refreshAccessToken() : { accessToken: s, accessTokenExpire: r }); case 13: case "end": return _context9.stop(); } } }, _callee9, this); })); function getAccessToken() { return _getAccessToken.apply(this, arguments); } return getAccessToken; }() }, { key: "request", value: function () { var _request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(e, t, n) { var s, r, i, _e12, o, _e13, _e14, a, c, u, l, h, d, p, f, g; return _regenerator.default.wrap(function _callee10$(_context10) { while (1) { switch (_context10.prev = _context10.next) { case 0: s = "x-tcb-trace_".concat(this.config.env); r = "application/x-www-form-urlencoded"; i = _objectSpread({ action: e, env: this.config.env, dataVersion: "2019-08-16" }, t); if (!(-1 === We.indexOf(e))) { _context10.next = 10; break; } _e12 = this._cache.keys.refreshTokenKey; _context10.t0 = this._cache.getStore(_e12); if (!_context10.t0) { _context10.next = 10; break; } _context10.next = 9; return this.getAccessToken(); case 9: i.access_token = _context10.sent.accessToken; case 10: if ("storage.uploadFile" === e) { o = new FormData(); for (_e13 in o) { o.hasOwnProperty(_e13) && void 0 !== o[_e13] && o.append(_e13, i[_e13]); } r = "multipart/form-data"; } else { r = "application/json", o = {}; for (_e14 in i) { void 0 !== i[_e14] && (o[_e14] = i[_e14]); } } a = { headers: { "content-type": r } }; n && n.onUploadProgress && (a.onUploadProgress = n.onUploadProgress); c = this._localCache.getStore(s); c && (a.headers["X-TCB-Trace"] = c); u = t.parse, l = t.inQuery, h = t.search; d = { env: this.config.env }; u && (d.parse = !0), l && (d = _objectSpread(_objectSpread({}, l), d)); p = function (e, t) { var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; var s = /\?/.test(t); var r = ""; for (var _e15 in n) { "" === r ? !s && (t += "?") : r += "&", r += "".concat(_e15, "=").concat(encodeURIComponent(n[_e15])); } return /^http(s)?\:\/\//.test(t += r) ? t : "".concat(e).concat(t); }(pe, "//tcb-api.tencentcloudapi.com/web", d); h && (p += h); _context10.next = 22; return this.post(_objectSpread({ url: p, data: o }, a)); case 22: f = _context10.sent; g = f.header && f.header["x-tcb-trace"]; if (!(g && this._localCache.setStore(s, g), 200 !== Number(f.status) && 200 !== Number(f.statusCode) || !f.data)) { _context10.next = 26; break; } throw new te({ code: "NETWORK_ERROR", message: "network request error" }); case 26: return _context10.abrupt("return", f); case 27: case "end": return _context10.stop(); } } }, _callee10, this); })); function request(_x5, _x6, _x7) { return _request.apply(this, arguments); } return request; }() }, { key: "send", value: function () { var _send = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(e) { var t, n, _n6, _args11 = arguments; return _regenerator.default.wrap(function _callee11$(_context11) { while (1) { switch (_context11.prev = _context11.next) { case 0: t = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : {}; _context11.next = 3; return this.request(e, t, { onUploadProgress: t.onUploadProgress }); case 3: n = _context11.sent; if (!("ACCESS_TOKEN_EXPIRED" === n.data.code && -1 === We.indexOf(e))) { _context11.next = 13; break; } _context11.next = 7; return this.refreshAccessToken(); case 7: _context11.next = 9; return this.request(e, t, { onUploadProgress: t.onUploadProgress }); case 9: _n6 = _context11.sent; if (!_n6.data.code) { _context11.next = 12; break; } throw new te({ code: _n6.data.code, message: _n6.data.message }); case 12: return _context11.abrupt("return", _n6.data); case 13: if (!n.data.code) { _context11.next = 15; break; } throw new te({ code: n.data.code, message: n.data.message }); case 15: return _context11.abrupt("return", n.data); case 16: case "end": return _context11.stop(); } } }, _callee11, this); })); function send(_x8) { return _send.apply(this, arguments); } return send; }() }, { key: "setRefreshToken", value: function setRefreshToken(e) { var _this$_cache$keys3 = this._cache.keys, t = _this$_cache$keys3.accessTokenKey, n = _this$_cache$keys3.accessTokenExpireKey, s = _this$_cache$keys3.refreshTokenKey; this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e); } }]); return Ve; }(); var Ge = {}; function Ye(e) { return Ge[e]; } var Qe = /*#__PURE__*/function () { function Qe(e) { (0, _classCallCheck2.default)(this, Qe); this.config = e, this._cache = Ee(e.env), this._request = Ye(e.env); } (0, _createClass2.default)(Qe, [{ key: "setRefreshToken", value: function setRefreshToken(e) { var _this$_cache$keys4 = this._cache.keys, t = _this$_cache$keys4.accessTokenKey, n = _this$_cache$keys4.accessTokenExpireKey, s = _this$_cache$keys4.refreshTokenKey; this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e); } }, { key: "setAccessToken", value: function setAccessToken(e, t) { var _this$_cache$keys5 = this._cache.keys, n = _this$_cache$keys5.accessTokenKey, s = _this$_cache$keys5.accessTokenExpireKey; this._cache.setStore(n, e), this._cache.setStore(s, t); } }, { key: "refreshUserInfo", value: function () { var _refreshUserInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() { var _yield$this$_request$, e; return _regenerator.default.wrap(function _callee12$(_context12) { while (1) { switch (_context12.prev = _context12.next) { case 0: _context12.next = 2; return this._request.send("auth.getUserInfo", {}); case 2: _yield$this$_request$ = _context12.sent; e = _yield$this$_request$.data; return _context12.abrupt("return", (this.setLocalUserInfo(e), e)); case 5: case "end": return _context12.stop(); } } }, _callee12, this); })); function refreshUserInfo() { return _refreshUserInfo.apply(this, arguments); } return refreshUserInfo; }() }, { key: "setLocalUserInfo", value: function setLocalUserInfo(e) { var t = this._cache.keys.userInfoKey; this._cache.setStore(t, e); } }]); return Qe; }(); var Xe = /*#__PURE__*/function () { function Xe(e) { (0, _classCallCheck2.default)(this, Xe); if (!e) throw new te({ code: "PARAM_ERROR", message: "envId is not defined" }); this._envId = e, this._cache = Ee(this._envId), this._request = Ye(this._envId), this.setUserInfo(); } (0, _createClass2.default)(Xe, [{ key: "linkWithTicket", value: function linkWithTicket(e) { if ("string" != typeof e) throw new te({ code: "PARAM_ERROR", message: "ticket must be string" }); return this._request.send("auth.linkWithTicket", { ticket: e }); } }, { key: "linkWithRedirect", value: function linkWithRedirect(e) { e.signInWithRedirect(); } }, { key: "updatePassword", value: function updatePassword(e, t) { return this._request.send("auth.updatePassword", { oldPassword: t, newPassword: e }); } }, { key: "updateEmail", value: function updateEmail(e) { return this._request.send("auth.updateEmail", { newEmail: e }); } }, { key: "updateUsername", value: function updateUsername(e) { if ("string" != typeof e) throw new te({ code: "PARAM_ERROR", message: "username must be a string" }); return this._request.send("auth.updateUsername", { username: e }); } }, { key: "getLinkedUidList", value: function () { var _getLinkedUidList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() { var _yield$this$_request$2, e, t, n; return _regenerator.default.wrap(function _callee13$(_context13) { while (1) { switch (_context13.prev = _context13.next) { case 0: _context13.next = 2; return this._request.send("auth.getLinkedUidList", {}); case 2: _yield$this$_request$2 = _context13.sent; e = _yield$this$_request$2.data; t = !1; n = e.users; return _context13.abrupt("return", (n.forEach(function (e) { e.wxOpenId && e.wxPublicId && (t = !0); }), { users: n, hasPrimaryUid: t })); case 7: case "end": return _context13.stop(); } } }, _callee13, this); })); function getLinkedUidList() { return _getLinkedUidList.apply(this, arguments); } return getLinkedUidList; }() }, { key: "setPrimaryUid", value: function setPrimaryUid(e) { return this._request.send("auth.setPrimaryUid", { uid: e }); } }, { key: "unlink", value: function unlink(e) { return this._request.send("auth.unlink", { platform: e }); } }, { key: "update", value: function () { var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(e) { var t, n, s, r, i, o, _yield$this$_request$3, a; return _regenerator.default.wrap(function _callee14$(_context14) { while (1) { switch (_context14.prev = _context14.next) { case 0: t = e.nickName; n = e.gender; s = e.avatarUrl; r = e.province; i = e.country; o = e.city; _context14.next = 8; return this._request.send("auth.updateUserInfo", { nickName: t, gender: n, avatarUrl: s, province: r, country: i, city: o }); case 8: _yield$this$_request$3 = _context14.sent; a = _yield$this$_request$3.data; this.setLocalUserInfo(a); case 11: case "end": return _context14.stop(); } } }, _callee14, this); })); function update(_x9) { return _update.apply(this, arguments); } return update; }() }, { key: "refresh", value: function () { var _refresh = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() { var _yield$this$_request$4, e; return _regenerator.default.wrap(function _callee15$(_context15) { while (1) { switch (_context15.prev = _context15.next) { case 0: _context15.next = 2; return this._request.send("auth.getUserInfo", {}); case 2: _yield$this$_request$4 = _context15.sent; e = _yield$this$_request$4.data; return _context15.abrupt("return", (this.setLocalUserInfo(e), e)); case 5: case "end": return _context15.stop(); } } }, _callee15, this); })); function refresh() { return _refresh.apply(this, arguments); } return refresh; }() }, { key: "setUserInfo", value: function setUserInfo() { var _this8 = this; var e = this._cache.keys.userInfoKey, t = this._cache.getStore(e); ["uid", "loginType", "openid", "wxOpenId", "wxPublicId", "unionId", "qqMiniOpenId", "email", "hasPassword", "customUserId", "nickName", "gender", "avatarUrl"].forEach(function (e) { _this8[e] = t[e]; }), this.location = { country: t.country, province: t.province, city: t.city }; } }, { key: "setLocalUserInfo", value: function setLocalUserInfo(e) { var t = this._cache.keys.userInfoKey; this._cache.setStore(t, e), this.setUserInfo(); } }]); return Xe; }(); var Ze = /*#__PURE__*/function () { function Ze(e) { (0, _classCallCheck2.default)(this, Ze); if (!e) throw new te({ code: "PARAM_ERROR", message: "envId is not defined" }); this._cache = Ee(e); var _this$_cache$keys6 = this._cache.keys, t = _this$_cache$keys6.refreshTokenKey, n = _this$_cache$keys6.accessTokenKey, s = _this$_cache$keys6.accessTokenExpireKey, r = this._cache.getStore(t), i = this._cache.getStore(n), o = this._cache.getStore(s); this.credential = { refreshToken: r, accessToken: i, accessTokenExpire: o }, this.user = new Xe(e); } (0, _createClass2.default)(Ze, [{ key: "isAnonymousAuth", get: function get() { return this.loginType === $e.ANONYMOUS; } }, { key: "isCustomAuth", get: function get() { return this.loginType === $e.CUSTOM; } }, { key: "isWeixinAuth", get: function get() { return this.loginType === $e.WECHAT || this.loginType === $e.WECHAT_OPEN || this.loginType === $e.WECHAT_PUBLIC; } }, { key: "loginType", get: function get() { return this._cache.getStore(this._cache.keys.loginTypeKey); } }]); return Ze; }(); var et = /*#__PURE__*/function (_Qe) { (0, _inherits2.default)(et, _Qe); var _super4 = _createSuper(et); function et() { (0, _classCallCheck2.default)(this, et); return _super4.apply(this, arguments); } (0, _createClass2.default)(et, [{ key: "signIn", value: function () { var _signIn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() { var _this$_cache$keys7, e, t, n, s, r, _e16; return _regenerator.default.wrap(function _callee16$(_context16) { while (1) { switch (_context16.prev = _context16.next) { case 0: this._cache.updatePersistence("local"); _this$_cache$keys7 = this._cache.keys; e = _this$_cache$keys7.anonymousUuidKey; t = _this$_cache$keys7.refreshTokenKey; n = this._cache.getStore(e) || void 0; s = this._cache.getStore(t) || void 0; _context16.next = 8; return this._request.send("auth.signInAnonymously", { anonymous_uuid: n, refresh_token: s }); case 8: r = _context16.sent; if (!(r.uuid && r.refresh_token)) { _context16.next = 20; break; } this._setAnonymousUUID(r.uuid); this.setRefreshToken(r.refresh_token); _context16.next = 14; return this._request.refreshAccessToken(); case 14: De(qe); De(Ke, { env: this.config.env, loginType: $e.ANONYMOUS, persistence: "local" }); _e16 = new Ze(this.config.env); _context16.next = 19; return _e16.user.refresh(); case 19: return _context16.abrupt("return", _e16); case 20: throw new te({ message: "匿名登录失败" }); case 21: case "end": return _context16.stop(); } } }, _callee16, this); })); function signIn() { return _signIn.apply(this, arguments); } return signIn; }() }, { key: "linkAndRetrieveDataWithTicket", value: function () { var _linkAndRetrieveDataWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(e) { var _this$_cache$keys8, t, n, s, r, i; return _regenerator.default.wrap(function _callee17$(_context17) { while (1) { switch (_context17.prev = _context17.next) { case 0: _this$_cache$keys8 = this._cache.keys; t = _this$_cache$keys8.anonymousUuidKey; n = _this$_cache$keys8.refreshTokenKey; s = this._cache.getStore(t); r = this._cache.getStore(n); _context17.next = 7; return this._request.send("auth.linkAndRetrieveDataWithTicket", { anonymous_uuid: s, refresh_token: r, ticket: e }); case 7: i = _context17.sent; if (!i.refresh_token) { _context17.next = 16; break; } this._clearAnonymousUUID(); this.setRefreshToken(i.refresh_token); _context17.next = 13; return this._request.refreshAccessToken(); case 13: De(je, { env: this.config.env }); De(Ke, { loginType: $e.CUSTOM, persistence: "local" }); return _context17.abrupt("return", { credential: { refreshToken: i.refresh_token } }); case 16: throw new te({ message: "匿名转化失败" }); case 17: case "end": return _context17.stop(); } } }, _callee17, this); })); function linkAndRetrieveDataWithTicket(_x10) { return _linkAndRetrieveDataWithTicket.apply(this, arguments); } return linkAndRetrieveDataWithTicket; }() }, { key: "_setAnonymousUUID", value: function _setAnonymousUUID(e) { var _this$_cache$keys9 = this._cache.keys, t = _this$_cache$keys9.anonymousUuidKey, n = _this$_cache$keys9.loginTypeKey; this._cache.removeStore(t), this._cache.setStore(t, e), this._cache.setStore(n, $e.ANONYMOUS); } }, { key: "_clearAnonymousUUID", value: function _clearAnonymousUUID() { this._cache.removeStore(this._cache.keys.anonymousUuidKey); } }]); return et; }(Qe); var tt = /*#__PURE__*/function (_Qe2) { (0, _inherits2.default)(tt, _Qe2); var _super5 = _createSuper(tt); function tt() { (0, _classCallCheck2.default)(this, tt); return _super5.apply(this, arguments); } (0, _createClass2.default)(tt, [{ key: "signIn", value: function () { var _signIn2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(e) { var t, n; return _regenerator.default.wrap(function _callee18$(_context18) { while (1) { switch (_context18.prev = _context18.next) { case 0: if (!("string" != typeof e)) { _context18.next = 2; break; } throw new te({ code: "PARAM_ERROR", message: "ticket must be a string" }); case 2: t = this._cache.keys.refreshTokenKey; _context18.next = 5; return this._request.send("auth.signInWithTicket", { ticket: e, refresh_token: this._cache.getStore(t) || "" }); case 5: n = _context18.sent; if (!n.refresh_token) { _context18.next = 15; break; } this.setRefreshToken(n.refresh_token); _context18.next = 10; return this._request.refreshAccessToken(); case 10: De(qe); De(Ke, { env: this.config.env, loginType: $e.CUSTOM, persistence: this.config.persistence }); _context18.next = 14; return this.refreshUserInfo(); case 14: return _context18.abrupt("return", new Ze(this.config.env)); case 15: throw new te({ message: "自定义登录失败" }); case 16: case "end": return _context18.stop(); } } }, _callee18, this); })); function signIn(_x11) { return _signIn2.apply(this, arguments); } return signIn; }() }]); return tt; }(Qe); var nt = /*#__PURE__*/function (_Qe3) { (0, _inherits2.default)(nt, _Qe3); var _super6 = _createSuper(nt); function nt() { (0, _classCallCheck2.default)(this, nt); return _super6.apply(this, arguments); } (0, _createClass2.default)(nt, [{ key: "signIn", value: function () { var _signIn3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(e, t) { var n, s, r, i, o; return _regenerator.default.wrap(function _callee19$(_context19) { while (1) { switch (_context19.prev = _context19.next) { case 0: if (!("string" != typeof e)) { _context19.next = 2; break; } throw new te({ code: "PARAM_ERROR", message: "email must be a string" }); case 2: n = this._cache.keys.refreshTokenKey; _context19.next = 5; return this._request.send("auth.signIn", { loginType: "EMAIL", email: e, password: t, refresh_token: this._cache.getStore(n) || "" }); case 5: s = _context19.sent; r = s.refresh_token; i = s.access_token; o = s.access_token_expire; if (!r) { _context19.next = 22; break; } this.setRefreshToken(r); if (!(i && o)) { _context19.next = 15; break; } this.setAccessToken(i, o); _context19.next = 17; break; case 15: _context19.next = 17; return this._request.refreshAccessToken(); case 17: _context19.next = 19; return this.refreshUserInfo(); case 19: De(qe); De(Ke, { env: this.config.env, loginType: $e.EMAIL, persistence: this.config.persistence }); return _context19.abrupt("return", new Ze(this.config.env)); case 22: throw s.code ? new te({ code: s.code, message: "\u90AE\u7BB1\u767B\u5F55\u5931\u8D25: ".concat(s.message) }) : new te({ message: "邮箱登录失败" }); case 23: case "end": return _context19.stop(); } } }, _callee19, this); })); function signIn(_x12, _x13) { return _signIn3.apply(this, arguments); } return signIn; }() }, { key: "activate", value: function () { var _activate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(e) { return _regenerator.default.wrap(function _callee20$(_context20) { while (1) { switch (_context20.prev = _context20.next) { case 0: return _context20.abrupt("return", this._request.send("auth.activateEndUserMail", { token: e })); case 1: case "end": return _context20.stop(); } } }, _callee20, this); })); function activate(_x14) { return _activate.apply(this, arguments); } return activate; }() }, { key: "resetPasswordWithToken", value: function () { var _resetPasswordWithToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(e, t) { return _regenerator.default.wrap(function _callee21$(_context21) { while (1) { switch (_context21.prev = _context21.next) { case 0: return _context21.abrupt("return", this._request.send("auth.resetPasswordWithToken", { token: e, newPassword: t })); case 1: case "end": return _context21.stop(); } } }, _callee21, this); })); function resetPasswordWithToken(_x15, _x16) { return _resetPasswordWithToken.apply(this, arguments); } return resetPasswordWithToken; }() }]); return nt; }(Qe); var st = /*#__PURE__*/function (_Qe4) { (0, _inherits2.default)(st, _Qe4); var _super7 = _createSuper(st); function st() { (0, _classCallCheck2.default)(this, st); return _super7.apply(this, arguments); } (0, _createClass2.default)(st, [{ key: "signIn", value: function () { var _signIn4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(e, t) { var n, s, r, i, o; return _regenerator.default.wrap(function _callee22$(_context22) { while (1) { switch (_context22.prev = _context22.next) { case 0: if (!("string" != typeof e)) { _context22.next = 2; break; } throw new te({ code: "PARAM_ERROR", message: "username must be a string" }); case 2: "string" != typeof t && (t = "", console.warn("password is empty")); n = this._cache.keys.refreshTokenKey; _context22.next = 6; return this._request.send("auth.signIn", { loginType: $e.USERNAME, username: e, password: t, refresh_token: this._cache.getStore(n) || "" }); case 6: s = _context22.sent; r = s.refresh_token; i = s.access_token_expire; o = s.access_token; if (!r) { _context22.next = 23; break; } this.setRefreshToken(r); if (!(o && i)) { _context22.next = 16; break; } this.setAccessToken(o, i); _context22.next = 18; break; case 16: _context22.next = 18; return this._request.refreshAccessToken(); case 18: _context22.next = 20; return this.refreshUserInfo(); case 20: De(qe); De(Ke, { env: this.config.env, loginType: $e.USERNAME, persistence: this.config.persistence }); return _context22.abrupt("return", new Ze(this.config.env)); case 23: throw s.code ? new te({ code: s.code, message: "\u7528\u6237\u540D\u5BC6\u7801\u767B\u5F55\u5931\u8D25: ".concat(s.message) }) : new te({ message: "用户名密码登录失败" }); case 24: case "end": return _context22.stop(); } } }, _callee22, this); })); function signIn(_x17, _x18) { return _signIn4.apply(this, arguments); } return signIn; }() }]); return st; }(Qe); var rt = /*#__PURE__*/function () { function rt(e) { (0, _classCallCheck2.default)(this, rt); this.config = e, this._cache = Ee(e.env), this._request = Ye(e.env), this._onAnonymousConverted = this._onAnonymousConverted.bind(this), this._onLoginTypeChanged = this._onLoginTypeChanged.bind(this), Ne(Ke, this._onLoginTypeChanged); } (0, _createClass2.default)(rt, [{ key: "currentUser", get: function get() { var e = this.hasLoginState(); return e && e.user || null; } }, { key: "loginType", get: function get() { return this._cache.getStore(this._cache.keys.loginTypeKey); } }, { key: "anonymousAuthProvider", value: function anonymousAuthProvider() { return new et(this.config); } }, { key: "customAuthProvider", value: function customAuthProvider() { return new tt(this.config); } }, { key: "emailAuthProvider", value: function emailAuthProvider() { return new nt(this.config); } }, { key: "usernameAuthProvider", value: function usernameAuthProvider() { return new st(this.config); } }, { key: "signInAnonymously", value: function () { var _signInAnonymously = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() { return _regenerator.default.wrap(function _callee23$(_context23) { while (1) { switch (_context23.prev = _context23.next) { case 0: return _context23.abrupt("return", new et(this.config).signIn()); case 1: case "end": return _context23.stop(); } } }, _callee23, this); })); function signInAnonymously() { return _signInAnonymously.apply(this, arguments); } return signInAnonymously; }() }, { key: "signInWithEmailAndPassword", value: function () { var _signInWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(e, t) { return _regenerator.default.wrap(function _callee24$(_context24) { while (1) { switch (_context24.prev = _context24.next) { case 0: return _context24.abrupt("return", new nt(this.config).signIn(e, t)); case 1: case "end": return _context24.stop(); } } }, _callee24, this); })); function signInWithEmailAndPassword(_x19, _x20) { return _signInWithEmailAndPassword.apply(this, arguments); } return signInWithEmailAndPassword; }() }, { key: "signInWithUsernameAndPassword", value: function signInWithUsernameAndPassword(e, t) { return new st(this.config).signIn(e, t); } }, { key: "linkAndRetrieveDataWithTicket", value: function () { var _linkAndRetrieveDataWithTicket2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(e) { return _regenerator.default.wrap(function _callee25$(_context25) { while (1) { switch (_context25.prev = _context25.next) { case 0: this._anonymousAuthProvider || (this._anonymousAuthProvider = new et(this.config)), Ne(je, this._onAnonymousConverted); _context25.next = 3; return this._anonymousAuthProvider.linkAndRetrieveDataWithTicket(e); case 3: return _context25.abrupt("return", _context25.sent); case 4: case "end": return _context25.stop(); } } }, _callee25, this); })); function linkAndRetrieveDataWithTicket(_x21) { return _linkAndRetrieveDataWithTicket2.apply(this, arguments); } return linkAndRetrieveDataWithTicket; }() }, { key: "signOut", value: function () { var _signOut = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26() { var _this$_cache$keys10, e, t, n, s, r; return _regenerator.default.wrap(function _callee26$(_context26) { while (1) { switch (_context26.prev = _context26.next) { case 0: if (!(this.loginType === $e.ANONYMOUS)) { _context26.next = 2; break; } throw new te({ message: "匿名用户不支持登出操作" }); case 2: _this$_cache$keys10 = this._cache.keys, e = _this$_cache$keys10.refreshTokenKey, t = _this$_cache$keys10.accessTokenKey, n = _this$_cache$keys10.accessTokenExpireKey, s = this._cache.getStore(e); if (s) { _context26.next = 5; break; } return _context26.abrupt("return"); case 5: _context26.next = 7; return this._request.send("auth.logout", { refresh_token: s }); case 7: r = _context26.sent; return _context26.abrupt("return", (this._cache.removeStore(e), this._cache.removeStore(t), this._cache.removeStore(n), De(qe), De(Ke, { env: this.config.env, loginType: $e.NULL, persistence: this.config.persistence }), r)); case 9: case "end": return _context26.stop(); } } }, _callee26, this); })); function signOut() { return _signOut.apply(this, arguments); } return signOut; }() }, { key: "signUpWithEmailAndPassword", value: function () { var _signUpWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(e, t) { return _regenerator.default.wrap(function _callee27$(_context27) { while (1) { switch (_context27.prev = _context27.next) { case 0: return _context27.abrupt("return", this._request.send("auth.signUpWithEmailAndPassword", { email: e, password: t })); case 1: case "end": return _context27.stop(); } } }, _callee27, this); })); function signUpWithEmailAndPassword(_x22, _x23) { return _signUpWithEmailAndPassword.apply(this, arguments); } return signUpWithEmailAndPassword; }() }, { key: "sendPasswordResetEmail", value: function () { var _sendPasswordResetEmail = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(e) { return _regenerator.default.wrap(function _callee28$(_context28) { while (1) { switch (_context28.prev = _context28.next) { case 0: return _context28.abrupt("return", this._request.send("auth.sendPasswordResetEmail", { email: e })); case 1: case "end": return _context28.stop(); } } }, _callee28, this); })); function sendPasswordResetEmail(_x24) { return _sendPasswordResetEmail.apply(this, arguments); } return sendPasswordResetEmail; }() }, { key: "onLoginStateChanged", value: function onLoginStateChanged(e) { var _this9 = this; Ne(qe, function () { var t = _this9.hasLoginState(); e.call(_this9, t); }); var t = this.hasLoginState(); e.call(this, t); } }, { key: "onLoginStateExpired", value: function onLoginStateExpired(e) { Ne(Fe, e.bind(this)); } }, { key: "onAccessTokenRefreshed", value: function onAccessTokenRefreshed(e) { Ne(Be, e.bind(this)); } }, { key: "onAnonymousConverted", value: function onAnonymousConverted(e) { Ne(je, e.bind(this)); } }, { key: "onLoginTypeChanged", value: function onLoginTypeChanged(e) { var _this10 = this; Ne(Ke, function () { var t = _this10.hasLoginState(); e.call(_this10, t); }); } }, { key: "getAccessToken", value: function () { var _getAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29() { return _regenerator.default.wrap(function _callee29$(_context29) { while (1) { switch (_context29.prev = _context29.next) { case 0: _context29.next = 2; return this._request.getAccessToken(); case 2: _context29.t0 = _context29.sent.accessToken; _context29.t1 = this.config.env; return _context29.abrupt("return", { accessToken: _context29.t0, env: _context29.t1 }); case 5: case "end": return _context29.stop(); } } }, _callee29, this); })); function getAccessToken() { return _getAccessToken2.apply(this, arguments); } return getAccessToken; }() }, { key: "hasLoginState", value: function hasLoginState() { var e = this._cache.keys.refreshTokenKey; return this._cache.getStore(e) ? new Ze(this.config.env) : null; } }, { key: "isUsernameRegistered", value: function () { var _isUsernameRegistered = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(e) { var _yield$this$_request$5, t; return _regenerator.default.wrap(function _callee30$(_context30) { while (1) { switch (_context30.prev = _context30.next) { case 0: if (!("string" != typeof e)) { _context30.next = 2; break; } throw new te({ code: "PARAM_ERROR", message: "username must be a string" }); case 2: _context30.next = 4; return this._request.send("auth.isUsernameRegistered", { username: e }); case 4: _yield$this$_request$5 = _context30.sent; t = _yield$this$_request$5.data; return _context30.abrupt("return", t && t.isRegistered); case 7: case "end": return _context30.stop(); } } }, _callee30, this); })); function isUsernameRegistered(_x25) { return _isUsernameRegistered.apply(this, arguments); } return isUsernameRegistered; }() }, { key: "getLoginState", value: function getLoginState() { return Promise.resolve(this.hasLoginState()); } }, { key: "signInWithTicket", value: function () { var _signInWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(e) { return _regenerator.default.wrap(function _callee31$(_context31) { while (1) { switch (_context31.prev = _context31.next) { case 0: return _context31.abrupt("return", new tt(this.config).signIn(e)); case 1: case "end": return _context31.stop(); } } }, _callee31, this); })); function signInWithTicket(_x26) { return _signInWithTicket.apply(this, arguments); } return signInWithTicket; }() }, { key: "shouldRefreshAccessToken", value: function shouldRefreshAccessToken(e) { this._request._shouldRefreshAccessTokenHook = e.bind(this); } }, { key: "getUserInfo", value: function getUserInfo() { return this._request.send("auth.getUserInfo", {}).then(function (e) { return e.code ? e : _objectSpread(_objectSpread({}, e.data), {}, { requestId: e.seqId }); }); } }, { key: "getAuthHeader", value: function getAuthHeader() { var _this$_cache$keys11 = this._cache.keys, e = _this$_cache$keys11.refreshTokenKey, t = _this$_cache$keys11.accessTokenKey, n = this._cache.getStore(e); return { "x-cloudbase-credentials": this._cache.getStore(t) + "/@@/" + n }; } }, { key: "_onAnonymousConverted", value: function _onAnonymousConverted(e) { var t = e.data.env; t === this.config.env && this._cache.updatePersistence(this.config.persistence); } }, { key: "_onLoginTypeChanged", value: function _onLoginTypeChanged(e) { var _e$data = e.data, t = _e$data.loginType, n = _e$data.persistence, s = _e$data.env; s === this.config.env && (this._cache.updatePersistence(n), this._cache.setStore(this._cache.keys.loginTypeKey, t)); } }]); return rt; }(); var it = function it(e, t) { t = t || we(); var n = Ye(this.config.env), s = e.cloudPath, r = e.filePath, i = e.onUploadProgress, _e$fileType = e.fileType, o = _e$fileType === void 0 ? "image" : _e$fileType; return n.send("storage.getUploadMetadata", { path: s }).then(function (e) { var _e$data2 = e.data, a = _e$data2.url, c = _e$data2.authorization, u = _e$data2.token, l = _e$data2.fileId, h = _e$data2.cosFileId, d = e.requestId, p = { key: s, signature: c, "x-cos-meta-fileid": h, success_action_status: "201", "x-cos-security-token": u }; n.upload({ url: a, data: p, file: r, name: s, fileType: o, onUploadProgress: i }).then(function (e) { 201 === e.statusCode ? t(null, { fileID: l, requestId: d }) : t(new te({ code: "STORAGE_REQUEST_FAIL", message: "STORAGE_REQUEST_FAIL: ".concat(e.data) })); }).catch(function (e) { t(e); }); }).catch(function (e) { t(e); }), t.promise; }, ot = function ot(e, t) { t = t || we(); var n = Ye(this.config.env), s = e.cloudPath; return n.send("storage.getUploadMetadata", { path: s }).then(function (e) { t(null, e); }).catch(function (e) { t(e); }), t.promise; }, at = function at(_ref7, t) { var e = _ref7.fileList; if (t = t || we(), !e || !Array.isArray(e)) return { code: "INVALID_PARAM", message: "fileList必须是非空的数组" }; var _iterator3 = _createForOfIteratorHelper(e), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var _t8 = _step3.value; if (!_t8 || "string" != typeof _t8) return { code: "INVALID_PARAM", message: "fileList的元素必须是非空的字符串" }; } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } var n = { fileid_list: e }; return Ye(this.config.env).send("storage.batchDeleteFile", n).then(function (e) { e.code ? t(null, e) : t(null, { fileList: e.data.delete_list, requestId: e.requestId }); }).catch(function (e) { t(e); }), t.promise; }, ct = function ct(_ref8, t) { var e = _ref8.fileList; t = t || we(), e && Array.isArray(e) || t(null, { code: "INVALID_PARAM", message: "fileList必须是非空的数组" }); var n = []; var _iterator4 = _createForOfIteratorHelper(e), _step4; try { for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) { var _s9 = _step4.value; "object" == (0, _typeof2.default)(_s9) ? (_s9.hasOwnProperty("fileID") && _s9.hasOwnProperty("maxAge") || t(null, { code: "INVALID_PARAM", message: "fileList的元素必须是包含fileID和maxAge的对象" }), n.push({ fileid: _s9.fileID, max_age: _s9.maxAge })) : "string" == typeof _s9 ? n.push({ fileid: _s9 }) : t(null, { code: "INVALID_PARAM", message: "fileList的元素必须是字符串" }); } } catch (err) { _iterator4.e(err); } finally { _iterator4.f(); } var s = { file_list: n }; return Ye(this.config.env).send("storage.batchGetDownloadUrl", s).then(function (e) { e.code ? t(null, e) : t(null, { fileList: e.data.download_list, requestId: e.requestId }); }).catch(function (e) { t(e); }), t.promise; }, ut = /*#__PURE__*/function () { var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(_ref9, t) { var e, n, s, r; return _regenerator.default.wrap(function _callee32$(_context32) { while (1) { switch (_context32.prev = _context32.next) { case 0: e = _ref9.fileID; _context32.next = 3; return ct.call(this, { fileList: [{ fileID: e, maxAge: 600 }] }); case 3: n = _context32.sent.fileList[0]; if (!("SUCCESS" !== n.code)) { _context32.next = 6; break; } return _context32.abrupt("return", t ? t(n) : new Promise(function (e) { e(n); })); case 6: s = Ye(this.config.env); r = n.download_url; if (!(r = encodeURI(r), !t)) { _context32.next = 10; break; } return _context32.abrupt("return", s.download({ url: r })); case 10: _context32.t0 = t; _context32.next = 13; return s.download({ url: r }); case 13: _context32.t1 = _context32.sent; (0, _context32.t0)(_context32.t1); case 15: case "end": return _context32.stop(); } } }, _callee32, this); })); return function ut(_x27, _x28) { return _ref10.apply(this, arguments); }; }(), lt = function lt(_ref11, i) { var e = _ref11.name, t = _ref11.data, n = _ref11.query, s = _ref11.parse, r = _ref11.search; var o = i || we(); var a; try { a = t ? JSON.stringify(t) : ""; } catch (e) { return Promise.reject(e); } if (!e) return Promise.reject(new te({ code: "PARAM_ERROR", message: "函数名不能为空" })); var c = { inQuery: n, parse: s, search: r, function_name: e, request_data: a }; return Ye(this.config.env).send("functions.invokeFunction", c).then(function (e) { if (e.code) o(null, e);else { var _t9 = e.data.response_data; if (s) o(null, { result: _t9, requestId: e.requestId });else try { _t9 = JSON.parse(e.data.response_data), o(null, { result: _t9, requestId: e.requestId }); } catch (e) { o(new te({ message: "response data must be json" })); } } return o.promise; }).catch(function (e) { o(e); }), o.promise; }, ht = { timeout: 15e3, persistence: "session" }, dt = {}; var pt = /*#__PURE__*/function () { function pt(e) { (0, _classCallCheck2.default)(this, pt); this.config = e || this.config, this.authObj = void 0; } (0, _createClass2.default)(pt, [{ key: "init", value: function init(e) { switch (ke.adapter || (this.requestClient = new ke.adapter.reqClass({ timeout: e.timeout || 5e3, timeoutMsg: "\u8BF7\u6C42\u5728".concat((e.timeout || 5e3) / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD") })), this.config = _objectSpread(_objectSpread({}, ht), e), !0) { case this.config.timeout > 6e5: console.warn("timeout大于可配置上限[10分钟],已重置为上限数值"), this.config.timeout = 6e5; break; case this.config.timeout < 100: console.warn("timeout小于可配置下限[100ms],已重置为下限数值"), this.config.timeout = 100; } return new pt(this.config); } }, { key: "auth", value: function auth() { var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref12.persistence; if (this.authObj) return this.authObj; var t = e || ke.adapter.primaryStorage || ht.persistence; var n; return t !== this.config.persistence && (this.config.persistence = t), function (e) { var t = e.env; xe[t] = new Ce(e), Oe[t] = new Ce(_objectSpread(_objectSpread({}, e), {}, { persistence: "local" })); }(this.config), n = this.config, Ge[n.env] = new Ve(n), this.authObj = new rt(this.config), this.authObj; } }, { key: "on", value: function on(e, t) { return Ne.apply(this, [e, t]); } }, { key: "off", value: function off(e, t) { return Me.apply(this, [e, t]); } }, { key: "callFunction", value: function callFunction(e, t) { return lt.apply(this, [e, t]); } }, { key: "deleteFile", value: function deleteFile(e, t) { return at.apply(this, [e, t]); } }, { key: "getTempFileURL", value: function getTempFileURL(e, t) { return ct.apply(this, [e, t]); } }, { key: "downloadFile", value: function downloadFile(e, t) { return ut.apply(this, [e, t]); } }, { key: "uploadFile", value: function uploadFile(e, t) { return it.apply(this, [e, t]); } }, { key: "getUploadMetadata", value: function getUploadMetadata(e, t) { return ot.apply(this, [e, t]); } }, { key: "registerExtension", value: function registerExtension(e) { dt[e.name] = e; } }, { key: "invokeExtension", value: function () { var _invokeExtension = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(e, t) { var n; return _regenerator.default.wrap(function _callee33$(_context33) { while (1) { switch (_context33.prev = _context33.next) { case 0: n = dt[e]; if (n) { _context33.next = 3; break; } throw new te({ message: "\u6269\u5C55".concat(e, " \u5FC5\u987B\u5148\u6CE8\u518C") }); case 3: _context33.next = 5; return n.invoke(t, this); case 5: return _context33.abrupt("return", _context33.sent); case 6: case "end": return _context33.stop(); } } }, _callee33, this); })); function invokeExtension(_x29, _x30) { return _invokeExtension.apply(this, arguments); } return invokeExtension; }() }, { key: "useAdapters", value: function useAdapters(e) { var _ref13 = be(e) || {}, t = _ref13.adapter, n = _ref13.runtime; t && (ke.adapter = t), n && (ke.runtime = n); } }]); return pt; }(); var ft = new pt(); function gt(e, t, n) { void 0 === n && (n = {}); var s = /\?/.test(t), r = ""; for (var i in n) { "" === r ? !s && (t += "?") : r += "&", r += i + "=" + encodeURIComponent(n[i]); } return /^http(s)?:\/\//.test(t += r) ? t : "" + e + t; } var mt = /*#__PURE__*/function () { function mt() { (0, _classCallCheck2.default)(this, mt); } (0, _createClass2.default)(mt, [{ key: "post", value: function post(e) { var t = e.url, n = e.data, s = e.headers; return new Promise(function (e, r) { ne.request({ url: gt("https:", t), data: n, method: "POST", header: s, success: function success(t) { e(t); }, fail: function fail(e) { r(e); } }); }); } }, { key: "upload", value: function upload(e) { return new Promise(function (t, n) { var s = e.url, r = e.file, i = e.data, o = e.headers, a = e.fileType, c = ne.uploadFile({ url: gt("https:", s), name: "file", formData: Object.assign({}, i), filePath: r, fileType: a, header: o, success: function success(e) { var n = { statusCode: e.statusCode, data: e.data || {} }; 200 === e.statusCode && i.success_action_status && (n.statusCode = parseInt(i.success_action_status, 10)), t(n); }, fail: function fail(e) { n(new Error(e.errMsg || "uploadFile:fail")); } }); "function" == typeof e.onUploadProgress && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (t) { e.onUploadProgress({ loaded: t.totalBytesSent, total: t.totalBytesExpectedToSend }); }); }); } }]); return mt; }(); var yt = { setItem: function setItem(e, t) { ne.setStorageSync(e, t); }, getItem: function getItem(e) { return ne.getStorageSync(e); }, removeItem: function removeItem(e) { ne.removeStorageSync(e); }, clear: function clear() { ne.clearStorageSync(); } }; var _t = { genAdapter: function genAdapter() { return { root: {}, reqClass: mt, localStorage: yt, primaryStorage: "local" }; }, isMatch: function isMatch() { return !0; }, runtime: "uni_app" }; ft.useAdapters(_t); var wt = ft, vt = wt.init; wt.init = function (e) { e.env = e.spaceId; var t = vt.call(this, e); t.config.provider = "tencent", t.config.spaceId = e.spaceId; var n = t.auth; return t.auth = function (e) { var t = n.call(this, e); return ["linkAndRetrieveDataWithTicket", "signInAnonymously", "signOut", "getAccessToken", "getLoginState", "signInWithTicket", "getUserInfo"].forEach(function (e) { var n; t[e] = (n = t[e], function (e) { e = e || {}; var _ee = ee(e), t = _ee.success, s = _ee.fail, r = _ee.complete; if (!(t || s || r)) return n.call(this, e); n.call(this, e).then(function (e) { t && t(e), r && r(e); }, function (e) { s && s(e), r && r(e); }); }).bind(t); }), t; }, t.customAuth = t.auth, t; }; var It = wt; var St = /*#__PURE__*/function (_he) { (0, _inherits2.default)(St, _he); var _super8 = _createSuper(St); function St() { (0, _classCallCheck2.default)(this, St); return _super8.apply(this, arguments); } (0, _createClass2.default)(St, [{ key: "getAccessToken", value: function getAccessToken() { var _this11 = this; return new Promise(function (e, t) { var n = "Anonymous_Access_token"; _this11.setAccessToken(n), e(n); }); } }, { key: "setupRequest", value: function setupRequest(e, t) { var n = Object.assign({}, e, { spaceId: this.config.spaceId, timestamp: Date.now() }), s = { "Content-Type": "application/json" }; "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret); var r = ue(); s["x-client-info"] = encodeURIComponent(JSON.stringify(r)); var _se = se(), i = _se.token; return s["x-client-token"] = i, { url: this.config.requestUrl, method: "POST", data: n, dataType: "json", header: JSON.parse(JSON.stringify(s)) }; } }, { key: "uploadFileToOSS", value: function uploadFileToOSS(_ref14) { var _this12 = this; var e = _ref14.url, t = _ref14.formData, n = _ref14.name, s = _ref14.filePath, r = _ref14.fileType, i = _ref14.onUploadProgress; return new Promise(function (o, a) { var c = _this12.adapter.uploadFile({ url: e, formData: t, name: n, filePath: s, fileType: r, success: function success(e) { e && e.statusCode < 400 ? o(e) : a(new te({ code: "UPLOAD_FAILED", message: "文件上传失败" })); }, fail: function fail(e) { a(new te({ code: e.code || "UPLOAD_FAILED", message: e.message || e.errMsg || "文件上传失败" })); } }); "function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) { i({ loaded: e.totalBytesSent, total: e.totalBytesExpectedToSend }); }); }); } }, { key: "uploadFile", value: function uploadFile(_ref15) { var _this13 = this; var e = _ref15.filePath, t = _ref15.cloudPath, _ref15$fileType = _ref15.fileType, n = _ref15$fileType === void 0 ? "image" : _ref15$fileType, s = _ref15.onUploadProgress; if (!t) throw new te({ code: "CLOUDPATH_REQUIRED", message: "cloudPath不可为空" }); var r; return this.getOSSUploadOptionsFromPath({ cloudPath: t }).then(function (t) { var _t$result = t.result, i = _t$result.url, o = _t$result.formData, a = _t$result.name; r = t.result.fileUrl; var c = { url: i, formData: o, name: a, filePath: e, fileType: n }; return _this13.uploadFileToOSS(Object.assign({}, c, { onUploadProgress: s })); }).then(function () { return _this13.reportOSSUpload({ cloudPath: t }); }).then(function (t) { return new Promise(function (n, s) { t.success ? n({ success: !0, filePath: e, fileID: r }) : s(new te({ code: "UPLOAD_FAILED", message: "文件上传失败" })); }); }); } }, { key: "deleteFile", value: function deleteFile(_ref16) { var e = _ref16.fileList; var t = { method: "serverless.file.resource.delete", params: JSON.stringify({ fileList: e }) }; return this.request(this.setupRequest(t)).then(function (e) { if (e.success) return e.result; throw new te({ code: "DELETE_FILE_FAILED", message: "删除文件失败" }); }); } }, { key: "getTempFileURL", value: function getTempFileURL() { var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref17.fileList, t = _ref17.maxAge; if (!Array.isArray(e) || 0 === e.length) throw new te({ code: "INVALID_PARAM", message: "fileList的元素必须是非空的字符串" }); var n = { method: "serverless.file.resource.getTempFileURL", params: JSON.stringify({ fileList: e, maxAge: t }) }; return this.request(this.setupRequest(n)).then(function (e) { if (e.success) return { fileList: e.result.fileList.map(function (e) { return { fileID: e.fileID, tempFileURL: e.tempFileURL }; }) }; throw new te({ code: "GET_TEMP_FILE_URL_FAILED", message: "获取临时文件链接失败" }); }); } }]); return St; }(he); var bt = { init: function init(e) { var t = new St(e), n = { signInAnonymously: function signInAnonymously() { return t.authorize(); }, getLoginState: function getLoginState() { return Promise.resolve(!1); } }; return t.auth = function () { return n; }, t.customAuth = t.auth, t; } }, kt = n(function (e, t) { e.exports = r.enc.Hex; }); function At() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var n = t.data, s = t.functionName, r = t.method, i = t.headers, _t$signHeaderKeys = t.signHeaderKeys, o = _t$signHeaderKeys === void 0 ? [] : _t$signHeaderKeys, a = t.config, c = Date.now(), u = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (e) { var t = 16 * Math.random() | 0; return ("x" === e ? t : 3 & t | 8).toString(16); }), l = Object.assign({}, i, { "x-from-app-id": a.appId, "x-from-env-id": a.envId, "x-to-env-id": a.envId, "x-from-instance-id": c, "x-from-function-name": s, "x-client-timestamp": c, "x-alipay-source": "client", "x-request-id": u, "x-alipay-callid": u }), h = ["x-from-app-id", "x-from-env-id", "x-to-env-id", "x-from-instance-id", "x-from-function-name", "x-client-timestamp"].concat(o), _ref18 = e.split("?") || [], _ref19 = (0, _slicedToArray2.default)(_ref18, 2), _ref19$ = _ref19[0], d = _ref19$ === void 0 ? "" : _ref19$, _ref19$2 = _ref19[1], p = _ref19$2 === void 0 ? "" : _ref19$2, f = function (e) { var t = e.signedHeaders.join(";"), n = e.signedHeaders.map(function (t) { return "".concat(t.toLowerCase(), ":").concat(e.headers[t], "\n"); }).join(""), s = ye(e.body).toString(kt), r = "".concat(e.method.toUpperCase(), "\n").concat(e.path, "\n").concat(e.query, "\n").concat(n, "\n").concat(t, "\n").concat(s, "\n"), i = ye(r).toString(kt), o = "HMAC-SHA256\n".concat(e.timestamp, "\n").concat(i, "\n"), a = _e(o, e.secretKey).toString(kt); return "HMAC-SHA256 Credential=".concat(e.secretId, ", SignedHeaders=").concat(t, ", Signature=").concat(a); }({ path: d, query: p, method: r, headers: l, timestamp: c, body: JSON.stringify(n), secretId: a.secretId, secretKey: a.secretKey, signedHeaders: h.sort() }); return { url: "".concat(a.endpoint).concat(e.replace(/^\//, "")), headers: Object.assign({}, l, { Authorization: f }) }; } function Pt(_ref20) { var e = _ref20.url, t = _ref20.data, _ref20$method = _ref20.method, n = _ref20$method === void 0 ? "POST" : _ref20$method, _ref20$headers = _ref20.headers, s = _ref20$headers === void 0 ? {} : _ref20$headers; return new Promise(function (r, i) { ne.request({ url: e, method: n, data: t, header: s, dataType: "json", complete: function complete() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (!e.statusCode || e.statusCode >= 400) { var _ref21 = e.data || {}, _t10 = _ref21.errMsg; return i(new te({ code: "SYS_ERR", message: _t10 || e.errMsg || "request:fail" })); } r({ status: e.statusCode, data: e.data, headers: e.header }); } }); }); } function Tt(e, t) { var n = e.path, s = e.data, _e$method = e.method, r = _e$method === void 0 ? "GET" : _e$method, _At = At(n, { functionName: "", data: s, method: r, headers: { "x-alipay-cloud-mode": "oss", "x-data-api-type": "oss", "x-expire-timestamp": Date.now() + 6e4 }, signHeaderKeys: ["x-data-api-type", "x-expire-timestamp"], config: t }), i = _At.url, o = _At.headers; return Pt({ url: i, data: s, method: r, headers: o }).then(function (e) { var t = e.data || {}; if (!t.success) throw new te({ code: e.code, message: e.message, requestId: e.trace_id }); return t.data || {}; }).catch(function (e) { throw new te({ code: e.errCode, message: e.errMsg, requestId: e.requestId }); }); } function Ct() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var t = e.trim().replace(/^cloud:\/\//, ""), n = t.indexOf("/"); if (n <= 0) throw new te({ code: "INVALID_PARAM", message: "fileID不合法" }); var s = t.substring(0, n), r = t.substring(n + 1); return s !== this.config.envId && console.warn("file ".concat(e, " does not belong to env ").concat(this.config.envId)), r; } var xt = /*#__PURE__*/function () { function xt(e) { (0, _classCallCheck2.default)(this, xt); ["spaceId", "spaceAppId", "accessKey", "secretKey"].forEach(function (t) { if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error("".concat(t, " required")); }); var t = e.spaceAppId, n = e.accessKey, s = (0, _objectWithoutProperties2.default)(e, _excluded); this.config = Object.assign({}, { endpoint: e.endpoint || "https://".concat(e.envId, ".api-hz.cloudbasefunction.cn/"), envId: e.spaceId, appId: t, secretId: n }, s); } (0, _createClass2.default)(xt, [{ key: "callFunction", value: function callFunction(e) { return function (e, t) { var n = e.name, s = e.data, r = "POST", _At2 = At("/functions/invokeFunction", { functionName: n, data: s, method: r, headers: { "x-to-function-name": n }, signHeaderKeys: ["x-to-function-name"], config: t }), i = _At2.url, o = _At2.headers; return Pt({ url: i, data: s, method: r, headers: o }).then(function (e) { return e.errCode = 0, e.success = !0, e.requestId = e.requestID || e.requestId, e.result = e.data, delete e.requestID, delete e.data, e; }).catch(function (e) { throw new te({ code: e.errCode, message: e.errMsg, requestId: e.requestId }); }); }(e, this.config); } }, { key: "uploadFileToOSS", value: function uploadFileToOSS(_ref22) { var e = _ref22.url, t = _ref22.filePath, n = _ref22.fileType, s = _ref22.formData, r = _ref22.onUploadProgress; return new Promise(function (i, o) { var a = ne.uploadFile({ url: e, filePath: t, fileType: n, formData: s, success: function success(e) { e && e.statusCode < 400 ? i(e) : o(new te({ code: "UPLOAD_FAILED", message: "文件上传失败" })); }, fail: function fail(e) { o(new te({ code: e.code || "UPLOAD_FAILED", message: e.message || e.errMsg || "文件上传失败" })); } }); "function" == typeof r && a && "function" == typeof a.onProgressUpdate && a.onProgressUpdate(function (e) { r({ loaded: e.totalBytesSent, total: e.totalBytesExpectedToSend }); }); }); } }, { key: "uploadFile", value: function () { var _uploadFile2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(_ref23) { var e, _ref23$cloudPath, t, _ref23$fileType, n, s, r, i, o, a, c; return _regenerator.default.wrap(function _callee34$(_context34) { while (1) { switch (_context34.prev = _context34.next) { case 0: e = _ref23.filePath, _ref23$cloudPath = _ref23.cloudPath, t = _ref23$cloudPath === void 0 ? "" : _ref23$cloudPath, _ref23$fileType = _ref23.fileType, n = _ref23$fileType === void 0 ? "image" : _ref23$fileType, s = _ref23.onUploadProgress; if (!("string" !== f(t))) { _context34.next = 3; break; } throw new te({ code: "INVALID_PARAM", message: "cloudPath必须为字符串类型" }); case 3: if (t = t.trim()) { _context34.next = 5; break; } throw new te({ code: "INVALID_PARAM", message: "cloudPath不可为空" }); case 5: if (!/:\/\//.test(t)) { _context34.next = 7; break; } throw new te({ code: "INVALID_PARAM", message: "cloudPath不合法" }); case 7: _context34.next = 9; return Tt({ path: "/".concat(t.replace(/^\//, ""), "?post_url") }, this.config); case 9: r = _context34.sent; i = r.file_id; o = r.upload_url; a = r.form_data; c = a && a.reduce(function (e, t) { return e[t.key] = t.value, e; }, {}); return _context34.abrupt("return", this.uploadFileToOSS({ url: o, filePath: e, fileType: n, formData: c, onUploadProgress: s }).then(function () { return { fileID: i }; })); case 15: case "end": return _context34.stop(); } } }, _callee34, this); })); function uploadFile(_x31) { return _uploadFile2.apply(this, arguments); } return uploadFile; }() }, { key: "getTempFileURL", value: function () { var _getTempFileURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(_ref24) { var _this14 = this; var e; return _regenerator.default.wrap(function _callee35$(_context35) { while (1) { switch (_context35.prev = _context35.next) { case 0: e = _ref24.fileList; return _context35.abrupt("return", new Promise(function (t, n) { (!e || e.length < 0) && n(new te({ errCode: "INVALID_PARAM", errMsg: "fileList不能为空数组" })), e.length > 50 && n(new te({ errCode: "INVALID_PARAM", errMsg: "fileList数组长度不能超过50" })); var s = []; var _iterator5 = _createForOfIteratorHelper(e), _step5; try { for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) { var _t11 = _step5.value; "string" !== f(_t11) && n(new te({ errCode: "INVALID_PARAM", errMsg: "fileList的元素必须是非空的字符串" })); var _e17 = Ct.call(_this14, _t11); s.push({ file_id: _e17, expire: 600 }); } } catch (err) { _iterator5.e(err); } finally { _iterator5.f(); } Tt({ path: "/?download_url", data: { file_list: s }, method: "POST" }, _this14.config).then(function (e) { var _e$file_list = e.file_list, n = _e$file_list === void 0 ? [] : _e$file_list; t({ fileList: n.map(function (e) { return { fileID: e.file_id, tempFileURL: e.download_url }; }) }); }).catch(function (e) { return n(e); }); })); case 2: case "end": return _context35.stop(); } } }, _callee35); })); function getTempFileURL(_x32) { return _getTempFileURL.apply(this, arguments); } return getTempFileURL; }() }, { key: "deleteFile", value: function () { var _deleteFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(_ref25) { var _this15 = this; var e; return _regenerator.default.wrap(function _callee36$(_context36) { while (1) { switch (_context36.prev = _context36.next) { case 0: e = _ref25.fileList; return _context36.abrupt("return", new Promise(function (t, n) { (!e || e.length < 0) && n(new te({ errCode: "INVALID_PARAM", errMsg: "fileList不能为空数组" })), e.length > 50 && n(new te({ errCode: "INVALID_PARAM", errMsg: "fileList数组长度不能超过50" })); var s = []; var _iterator6 = _createForOfIteratorHelper(e), _step6; try { for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) { var _t12 = _step6.value; "string" !== f(_t12) && n(new te({ errCode: "INVALID_PARAM", errMsg: "fileList的元素必须是非空的字符串" })), s.push(Ct.call(_this15, _t12)); } } catch (err) { _iterator6.e(err); } finally { _iterator6.f(); } Tt({ path: "/?delete", data: { file_list: s }, method: "POST" }, _this15.config).then(function (e) { var _e$file_list2 = e.file_list, n = _e$file_list2 === void 0 ? [] : _e$file_list2; t({ fileList: n.map(function (e) { return { fileID: e.file_id, tempFileURL: e.download_url }; }) }); }).catch(function (e) { return n(e); }); })); case 2: case "end": return _context36.stop(); } } }, _callee36); })); function deleteFile(_x33) { return _deleteFile.apply(this, arguments); } return deleteFile; }() }]); return xt; }(); var Ot = { init: function init(e) { e.envId = e.spaceId, e.provider = "alipay"; var t = new xt(e); return t.auth = function () { return { signInAnonymously: function signInAnonymously() { return Promise.resolve(); }, getLoginState: function getLoginState() { return Promise.resolve(!0); } }; }, t; } }; function Et(_ref26) { var e = _ref26.data; var t; t = ue(); var n = JSON.parse(JSON.stringify(e || {})); if (Object.assign(n, { clientInfo: t }), !n.uniIdToken) { var _se2 = se(), _e18 = _se2.token; _e18 && (n.uniIdToken = _e18); } return n; } function Lt() { return _Lt.apply(this, arguments); } function _Lt() { _Lt = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee57() { var _this28 = this; var _ref68, e, t, _this$__dev__, n, s, r, i, o, a, _args6 = arguments; return _regenerator.default.wrap(function _callee57$(_context57) { while (1) { switch (_context57.prev = _context57.next) { case 0: _ref68 = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : {}, e = _ref68.name, t = _ref68.data; _context57.next = 3; return this.__dev__.initLocalNetwork(); case 3: _this$__dev__ = this.__dev__, n = _this$__dev__.localAddress, s = _this$__dev__.localPort, r = { aliyun: "aliyun", tencent: "tcb", alipay: "alipay" }[this.config.provider], i = this.config.spaceId, o = "http://".concat(n, ":").concat(s, "/system/check-function"), a = "http://".concat(n, ":").concat(s, "/cloudfunctions/").concat(e); return _context57.abrupt("return", new Promise(function (t, n) { ne.request({ method: "POST", url: o, data: { name: e, platform: P, provider: r, spaceId: i }, timeout: 3e3, success: function success(e) { t(e); }, fail: function fail() { t({ data: { code: "NETWORK_ERROR", message: "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下,自动切换为已部署的云函数。" } }); } }); }).then(function () { var _ref69 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref69.data; var _ref70 = e || {}, t = _ref70.code, n = _ref70.message; return { code: 0 === t ? 0 : t || "SYS_ERR", message: n || "SYS_ERR" }; }).then(function (_ref71) { var n = _ref71.code, s = _ref71.message; if (0 !== n) { switch (n) { case "MODULE_ENCRYPTED": console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u4F9D\u8D56\u52A0\u5BC6\u516C\u5171\u6A21\u5757\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570")); break; case "FUNCTION_ENCRYPTED": console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u5DF2\u52A0\u5BC6\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570")); break; case "ACTION_ENCRYPTED": console.error(s || "需要访问加密的uni-clientDB-action,自动切换为云端环境"); break; case "NETWORK_ERROR": { var _e30 = "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下"; throw console.error(_e30), new Error(_e30); } case "SWITCH_TO_CLOUD": break; default: { var _e31 = "\u68C0\u6D4B\u672C\u5730\u8C03\u8BD5\u670D\u52A1\u51FA\u73B0\u9519\u8BEF\uFF1A".concat(s, "\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u73AF\u5883\u6216\u91CD\u542F\u5BA2\u6237\u7AEF\u518D\u8BD5"); throw console.error(_e31), new Error(_e31); } } return _this28._callCloudFunction({ name: e, data: t }); } return new Promise(function (e, n) { var s = Et.call(_this28, { data: t }); ne.request({ method: "POST", url: a, data: { provider: r, platform: P, param: s }, success: function success() { var _ref72 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, t = _ref72.statusCode, s = _ref72.data; return !t || t >= 400 ? n(new te({ code: s.code || "SYS_ERR", message: s.message || "request:fail" })) : e({ result: s }); }, fail: function fail(e) { n(new te({ code: e.code || e.errCode || "SYS_ERR", message: e.message || e.errMsg || "request:fail" })); } }); }); })); case 5: case "end": return _context57.stop(); } } }, _callee57, this); })); return _Lt.apply(this, arguments); } var Rt = [{ rule: /fc_function_not_found|FUNCTION_NOT_FOUND/, content: ",云函数[{functionName}]在云端不存在,请检查此云函数名称是否正确以及该云函数是否已上传到服务空间", mode: "append" }]; var Ut = /[\\^$.*+?()[\]{}|]/g, Nt = RegExp(Ut.source); function Dt(e, t, n) { return e.replace(new RegExp((s = t) && Nt.test(s) ? s.replace(Ut, "\\$&") : s, "g"), n); var s; } var Mt = "none", qt = "request", Ft = "response", Kt = "both"; var jt = /*#__PURE__*/function () { function jt() { var _ref27 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref27.secretType, t = _ref27.uniCloudIns; (0, _classCallCheck2.default)(this, jt); this.clientType = "", this.secretType = e || Mt, this.uniCloudIns = t; var _this$uniCloudIns$con = this.uniCloudIns.config, n = _this$uniCloudIns$con.provider, s = _this$uniCloudIns$con.spaceId; var r; this.provider = n, this.spaceId = s, this.scopedGlobalCache = (r = this.uniCloudIns, L("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", r.config.spaceId))); } (0, _createClass2.default)(jt, [{ key: "getSystemInfo", value: function getSystemInfo() { return this._systemInfo || (this._systemInfo = ae()), this._systemInfo; } }, { key: "appId", get: function get() { return this.getSystemInfo().appId; } }, { key: "deviceId", get: function get() { return this.getSystemInfo().deviceId; } }, { key: "encryptData", value: function () { var _encryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(e) { return _regenerator.default.wrap(function _callee37$(_context37) { while (1) { switch (_context37.prev = _context37.next) { case 0: return _context37.abrupt("return", this.secretType === Mt ? e : this.platformEncryptData(e)); case 1: case "end": return _context37.stop(); } } }, _callee37, this); })); function encryptData(_x34) { return _encryptData.apply(this, arguments); } return encryptData; }() }, { key: "decryptResult", value: function () { var _decryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(e) { var _ref28, t, n; return _regenerator.default.wrap(function _callee38$(_context38) { while (1) { switch (_context38.prev = _context38.next) { case 0: if (!(this.secretType === Mt)) { _context38.next = 2; break; } return _context38.abrupt("return", e); case 2: _ref28 = e || {}, t = _ref28.errCode, n = _ref28.content; return _context38.abrupt("return", t || !n ? e : this.secretType === qt ? n : this.platformDecryptResult(e)); case 4: case "end": return _context38.stop(); } } }, _callee38, this); })); function decryptResult(_x35) { return _decryptResult.apply(this, arguments); } return decryptResult; }() }, { key: "wrapVerifyClientCallFunction", value: function wrapVerifyClientCallFunction(e) { var t = this; return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() { var _ref30, n, _ref30$data, s, r, _args39 = arguments; return _regenerator.default.wrap(function _callee39$(_context39) { while (1) { switch (_context39.prev = _context39.next) { case 0: _ref30 = _args39.length > 0 && _args39[0] !== undefined ? _args39[0] : {}, n = _ref30.name, _ref30$data = _ref30.data, s = _ref30$data === void 0 ? {} : _ref30$data; _context39.next = 3; return t.prepare(); case 3: _context39.next = 5; return t.platformGetSignOption(); case 5: (s = JSON.parse(JSON.stringify(s)))._uniCloudOptions = _context39.sent; _context39.next = 8; return e({ name: n, data: s }); case 8: r = _context39.sent; _context39.t0 = t.isClientKeyNotFound(r); if (!_context39.t0) { _context39.next = 19; break; } _context39.next = 13; return t.prepare({ forceUpdate: !0 }); case 13: _context39.next = 15; return t.platformGetSignOption(); case 15: s._uniCloudOptions = _context39.sent; _context39.next = 18; return e({ name: n, data: s }); case 18: r = _context39.sent; case 19: return _context39.abrupt("return", r); case 20: case "end": return _context39.stop(); } } }, _callee39); })); } }, { key: "wrapEncryptDataCallFunction", value: function wrapEncryptDataCallFunction(e) { var t = this; return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40() { var _ref32, n, _ref32$data, s, r, i, _r3, _args40 = arguments; return _regenerator.default.wrap(function _callee40$(_context40) { while (1) { switch (_context40.prev = _context40.next) { case 0: _ref32 = _args40.length > 0 && _args40[0] !== undefined ? _args40[0] : {}, n = _ref32.name, _ref32$data = _ref32.data, s = _ref32$data === void 0 ? {} : _ref32$data; _context40.next = 3; return t.prepare(); case 3: _context40.next = 5; return t.encryptData(s); case 5: r = _context40.sent; _context40.next = 8; return e({ name: n, data: r }); case 8: i = _context40.sent; if (!t.isClientKeyNotFound(i)) { _context40.next = 21; break; } _context40.next = 12; return t.prepare({ forceUpdate: !0 }); case 12: _context40.next = 14; return t.encryptData(s); case 14: _r3 = _context40.sent; _context40.next = 17; return t.platformGetSignOption(); case 17: s._uniCloudOptions = _context40.sent; _context40.next = 20; return e({ name: n, data: _r3 }); case 20: i = _context40.sent; case 21: _context40.next = 23; return t.decryptResult(i.result); case 23: i.result = _context40.sent; return _context40.abrupt("return", i); case 25: case "end": return _context40.stop(); } } }, _callee40); })); } }]); return jt; }(); /*! MIT License. Copyright 2015-2018 Richard Moore . See LICENSE.txt. */ function Bt(e) { return parseInt(e) === e; } function $t(e) { if (!Bt(e.length)) return !1; for (var t = 0; t < e.length; t++) { if (!Bt(e[t]) || e[t] < 0 || e[t] > 255) return !1; } return !0; } function Wt(e, t) { if (e.buffer && "Uint8Array" === e.name) return t && (e = e.slice ? e.slice() : Array.prototype.slice.call(e)), e; if (Array.isArray(e)) { if (!$t(e)) throw new Error("Array contains invalid value: " + e); return new Uint8Array(e); } if (Bt(e.length) && $t(e)) return new Uint8Array(e); throw new Error("unsupported array-like object"); } function Ht(e) { return new Uint8Array(e); } function zt(e, t, n, s, r) { null == s && null == r || (e = e.slice ? e.slice(s, r) : Array.prototype.slice.call(e, s, r)), t.set(e, n); } var Jt, Vt = { toBytes: function toBytes(e) { var t = [], n = 0; for (e = encodeURI(e); n < e.length;) { var s = e.charCodeAt(n++); 37 === s ? (t.push(parseInt(e.substr(n, 2), 16)), n += 2) : t.push(s); } return Wt(t); }, fromBytes: function fromBytes(e) { for (var t = [], n = 0; n < e.length;) { var s = e[n]; s < 128 ? (t.push(String.fromCharCode(s)), n++) : s > 191 && s < 224 ? (t.push(String.fromCharCode((31 & s) << 6 | 63 & e[n + 1])), n += 2) : (t.push(String.fromCharCode((15 & s) << 12 | (63 & e[n + 1]) << 6 | 63 & e[n + 2])), n += 3); } return t.join(""); } }, Gt = (Jt = "0123456789abcdef", { toBytes: function toBytes(e) { for (var t = [], n = 0; n < e.length; n += 2) { t.push(parseInt(e.substr(n, 2), 16)); } return t; }, fromBytes: function fromBytes(e) { for (var t = [], n = 0; n < e.length; n++) { var s = e[n]; t.push(Jt[(240 & s) >> 4] + Jt[15 & s]); } return t.join(""); } }), Yt = { 16: 10, 24: 12, 32: 14 }, Qt = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145], Xt = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22], Zt = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125], en = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986], tn = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766], nn = [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126], sn = [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436], rn = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890], on = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935], an = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600], cn = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480], un = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795], ln = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855], hn = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150], dn = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925]; function pn(e) { for (var t = [], n = 0; n < e.length; n += 4) { t.push(e[n] << 24 | e[n + 1] << 16 | e[n + 2] << 8 | e[n + 3]); } return t; } var fn = /*#__PURE__*/function () { function fn(e) { (0, _classCallCheck2.default)(this, fn); if (!(this instanceof fn)) throw Error("AES must be instanitated with `new`"); Object.defineProperty(this, "key", { value: Wt(e, !0) }), this._prepare(); } (0, _createClass2.default)(fn, [{ key: "_prepare", value: function _prepare() { var e = Yt[this.key.length]; if (null == e) throw new Error("invalid key size (must be 16, 24 or 32 bytes)"); this._Ke = [], this._Kd = []; for (var t = 0; t <= e; t++) { this._Ke.push([0, 0, 0, 0]), this._Kd.push([0, 0, 0, 0]); } var n, s = 4 * (e + 1), r = this.key.length / 4, i = pn(this.key); for (t = 0; t < r; t++) { n = t >> 2, this._Ke[n][t % 4] = i[t], this._Kd[e - n][t % 4] = i[t]; } for (var o, a = 0, c = r; c < s;) { if (o = i[r - 1], i[0] ^= Xt[o >> 16 & 255] << 24 ^ Xt[o >> 8 & 255] << 16 ^ Xt[255 & o] << 8 ^ Xt[o >> 24 & 255] ^ Qt[a] << 24, a += 1, 8 != r) for (t = 1; t < r; t++) { i[t] ^= i[t - 1]; } else { for (t = 1; t < r / 2; t++) { i[t] ^= i[t - 1]; } o = i[r / 2 - 1], i[r / 2] ^= Xt[255 & o] ^ Xt[o >> 8 & 255] << 8 ^ Xt[o >> 16 & 255] << 16 ^ Xt[o >> 24 & 255] << 24; for (t = r / 2 + 1; t < r; t++) { i[t] ^= i[t - 1]; } } for (t = 0; t < r && c < s;) { u = c >> 2, l = c % 4, this._Ke[u][l] = i[t], this._Kd[e - u][l] = i[t++], c++; } } for (var u = 1; u < e; u++) { for (var l = 0; l < 4; l++) { o = this._Kd[u][l], this._Kd[u][l] = un[o >> 24 & 255] ^ ln[o >> 16 & 255] ^ hn[o >> 8 & 255] ^ dn[255 & o]; } } } }, { key: "encrypt", value: function encrypt(e) { if (16 != e.length) throw new Error("invalid plaintext size (must be 16 bytes)"); for (var t = this._Ke.length - 1, n = [0, 0, 0, 0], s = pn(e), r = 0; r < 4; r++) { s[r] ^= this._Ke[0][r]; } for (var i = 1; i < t; i++) { for (r = 0; r < 4; r++) { n[r] = en[s[r] >> 24 & 255] ^ tn[s[(r + 1) % 4] >> 16 & 255] ^ nn[s[(r + 2) % 4] >> 8 & 255] ^ sn[255 & s[(r + 3) % 4]] ^ this._Ke[i][r]; } s = n.slice(); } var o, a = Ht(16); for (r = 0; r < 4; r++) { o = this._Ke[t][r], a[4 * r] = 255 & (Xt[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (Xt[s[(r + 1) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (Xt[s[(r + 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (Xt[255 & s[(r + 3) % 4]] ^ o); } return a; } }, { key: "decrypt", value: function decrypt(e) { if (16 != e.length) throw new Error("invalid ciphertext size (must be 16 bytes)"); for (var t = this._Kd.length - 1, n = [0, 0, 0, 0], s = pn(e), r = 0; r < 4; r++) { s[r] ^= this._Kd[0][r]; } for (var i = 1; i < t; i++) { for (r = 0; r < 4; r++) { n[r] = rn[s[r] >> 24 & 255] ^ on[s[(r + 3) % 4] >> 16 & 255] ^ an[s[(r + 2) % 4] >> 8 & 255] ^ cn[255 & s[(r + 1) % 4]] ^ this._Kd[i][r]; } s = n.slice(); } var o, a = Ht(16); for (r = 0; r < 4; r++) { o = this._Kd[t][r], a[4 * r] = 255 & (Zt[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (Zt[s[(r + 3) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (Zt[s[(r + 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (Zt[255 & s[(r + 1) % 4]] ^ o); } return a; } }]); return fn; }(); var gn = /*#__PURE__*/function () { function gn(e) { (0, _classCallCheck2.default)(this, gn); if (!(this instanceof gn)) throw Error("AES must be instanitated with `new`"); this.description = "Electronic Code Block", this.name = "ecb", this._aes = new fn(e); } (0, _createClass2.default)(gn, [{ key: "encrypt", value: function encrypt(e) { if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)"); for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) { zt(e, n, 0, s, s + 16), zt(n = this._aes.encrypt(n), t, s); } return t; } }, { key: "decrypt", value: function decrypt(e) { if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)"); for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) { zt(e, n, 0, s, s + 16), zt(n = this._aes.decrypt(n), t, s); } return t; } }]); return gn; }(); var mn = /*#__PURE__*/function () { function mn(e, t) { (0, _classCallCheck2.default)(this, mn); if (!(this instanceof mn)) throw Error("AES must be instanitated with `new`"); if (this.description = "Cipher Block Chaining", this.name = "cbc", t) { if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)"); } else t = Ht(16); this._lastCipherblock = Wt(t, !0), this._aes = new fn(e); } (0, _createClass2.default)(mn, [{ key: "encrypt", value: function encrypt(e) { if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)"); for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) { zt(e, n, 0, s, s + 16); for (var r = 0; r < 16; r++) { n[r] ^= this._lastCipherblock[r]; } this._lastCipherblock = this._aes.encrypt(n), zt(this._lastCipherblock, t, s); } return t; } }, { key: "decrypt", value: function decrypt(e) { if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)"); for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) { zt(e, n, 0, s, s + 16), n = this._aes.decrypt(n); for (var r = 0; r < 16; r++) { t[s + r] = n[r] ^ this._lastCipherblock[r]; } zt(e, this._lastCipherblock, 0, s, s + 16); } return t; } }]); return mn; }(); var yn = /*#__PURE__*/function () { function yn(e, t, n) { (0, _classCallCheck2.default)(this, yn); if (!(this instanceof yn)) throw Error("AES must be instanitated with `new`"); if (this.description = "Cipher Feedback", this.name = "cfb", t) { if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 size)"); } else t = Ht(16); n || (n = 1), this.segmentSize = n, this._shiftRegister = Wt(t, !0), this._aes = new fn(e); } (0, _createClass2.default)(yn, [{ key: "encrypt", value: function encrypt(e) { if (e.length % this.segmentSize != 0) throw new Error("invalid plaintext size (must be segmentSize bytes)"); for (var t, n = Wt(e, !0), s = 0; s < n.length; s += this.segmentSize) { t = this._aes.encrypt(this._shiftRegister); for (var r = 0; r < this.segmentSize; r++) { n[s + r] ^= t[r]; } zt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), zt(n, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize); } return n; } }, { key: "decrypt", value: function decrypt(e) { if (e.length % this.segmentSize != 0) throw new Error("invalid ciphertext size (must be segmentSize bytes)"); for (var t, n = Wt(e, !0), s = 0; s < n.length; s += this.segmentSize) { t = this._aes.encrypt(this._shiftRegister); for (var r = 0; r < this.segmentSize; r++) { n[s + r] ^= t[r]; } zt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), zt(e, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize); } return n; } }]); return yn; }(); var _n = /*#__PURE__*/function () { function _n(e, t) { (0, _classCallCheck2.default)(this, _n); if (!(this instanceof _n)) throw Error("AES must be instanitated with `new`"); if (this.description = "Output Feedback", this.name = "ofb", t) { if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)"); } else t = Ht(16); this._lastPrecipher = Wt(t, !0), this._lastPrecipherIndex = 16, this._aes = new fn(e); } (0, _createClass2.default)(_n, [{ key: "encrypt", value: function encrypt(e) { for (var t = Wt(e, !0), n = 0; n < t.length; n++) { 16 === this._lastPrecipherIndex && (this._lastPrecipher = this._aes.encrypt(this._lastPrecipher), this._lastPrecipherIndex = 0), t[n] ^= this._lastPrecipher[this._lastPrecipherIndex++]; } return t; } }, { key: "decrypt", value: function decrypt(e) { return this.encrypt(e); } }]); return _n; }(); var wn = /*#__PURE__*/function () { function wn(e) { (0, _classCallCheck2.default)(this, wn); if (!(this instanceof wn)) throw Error("Counter must be instanitated with `new`"); 0 === e || e || (e = 1), "number" == typeof e ? (this._counter = Ht(16), this.setValue(e)) : this.setBytes(e); } (0, _createClass2.default)(wn, [{ key: "setValue", value: function setValue(e) { if ("number" != typeof e || parseInt(e) != e) throw new Error("invalid counter value (must be an integer)"); if (e > Number.MAX_SAFE_INTEGER) throw new Error("integer value out of safe range"); for (var t = 15; t >= 0; --t) { this._counter[t] = e % 256, e = parseInt(e / 256); } } }, { key: "setBytes", value: function setBytes(e) { if (16 != (e = Wt(e, !0)).length) throw new Error("invalid counter bytes size (must be 16 bytes)"); this._counter = e; } }, { key: "increment", value: function increment() { for (var e = 15; e >= 0; e--) { if (255 !== this._counter[e]) { this._counter[e]++; break; } this._counter[e] = 0; } } }]); return wn; }(); var vn = /*#__PURE__*/function () { function vn(e, t) { (0, _classCallCheck2.default)(this, vn); if (!(this instanceof vn)) throw Error("AES must be instanitated with `new`"); this.description = "Counter", this.name = "ctr", t instanceof wn || (t = new wn(t)), this._counter = t, this._remainingCounter = null, this._remainingCounterIndex = 16, this._aes = new fn(e); } (0, _createClass2.default)(vn, [{ key: "encrypt", value: function encrypt(e) { for (var t = Wt(e, !0), n = 0; n < t.length; n++) { 16 === this._remainingCounterIndex && (this._remainingCounter = this._aes.encrypt(this._counter._counter), this._remainingCounterIndex = 0, this._counter.increment()), t[n] ^= this._remainingCounter[this._remainingCounterIndex++]; } return t; } }, { key: "decrypt", value: function decrypt(e) { return this.encrypt(e); } }]); return vn; }(); var In = { AES: fn, Counter: wn, ModeOfOperation: { ecb: gn, cbc: mn, cfb: yn, ofb: _n, ctr: vn }, utils: { hex: Gt, utf8: Vt }, padding: { pkcs7: { pad: function pad(e) { var t = 16 - (e = Wt(e, !0)).length % 16, n = Ht(e.length + t); zt(e, n); for (var s = e.length; s < n.length; s++) { n[s] = t; } return n; }, strip: function strip(e) { if ((e = Wt(e, !0)).length < 16) throw new Error("PKCS#7 invalid length"); var t = e[e.length - 1]; if (t > 16) throw new Error("PKCS#7 padding byte out of range"); for (var n = e.length - t, s = 0; s < t; s++) { if (e[n + s] !== t) throw new Error("PKCS#7 invalid padding byte"); } var r = Ht(n); return zt(e, r, 0, 0, n), r; } } }, _arrayTest: { coerceArray: Wt, createArray: Ht, copyArray: zt } }; function Sn(e, t, n) { var s = new Uint8Array(uni.base64ToArrayBuffer(t)), r = In.utils.utf8.toBytes(n), i = In.utils.utf8.toBytes(e), o = new In.ModeOfOperation.cbc(s, r), a = In.padding.pkcs7.pad(i), c = o.encrypt(a); return uni.arrayBufferToBase64(c); } var bn = { code: 2e4, message: "System error" }, kn = { code: 20101, message: "Invalid client" }, An = { code: 20102, message: "Get encrypt key failed" }, Pn = { 10001: "Secure network is not supported on current playground or unimpsdk", 10003: "Config missing in current app. If the problem pesist, please contact DCloud.", 10009: "Encrypt payload failed", 10010: "Decrypt response failed" }; function Tn(e) { var _ref33 = e || {}, t = _ref33.errSubject, n = _ref33.subject, s = _ref33.errCode, r = _ref33.errMsg, i = _ref33.code, o = _ref33.message, a = _ref33.cause; return new te({ subject: t || n || "uni-secure-network", code: s || i || bn.code, message: r || o, cause: a }); } var Cn, xn, On = null; var En = /*#__PURE__*/function (_jt) { (0, _inherits2.default)(En, _jt); var _super9 = _createSuper(En); function En(e) { var _this16; (0, _classCallCheck2.default)(this, En); _this16 = _super9.call(this, e), _this16.clientType = "mp-weixin", _this16.userEncryptKey = null; return _this16; } (0, _createClass2.default)(En, [{ key: "isLogin", value: function isLogin() { return !!this.scopedGlobalCache.mpWeixinCode || !!this.scopedGlobalCache.mpWeixinOpenid; } }, { key: "prepare", value: function () { var _prepare2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee41() { return _regenerator.default.wrap(function _callee41$(_context41) { while (1) { switch (_context41.prev = _context41.next) { case 0: if (this.isLogin()) { _context41.next = 7; break; } if (this.scopedGlobalCache.initPromise) { _context41.next = 3; break; } throw new Error("`uniCloud.initSecureNetworkByWeixin` has not yet been called"); case 3: _context41.next = 5; return this.scopedGlobalCache.initPromise; case 5: if (this.isLogin()) { _context41.next = 7; break; } throw new Error("uniCloud.initSecureNetworkByWeixin` has not yet been called or successfully excuted"); case 7: case "end": return _context41.stop(); } } }, _callee41, this); })); function prepare() { return _prepare2.apply(this, arguments); } return prepare; }() }, { key: "getUserEncryptKey", value: function () { var _getUserEncryptKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee42() { var _this17 = this; var e; return _regenerator.default.wrap(function _callee42$(_context42) { while (1) { switch (_context42.prev = _context42.next) { case 0: if (!this.userEncryptKey) { _context42.next = 2; break; } return _context42.abrupt("return", this.userEncryptKey); case 2: if (!(On && On.expireTime)) { _context42.next = 6; break; } e = Date.now(); if (!(On.expireTime - e > 0)) { _context42.next = 6; break; } return _context42.abrupt("return", (this.userEncryptKey = On, this.userEncryptKey)); case 6: return _context42.abrupt("return", new Promise(function (e, t) { uni.getUserCryptoManager().getLatestUserKey({ success: function success(t) { On = t, _this17.userEncryptKey = t, e(_this17.userEncryptKey); }, fail: function fail(e) { t(Tn(_objectSpread(_objectSpread({}, An), {}, { cause: e }))); } }); })); case 7: case "end": return _context42.stop(); } } }, _callee42, this); })); function getUserEncryptKey() { return _getUserEncryptKey.apply(this, arguments); } return getUserEncryptKey; }() }, { key: "getWxAppId", value: function getWxAppId() { return wx.getAccountInfoSync().miniProgram.appId; } }, { key: "platformGetSignOption", value: function () { var _platformGetSignOption = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee43() { var _yield$this$getUserEn, e, t, n; return _regenerator.default.wrap(function _callee43$(_context43) { while (1) { switch (_context43.prev = _context43.next) { case 0: _context43.next = 2; return this.getUserEncryptKey(); case 2: _yield$this$getUserEn = _context43.sent; e = _yield$this$getUserEn.encryptKey; t = _yield$this$getUserEn.iv; n = _yield$this$getUserEn.version; return _context43.abrupt("return", { verifyClientSign: Sn(JSON.stringify({ data: JSON.stringify({}), appId: this.appId, deviceId: this.deviceId, wxAppId: this.getWxAppId(), simulator: "devtools" === ae().platform, timestamp: Date.now() }), e, t), encryptKeyId: n, mpWeixinCode: this.scopedGlobalCache.mpWeixinCode, mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid }); case 7: case "end": return _context43.stop(); } } }, _callee43, this); })); function platformGetSignOption() { return _platformGetSignOption.apply(this, arguments); } return platformGetSignOption; }() }, { key: "platformEncryptData", value: function () { var _platformEncryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee44(e) { var _yield$this$getUserEn2, t, n, s, r; return _regenerator.default.wrap(function _callee44$(_context44) { while (1) { switch (_context44.prev = _context44.next) { case 0: _context44.next = 2; return this.getUserEncryptKey(); case 2: _yield$this$getUserEn2 = _context44.sent; t = _yield$this$getUserEn2.encryptKey; n = _yield$this$getUserEn2.iv; s = _yield$this$getUserEn2.version; r = { secretType: this.secretType, encryptKeyId: s, mpWeixinCode: this.scopedGlobalCache.mpWeixinCode, mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid }; return _context44.abrupt("return", this.secretType === Ft ? { content: e, _uniCloudOptions: r } : { content: Sn(JSON.stringify({ data: JSON.stringify(e), appId: this.appId, deviceId: this.deviceId, wxAppId: this.getWxAppId(), simulator: "devtools" === ae().platform, timestamp: Date.now() }), t, n), _uniCloudOptions: r }); case 8: case "end": return _context44.stop(); } } }, _callee44, this); })); function platformEncryptData(_x36) { return _platformEncryptData.apply(this, arguments); } return platformEncryptData; }() }, { key: "platformDecryptResult", value: function () { var _platformDecryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee45(e) { var t, _yield$this$getUserEn3, n, s; return _regenerator.default.wrap(function _callee45$(_context45) { while (1) { switch (_context45.prev = _context45.next) { case 0: t = e.content; _context45.next = 3; return this.getUserEncryptKey(); case 3: _yield$this$getUserEn3 = _context45.sent; n = _yield$this$getUserEn3.encryptKey; s = _yield$this$getUserEn3.iv; return _context45.abrupt("return", JSON.parse(function (e, t, n) { var s = new Uint8Array(uni.base64ToArrayBuffer(e)), r = new Uint8Array(uni.base64ToArrayBuffer(t)), i = In.utils.utf8.toBytes(n), o = new In.ModeOfOperation.cbc(r, i), a = In.padding.pkcs7.strip(o.decrypt(s)); return In.utils.utf8.fromBytes(a); }(t, n, s))); case 7: case "end": return _context45.stop(); } } }, _callee45, this); })); function platformDecryptResult(_x37) { return _platformDecryptResult.apply(this, arguments); } return platformDecryptResult; }() }, { key: "isClientKeyNotFound", value: function isClientKeyNotFound() { return !1; } }]); return En; }(jt); function Ln(e) { var t = ["hasClientKey", "encryptGetClientKeyPayload", "setClientKey", "encrypt", "decrypt"], n = {}; var _loop = function _loop(_s10) { var r = t[_s10]; n[r] = function () { for (var _len = arguments.length, t = new Array(_len), _key = 0; _key < _len; _key++) { t[_key] = arguments[_key]; } return new Promise(function (n, s) { "function" == typeof e[r] ? e[r].apply(e, t.concat([function () { var _ref34 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref34.type, t = _ref34.data, r = _ref34.errCode, i = _ref34.errMsg, o = _ref34.errSubject, a = _ref34.message; "success" === e ? n(t) : s(Tn({ errCode: r, errMsg: Pn[r] || i || a, errSubject: o })); }])) : s(Tn({ message: "请检查manifest.json内是否开启安全网络模块,另外注意标准基座不支持安全网络模块" })); }); }; }; for (var _s10 = 0; _s10 < t.length; _s10++) { _loop(_s10); } return n; } var Rn = /*#__PURE__*/function (_jt2) { (0, _inherits2.default)(Rn, _jt2); var _super10 = _createSuper(Rn); function Rn(e) { var _this18; (0, _classCallCheck2.default)(this, Rn); _this18 = _super10.call(this, e), _this18.clientType = "app", _this18.appUtils = _objectSpread({}, Ln(uni.requireNativePlugin("plus"))), _this18.systemInfo = Cn || (Cn = ae()); return _this18; } (0, _createClass2.default)(Rn, [{ key: "hasClientKey", value: function () { var _hasClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee46() { return _regenerator.default.wrap(function _callee46$(_context46) { while (1) { switch (_context46.prev = _context46.next) { case 0: _context46.next = 2; return this.appUtils.hasClientKey({ provider: this.provider, spaceId: this.spaceId }); case 2: this._hasClientKey = _context46.sent; return _context46.abrupt("return", this._hasClientKey); case 4: case "end": return _context46.stop(); } } }, _callee46, this); })); function hasClientKey() { return _hasClientKey.apply(this, arguments); } return hasClientKey; }() }, { key: "getAppClientKey", value: function () { var _getAppClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee47() { var _yield$this$appUtils$, e, t, n, s, r; return _regenerator.default.wrap(function _callee47$(_context47) { while (1) { switch (_context47.prev = _context47.next) { case 0: _context47.next = 2; return this.appUtils.encryptGetClientKeyPayload({ data: JSON.stringify({}) }); case 2: _yield$this$appUtils$ = _context47.sent; e = _yield$this$appUtils$.data; t = _yield$this$appUtils$.key; _context47.next = 7; return this.uniCloudIns.callFunction({ name: "DCloud-clientDB", data: { redirectTo: "encryption", action: "getAppClientKey", data: e, key: t } }); case 7: _context47.t0 = _context47.sent.result; if (_context47.t0) { _context47.next = 10; break; } _context47.t0 = {}; case 10: n = _context47.t0; if (!(0 !== n.errCode)) { _context47.next = 13; break; } throw function (e) { return new te({ subject: e.errSubject || "uni-secure-network", code: e.errCode || e.code || bn.code, message: e.errMsg || e.message }); }(n); case 13: s = n.clientKey, r = n.key; _context47.next = 16; return this.appUtils.setClientKey({ provider: this.provider, spaceId: this.spaceId, clientKey: s, key: r }); case 16: case "end": return _context47.stop(); } } }, _callee47, this); })); function getAppClientKey() { return _getAppClientKey.apply(this, arguments); } return getAppClientKey; }() }, { key: "ensureClientKey", value: function () { var _ensureClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee48() { var _this19 = this; var _ref35, _ref35$forceUpdate, e, _args48 = arguments; return _regenerator.default.wrap(function _callee48$(_context48) { while (1) { switch (_context48.prev = _context48.next) { case 0: _ref35 = _args48.length > 0 && _args48[0] !== undefined ? _args48[0] : {}, _ref35$forceUpdate = _ref35.forceUpdate, e = _ref35$forceUpdate === void 0 ? !1 : _ref35$forceUpdate; _context48.t1 = !0; _context48.next = 4; return this.hasClientKey(); case 4: _context48.t2 = _context48.sent; _context48.t0 = _context48.t1 !== _context48.t2; if (_context48.t0) { _context48.next = 8; break; } _context48.t0 = e; case 8: if (!_context48.t0) { _context48.next = 10; break; } return _context48.abrupt("return", (e && this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus === h || !e && this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus !== p || (this.scopedGlobalCache.initPromise = this.getAppClientKey(), this.scopedGlobalCache.initPromise.then(function (e) { _this19.scopedGlobalCache.initStatus = d; }).catch(function (e) { throw _this19.scopedGlobalCache.initStatus = p, e; }), this.scopedGlobalCache.initStatus = h), this.scopedGlobalCache.initPromise)); case 10: case "end": return _context48.stop(); } } }, _callee48, this); })); function ensureClientKey() { return _ensureClientKey.apply(this, arguments); } return ensureClientKey; }() }, { key: "prepare", value: function () { var _prepare3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee49() { var _ref36, _ref36$forceUpdate, e, _args49 = arguments; return _regenerator.default.wrap(function _callee49$(_context49) { while (1) { switch (_context49.prev = _context49.next) { case 0: _ref36 = _args49.length > 0 && _args49[0] !== undefined ? _args49[0] : {}, _ref36$forceUpdate = _ref36.forceUpdate, e = _ref36$forceUpdate === void 0 ? !1 : _ref36$forceUpdate; _context49.next = 3; return this.ensureClientKey({ forceUpdate: e }); case 3: case "end": return _context49.stop(); } } }, _callee49, this); })); function prepare() { return _prepare3.apply(this, arguments); } return prepare; }() }, { key: "platformGetSignOption", value: function () { var _platformGetSignOption2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee50() { var _yield$this$appUtils$2, e, t; return _regenerator.default.wrap(function _callee50$(_context50) { while (1) { switch (_context50.prev = _context50.next) { case 0: _context50.next = 2; return this.appUtils.encrypt({ provider: this.provider, spaceId: this.spaceId, data: JSON.stringify({}) }); case 2: _yield$this$appUtils$2 = _context50.sent; e = _yield$this$appUtils$2.data; t = _yield$this$appUtils$2.key; return _context50.abrupt("return", { verifyClientSign: e, encryptKeyId: t }); case 6: case "end": return _context50.stop(); } } }, _callee50, this); })); function platformGetSignOption() { return _platformGetSignOption2.apply(this, arguments); } return platformGetSignOption; }() }, { key: "platformEncryptData", value: function () { var _platformEncryptData2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee51(e) { var _yield$this$appUtils$3, t, n, s; return _regenerator.default.wrap(function _callee51$(_context51) { while (1) { switch (_context51.prev = _context51.next) { case 0: _context51.next = 2; return this.appUtils.encrypt({ provider: this.provider, spaceId: this.spaceId, data: JSON.stringify(e) }); case 2: _yield$this$appUtils$3 = _context51.sent; t = _yield$this$appUtils$3.data; n = _yield$this$appUtils$3.key; s = { secretType: this.secretType, encryptKeyId: n }; return _context51.abrupt("return", this.secretType === Ft ? { content: e, _uniCloudOptions: s } : { content: t, _uniCloudOptions: s }); case 7: case "end": return _context51.stop(); } } }, _callee51, this); })); function platformEncryptData(_x38) { return _platformEncryptData2.apply(this, arguments); } return platformEncryptData; }() }, { key: "platformDecryptResult", value: function () { var _platformDecryptResult2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee52(e) { var t, _e$_uniCloudOptions, n, s, r; return _regenerator.default.wrap(function _callee52$(_context52) { while (1) { switch (_context52.prev = _context52.next) { case 0: t = e.content; _e$_uniCloudOptions = e._uniCloudOptions; n = _e$_uniCloudOptions === void 0 ? {} : _e$_uniCloudOptions; s = n.encryptKeyId; _context52.next = 6; return this.appUtils.decrypt({ provider: this.provider, spaceId: this.spaceId, data: t, key: s }); case 6: r = _context52.sent; return _context52.abrupt("return", JSON.parse(r.data)); case 8: case "end": return _context52.stop(); } } }, _callee52, this); })); function platformDecryptResult(_x39) { return _platformDecryptResult2.apply(this, arguments); } return platformDecryptResult; }() }, { key: "isClientKeyNotFound", value: function isClientKeyNotFound() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var t = e.result || {}; return 70009 === t.errCode && "uni-secure-network" === t.errSubject; } }]); return Rn; }(jt); function Un() { var _ref37 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref37.secretType; return e === qt || e === Ft || e === Kt; } function Nn() { var _ref38 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref38.name, _ref38$data = _ref38.data, t = _ref38$data === void 0 ? {} : _ref38$data; return "app" === P && "DCloud-clientDB" === e && "encryption" === t.redirectTo && "getAppClientKey" === t.action; } function Dn() { var _ref39 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref39.provider, t = _ref39.spaceId, n = _ref39.functionName; var _ae = ae(), s = _ae.appId, r = _ae.uniPlatform, i = _ae.osName; var o = r; "app" === r && (o = i); var a = function () { var _ref40 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref40.provider, t = _ref40.spaceId; var n = A; if (!n) return {}; e = function (e) { return "tencent" === e ? "tcb" : e; }(e); var s = n.find(function (n) { return n.provider === e && n.spaceId === t; }); return s && s.config; }({ provider: e, spaceId: t }); if (!a || !a.accessControl || !a.accessControl.enable) return !1; var c = a.accessControl.function || {}, u = Object.keys(c); if (0 === u.length) return !0; var l = function (e, t) { var n, s, r; for (var _i2 = 0; _i2 < e.length; _i2++) { var _o2 = e[_i2]; _o2 !== t ? "*" !== _o2 ? _o2.split(",").map(function (e) { return e.trim(); }).indexOf(t) > -1 && (s = _o2) : r = _o2 : n = _o2; } return n || s || r; }(u, n); if (!l) return !1; if ((c[l] || []).find(function () { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return e.appId === s && (e.platform || "").toLowerCase() === o.toLowerCase(); })) return !0; throw console.error("\u6B64\u5E94\u7528[appId: ".concat(s, ", platform: ").concat(o, "]\u4E0D\u5728\u4E91\u7AEF\u914D\u7F6E\u7684\u5141\u8BB8\u8BBF\u95EE\u7684\u5E94\u7528\u5217\u8868\u5185\uFF0C\u53C2\u8003\uFF1Ahttps://uniapp.dcloud.net.cn/uniCloud/secure-network.html#verify-client")), Tn(kn); } function Mn(_ref41) { var e = _ref41.functionName, t = _ref41.result, n = _ref41.logPvd; if (S && this.__dev__.debugLog && t && t.requestId) { var _s11 = JSON.stringify({ spaceId: this.config.spaceId, functionName: e, requestId: t.requestId }); console.log("[".concat(n, "-request]").concat(_s11, "[/").concat(n, "-request]")); } } function qn(e) { var t = e.callFunction, n = function n(_n7) { var _this20 = this; var s = _n7.name; _n7.data = Et.call(e, { data: _n7.data }); var r = { aliyun: "aliyun", tencent: "tcb", tcb: "tcb", alipay: "alipay" }[this.config.provider], i = Un(_n7), o = Nn(_n7), a = i || o; return t.call(this, _n7).then(function (e) { return e.errCode = 0, !a && Mn.call(_this20, { functionName: s, result: e, logPvd: r }), Promise.resolve(e); }, function (e) { return !a && Mn.call(_this20, { functionName: s, result: e, logPvd: r }), e && e.message && (e.message = function () { var _ref42 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref42$message = _ref42.message, e = _ref42$message === void 0 ? "" : _ref42$message, _ref42$extraInfo = _ref42.extraInfo, t = _ref42$extraInfo === void 0 ? {} : _ref42$extraInfo, _ref42$formatter = _ref42.formatter, n = _ref42$formatter === void 0 ? [] : _ref42$formatter; for (var _s12 = 0; _s12 < n.length; _s12++) { var _n$_s = n[_s12], _r4 = _n$_s.rule, _i3 = _n$_s.content, _o3 = _n$_s.mode, _a = e.match(_r4); if (!_a) continue; var _c = _i3; for (var _e19 = 1; _e19 < _a.length; _e19++) { _c = Dt(_c, "{$".concat(_e19, "}"), _a[_e19]); } for (var _e20 in t) { _c = Dt(_c, "{".concat(_e20, "}"), t[_e20]); } return "replace" === _o3 ? _c : e + _c; } return e; }({ message: "[".concat(_n7.name, "]: ").concat(e.message), formatter: Rt, extraInfo: { functionName: s } })), Promise.reject(e); }); }; e.callFunction = function (t) { var _e$config = e.config, s = _e$config.provider, r = _e$config.spaceId, i = t.name; var o, a; if (t.data = t.data || {}, S && e.__dev__.debugInfo && !e.__dev__.debugInfo.forceRemote && C ? (e._callCloudFunction || (e._callCloudFunction = n, e._callLocalFunction = Lt), o = Lt) : o = n, o = o.bind(e), Nn(t)) a = n.call(e, t);else if (function (_ref43) { var e = _ref43.name, _ref43$data = _ref43.data, t = _ref43$data === void 0 ? {} : _ref43$data; return "mp-weixin" === P && "uni-id-co" === e && "secureNetworkHandshakeByWeixin" === t.method; }(t)) a = o.call(e, t);else if (Un(t)) { a = new xn({ secretType: t.secretType, uniCloudIns: e }).wrapEncryptDataCallFunction(n.bind(e))(t); } else if (Dn({ provider: s, spaceId: r, functionName: i })) { a = new xn({ secretType: t.secretType, uniCloudIns: e }).wrapVerifyClientCallFunction(n.bind(e))(t); } else a = o(t); return Object.defineProperty(a, "result", { get: function get() { return console.warn("当前返回结果为Promise类型,不可直接访问其result属性,详情请参考:https://uniapp.dcloud.net.cn/uniCloud/faq?id=promise"), {}; } }), a; }; } xn = "mp-weixin" !== P && "app" !== P ? /*#__PURE__*/function () { function _class2() { (0, _classCallCheck2.default)(this, _class2); throw Tn({ message: "Platform ".concat(P, " is not supported by secure network") }); } return (0, _createClass2.default)(_class2); }() : k ? "mp-weixin" === P ? En : Rn : /*#__PURE__*/function () { function _class3() { (0, _classCallCheck2.default)(this, _class3); throw Tn({ message: "Platform ".concat(P, " is not enabled, please check whether secure network module is enabled in your manifest.json") }); } return (0, _createClass2.default)(_class3); }(); var Fn = Symbol("CLIENT_DB_INTERNAL"); function Kn(e, t) { return e.then = "DoNotReturnProxyWithAFunctionNamedThen", e._internalType = Fn, e.inspect = null, e.__ob__ = void 0, new Proxy(e, { get: function get(e, n, s) { if ("_uniClient" === n) return null; if ("symbol" == (0, _typeof2.default)(n)) return e[n]; if (n in e || "string" != typeof n) { var _t13 = e[n]; return "function" == typeof _t13 ? _t13.bind(e) : _t13; } return t.get(e, n, s); } }); } function jn(e) { return { on: function on(t, n) { e[t] = e[t] || [], e[t].indexOf(n) > -1 || e[t].push(n); }, off: function off(t, n) { e[t] = e[t] || []; var s = e[t].indexOf(n); -1 !== s && e[t].splice(s, 1); } }; } var Bn = ["db.Geo", "db.command", "command.aggregate"]; function $n(e, t) { return Bn.indexOf("".concat(e, ".").concat(t)) > -1; } function Wn(e) { switch (f(e)) { case "array": return e.map(function (e) { return Wn(e); }); case "object": return e._internalType === Fn || Object.keys(e).forEach(function (t) { e[t] = Wn(e[t]); }), e; case "regexp": return { $regexp: { source: e.source, flags: e.flags } }; case "date": return { $date: e.toISOString() }; default: return e; } } function Hn(e) { return e && e.content && e.content.$method; } var zn = /*#__PURE__*/function () { function zn(e, t, n) { (0, _classCallCheck2.default)(this, zn); this.content = e, this.prevStage = t || null, this.udb = null, this._database = n; } (0, _createClass2.default)(zn, [{ key: "toJSON", value: function toJSON() { var e = this; var t = [e.content]; for (; e.prevStage;) { e = e.prevStage, t.push(e.content); } return { $db: t.reverse().map(function (e) { return { $method: e.$method, $param: Wn(e.$param) }; }) }; } }, { key: "toString", value: function toString() { return JSON.stringify(this.toJSON()); } }, { key: "getAction", value: function getAction() { var e = this.toJSON().$db.find(function (e) { return "action" === e.$method; }); return e && e.$param && e.$param[0]; } }, { key: "getCommand", value: function getCommand() { return { $db: this.toJSON().$db.filter(function (e) { return "action" !== e.$method; }) }; } }, { key: "isAggregate", get: function get() { var e = this; for (; e;) { var t = Hn(e), _n8 = Hn(e.prevStage); if ("aggregate" === t && "collection" === _n8 || "pipeline" === t) return !0; e = e.prevStage; } return !1; } }, { key: "isCommand", get: function get() { var e = this; for (; e;) { if ("command" === Hn(e)) return !0; e = e.prevStage; } return !1; } }, { key: "isAggregateCommand", get: function get() { var e = this; for (; e;) { var t = Hn(e), _n9 = Hn(e.prevStage); if ("aggregate" === t && "command" === _n9) return !0; e = e.prevStage; } return !1; } }, { key: "getNextStageFn", value: function getNextStageFn(e) { var t = this; return function () { return Jn({ $method: e, $param: Wn(Array.from(arguments)) }, t, t._database); }; } }, { key: "count", get: function get() { return this.isAggregate ? this.getNextStageFn("count") : function () { return this._send("count", Array.from(arguments)); }; } }, { key: "remove", get: function get() { return this.isCommand ? this.getNextStageFn("remove") : function () { return this._send("remove", Array.from(arguments)); }; } }, { key: "get", value: function get() { return this._send("get", Array.from(arguments)); } }, { key: "add", get: function get() { return this.isCommand ? this.getNextStageFn("add") : function () { return this._send("add", Array.from(arguments)); }; } }, { key: "update", value: function update() { return this._send("update", Array.from(arguments)); } }, { key: "end", value: function end() { return this._send("end", Array.from(arguments)); } }, { key: "set", get: function get() { return this.isCommand ? this.getNextStageFn("set") : function () { throw new Error("JQL禁止使用set方法"); }; } }, { key: "_send", value: function _send(e, t) { var n = this.getAction(), s = this.getCommand(); if (s.$db.push({ $method: e, $param: Wn(t) }), S) { var _e21 = s.$db.find(function (e) { return "collection" === e.$method; }), _t14 = _e21 && _e21.$param; _t14 && 1 === _t14.length && "string" == typeof _e21.$param[0] && _e21.$param[0].indexOf(",") > -1 && console.warn("检测到使用JQL语法联表查询时,未使用getTemp先过滤主表数据,在主表数据量大的情况下可能会查询缓慢。\n- 如何优化请参考此文档:https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp \n- 如果主表数据量很小请忽略此信息,项目发行时不会出现此提示。"); } return this._database._callCloudFunction({ action: n, command: s }); } }]); return zn; }(); function Jn(e, t, n) { return Kn(new zn(e, t, n), { get: function get(e, t) { var s = "db"; return e && e.content && (s = e.content.$method), $n(s, t) ? Jn({ $method: t }, e, n) : function () { return Jn({ $method: t, $param: Wn(Array.from(arguments)) }, e, n); }; } }); } function Vn(_ref44) { var e = _ref44.path, t = _ref44.method; return /*#__PURE__*/function () { function _class4() { (0, _classCallCheck2.default)(this, _class4); this.param = Array.from(arguments); } (0, _createClass2.default)(_class4, [{ key: "toJSON", value: function toJSON() { return { $newDb: [].concat((0, _toConsumableArray2.default)(e.map(function (e) { return { $method: e }; })), [{ $method: t, $param: this.param }]) }; } }, { key: "toString", value: function toString() { return JSON.stringify(this.toJSON()); } }]); return _class4; }(); } function Gn(e) { var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return Kn(new e(t), { get: function get(e, t) { return $n("db", t) ? Jn({ $method: t }, null, e) : function () { return Jn({ $method: t, $param: Wn(Array.from(arguments)) }, null, e); }; } }); } var Yn = /*#__PURE__*/function (_ref45) { (0, _inherits2.default)(Yn, _ref45); var _super11 = _createSuper(Yn); function Yn() { (0, _classCallCheck2.default)(this, Yn); return _super11.apply(this, arguments); } (0, _createClass2.default)(Yn, [{ key: "_parseResult", value: function _parseResult(e) { return this._isJQL ? e.result : e; } }, { key: "_callCloudFunction", value: function _callCloudFunction(_ref46) { var _this21 = this; var e = _ref46.action, t = _ref46.command, n = _ref46.multiCommand, s = _ref46.queryList; function r(e, t) { if (n && s) for (var _n10 = 0; _n10 < s.length; _n10++) { var _r5 = s[_n10]; _r5.udb && "function" == typeof _r5.udb.setResult && (t ? _r5.udb.setResult(t) : _r5.udb.setResult(e.result.dataList[_n10])); } } var i = this, o = this._isJQL ? "databaseForJQL" : "database"; function a(e) { return i._callback("error", [e]), M(q(o, "fail"), e).then(function () { return M(q(o, "complete"), e); }).then(function () { return r(null, e), Y(j, { type: W, content: e }), Promise.reject(e); }); } var c = M(q(o, "invoke")), u = this._uniClient; return c.then(function () { return u.callFunction({ name: "DCloud-clientDB", type: l, data: { action: e, command: t, multiCommand: n } }); }).then(function (e) { var _e$result = e.result, t = _e$result.code, n = _e$result.message, s = _e$result.token, c = _e$result.tokenExpired, _e$result$systemInfo = _e$result.systemInfo, u = _e$result$systemInfo === void 0 ? [] : _e$result$systemInfo; if (u) for (var _e22 = 0; _e22 < u.length; _e22++) { var _u$_e = u[_e22], _t15 = _u$_e.level, _n11 = _u$_e.message, _s13 = _u$_e.detail, _r6 = console["app" === P && "warn" === _t15 ? "error" : _t15] || console.log; var _i4 = "[System Info]" + _n11; _s13 && (_i4 = "".concat(_i4, "\n\u8BE6\u7EC6\u4FE1\u606F\uFF1A").concat(_s13)), _r6(_i4); } if (t) { return a(new te({ code: t, message: n, requestId: e.requestId })); } e.result.errCode = e.result.errCode || e.result.code, e.result.errMsg = e.result.errMsg || e.result.message, s && c && (re({ token: s, tokenExpired: c }), _this21._callbackAuth("refreshToken", [{ token: s, tokenExpired: c }]), _this21._callback("refreshToken", [{ token: s, tokenExpired: c }]), Y($, { token: s, tokenExpired: c })); var l = [{ prop: "affectedDocs", tips: "affectedDocs不再推荐使用,请使用inserted/deleted/updated/data.length替代" }, { prop: "code", tips: "code不再推荐使用,请使用errCode替代" }, { prop: "message", tips: "message不再推荐使用,请使用errMsg替代" }]; var _loop2 = function _loop2(_t16) { var _l$_t = l[_t16], n = _l$_t.prop, s = _l$_t.tips; if (n in e.result) { var _t17 = e.result[n]; Object.defineProperty(e.result, n, { get: function get() { return console.warn(s), _t17; } }); } }; for (var _t16 = 0; _t16 < l.length; _t16++) { _loop2(_t16); } return function (e) { return M(q(o, "success"), e).then(function () { return M(q(o, "complete"), e); }).then(function () { r(e, null); var t = i._parseResult(e); return Y(j, { type: W, content: t }), Promise.resolve(t); }); }(e); }, function (e) { /fc_function_not_found|FUNCTION_NOT_FOUND/g.test(e.message) && console.warn("clientDB未初始化,请在web控制台保存一次schema以开启clientDB"); return a(new te({ code: e.code || "SYSTEM_ERROR", message: e.message, requestId: e.requestId })); }); } }]); return Yn; }( /*#__PURE__*/function () { function _class5() { var _ref47 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref47$uniClient = _ref47.uniClient, e = _ref47$uniClient === void 0 ? {} : _ref47$uniClient, _ref47$isJQL = _ref47.isJQL, t = _ref47$isJQL === void 0 ? !1 : _ref47$isJQL; (0, _classCallCheck2.default)(this, _class5); this._uniClient = e, this._authCallBacks = {}, this._dbCallBacks = {}, e._isDefault && (this._dbCallBacks = L("_globalUniCloudDatabaseCallback")), t || (this.auth = jn(this._authCallBacks)), this._isJQL = t, Object.assign(this, jn(this._dbCallBacks)), this.env = Kn({}, { get: function get(e, t) { return { $env: t }; } }), this.Geo = Kn({}, { get: function get(e, t) { return Vn({ path: ["Geo"], method: t }); } }), this.serverDate = Vn({ path: [], method: "serverDate" }), this.RegExp = Vn({ path: [], method: "RegExp" }); } (0, _createClass2.default)(_class5, [{ key: "getCloudEnv", value: function getCloudEnv(e) { if ("string" != typeof e || !e.trim()) throw new Error("getCloudEnv参数错误"); return { $env: e.replace("$cloudEnv_", "") }; } }, { key: "_callback", value: function _callback(e, t) { var n = this._dbCallBacks; n[e] && n[e].forEach(function (e) { e.apply(void 0, (0, _toConsumableArray2.default)(t)); }); } }, { key: "_callbackAuth", value: function _callbackAuth(e, t) { var n = this._authCallBacks; n[e] && n[e].forEach(function (e) { e.apply(void 0, (0, _toConsumableArray2.default)(t)); }); } }, { key: "multiSend", value: function multiSend() { var e = Array.from(arguments), t = e.map(function (e) { var t = e.getAction(), n = e.getCommand(); if ("getTemp" !== n.$db[n.$db.length - 1].$method) throw new Error("multiSend只支持子命令内使用getTemp"); return { action: t, command: n }; }); return this._callCloudFunction({ multiCommand: t, queryList: e }); } }]); return _class5; }()); var Qn = "token无效,跳转登录页面", Xn = "token过期,跳转登录页面", Zn = { TOKEN_INVALID_TOKEN_EXPIRED: Xn, TOKEN_INVALID_INVALID_CLIENTID: Qn, TOKEN_INVALID: Qn, TOKEN_INVALID_WRONG_TOKEN: Qn, TOKEN_INVALID_ANONYMOUS_USER: Qn }, es = { "uni-id-token-expired": Xn, "uni-id-check-token-failed": Qn, "uni-id-token-not-exist": Qn, "uni-id-check-device-feature-failed": Qn }; function ts(e, t) { var n = ""; return n = e ? "".concat(e, "/").concat(t) : t, n.replace(/^\//, ""); } function ns() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ""; var n = [], s = []; return e.forEach(function (e) { !0 === e.needLogin ? n.push(ts(t, e.path)) : !1 === e.needLogin && s.push(ts(t, e.path)); }), { needLoginPage: n, notNeedLoginPage: s }; } function ss(e) { return e.split("?")[0].replace(/^\//, ""); } function rs() { return function (e) { var t = e && e.$page && e.$page.fullPath || ""; return t ? ("/" !== t.charAt(0) && (t = "/" + t), t) : t; }(function () { var e = getCurrentPages(); return e[e.length - 1]; }()); } function is() { return ss(rs()); } function os() { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""; var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; if (!e) return !1; if (!(t && t.list && t.list.length)) return !1; var n = t.list, s = ss(e); return n.some(function (e) { return e.pagePath === s; }); } var as = !!_pages.default.uniIdRouter; var _ref48 = function () { var _ref29 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pages.default, _ref29$pages = _ref29.pages, t = _ref29$pages === void 0 ? [] : _ref29$pages, _ref29$subPackages = _ref29.subPackages, n = _ref29$subPackages === void 0 ? [] : _ref29$subPackages, _ref29$uniIdRouter = _ref29.uniIdRouter, s = _ref29$uniIdRouter === void 0 ? {} : _ref29$uniIdRouter, _ref29$tabBar = _ref29.tabBar, r = _ref29$tabBar === void 0 ? {} : _ref29$tabBar; var i = s.loginPage, _s$needLogin = s.needLogin, o = _s$needLogin === void 0 ? [] : _s$needLogin, _s$resToLogin = s.resToLogin, a = _s$resToLogin === void 0 ? !0 : _s$resToLogin, _ns = ns(t), c = _ns.needLoginPage, u = _ns.notNeedLoginPage, _ref31 = function () { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var t = [], n = []; return e.forEach(function (e) { var s = e.root, _e$pages = e.pages, r = _e$pages === void 0 ? [] : _e$pages, _ns2 = ns(r, s), i = _ns2.needLoginPage, o = _ns2.notNeedLoginPage; t.push.apply(t, (0, _toConsumableArray2.default)(i)), n.push.apply(n, (0, _toConsumableArray2.default)(o)); }), { needLoginPage: t, notNeedLoginPage: n }; }(n), l = _ref31.needLoginPage, h = _ref31.notNeedLoginPage; return { loginPage: i, routerNeedLogin: o, resToLogin: a, needLoginPage: [].concat((0, _toConsumableArray2.default)(c), (0, _toConsumableArray2.default)(l)), notNeedLoginPage: [].concat((0, _toConsumableArray2.default)(u), (0, _toConsumableArray2.default)(h)), loginPageInTabBar: os(i, r) }; }(), cs = _ref48.loginPage, us = _ref48.routerNeedLogin, ls = _ref48.resToLogin, hs = _ref48.needLoginPage, ds = _ref48.notNeedLoginPage, ps = _ref48.loginPageInTabBar; if (hs.indexOf(cs) > -1) throw new Error("Login page [".concat(cs, "] should not be \"needLogin\", please check your pages.json")); function fs(e) { var t = is(); if ("/" === e.charAt(0)) return e; var _e$split = e.split("?"), _e$split2 = (0, _slicedToArray2.default)(_e$split, 2), n = _e$split2[0], s = _e$split2[1], r = n.replace(/^\//, "").split("/"), i = t.split("/"); i.pop(); for (var _e23 = 0; _e23 < r.length; _e23++) { var _t18 = r[_e23]; ".." === _t18 ? i.pop() : "." !== _t18 && i.push(_t18); } return "" === i[0] && i.shift(), "/" + i.join("/") + (s ? "?" + s : ""); } function gs(e) { var t = ss(fs(e)); return !(ds.indexOf(t) > -1) && (hs.indexOf(t) > -1 || us.some(function (t) { return function (e, t) { return new RegExp(t).test(e); }(e, t); })); } function ms(_ref49) { var e = _ref49.redirect; var t = ss(e), n = ss(cs); return is() !== n && t !== n; } function ys() { var _ref50 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref50.api, t = _ref50.redirect; if (!t || !ms({ redirect: t })) return; var n = function (e, t) { return "/" !== e.charAt(0) && (e = "/" + e), t ? e.indexOf("?") > -1 ? e + "&uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e + "?uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e; }(cs, t); ps ? "navigateTo" !== e && "redirectTo" !== e || (e = "switchTab") : "switchTab" === e && (e = "navigateTo"); var s = { navigateTo: uni.navigateTo, redirectTo: uni.redirectTo, switchTab: uni.switchTab, reLaunch: uni.reLaunch }; setTimeout(function () { s[e]({ url: n }); }); } function _s() { var _ref51 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref51.url; var t = { abortLoginPageJump: !1, autoToLoginPage: !1 }, n = function () { var _se3 = se(), e = _se3.token, t = _se3.tokenExpired; var n; if (e) { if (t < Date.now()) { var _e24 = "uni-id-token-expired"; n = { errCode: _e24, errMsg: es[_e24] }; } } else { var _e25 = "uni-id-check-token-failed"; n = { errCode: _e25, errMsg: es[_e25] }; } return n; }(); if (gs(e) && n) { n.uniIdRedirectUrl = e; if (J(B).length > 0) return setTimeout(function () { Y(B, n); }, 0), t.abortLoginPageJump = !0, t; t.autoToLoginPage = !0; } return t; } function ws() { !function () { var e = rs(), _s14 = _s({ url: e }), t = _s14.abortLoginPageJump, n = _s14.autoToLoginPage; t || n && ys({ api: "redirectTo", redirect: e }); }(); var e = ["navigateTo", "redirectTo", "reLaunch", "switchTab"]; var _loop3 = function _loop3(_t19) { var n = e[_t19]; uni.addInterceptor(n, { invoke: function invoke(e) { var _s15 = _s({ url: e.url }), t = _s15.abortLoginPageJump, s = _s15.autoToLoginPage; return t ? e : s ? (ys({ api: n, redirect: fs(e.url) }), !1) : e; } }); }; for (var _t19 = 0; _t19 < e.length; _t19++) { _loop3(_t19); } } function vs() { this.onResponse(function (e) { var t = e.type, n = e.content; var s = !1; switch (t) { case "cloudobject": s = function (e) { if ("object" != (0, _typeof2.default)(e)) return !1; var _ref52 = e || {}, t = _ref52.errCode; return t in es; }(n); break; case "clientdb": s = function (e) { if ("object" != (0, _typeof2.default)(e)) return !1; var _ref53 = e || {}, t = _ref53.errCode; return t in Zn; }(n); } s && function () { var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var t = J(B); Z().then(function () { var n = rs(); if (n && ms({ redirect: n })) return t.length > 0 ? Y(B, Object.assign({ uniIdRedirectUrl: n }, e)) : void (cs && ys({ api: "navigateTo", redirect: n })); }); }(n); }); } function Is(e) { !function (e) { e.onResponse = function (e) { V(j, e); }, e.offResponse = function (e) { G(j, e); }; }(e), function (e) { e.onNeedLogin = function (e) { V(B, e); }, e.offNeedLogin = function (e) { G(B, e); }, as && (L("_globalUniCloudStatus").needLoginInit || (L("_globalUniCloudStatus").needLoginInit = !0, Z().then(function () { ws.call(e); }), ls && vs.call(e))); }(e), function (e) { e.onRefreshToken = function (e) { V($, e); }, e.offRefreshToken = function (e) { G($, e); }; }(e); } var Ss; var bs = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", ks = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/; function As() { var e = se().token || "", t = e.split("."); if (!e || 3 !== t.length) return { uid: null, role: [], permission: [], tokenExpired: 0 }; var n; try { n = JSON.parse((s = t[1], decodeURIComponent(Ss(s).split("").map(function (e) { return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2); }).join("")))); } catch (e) { throw new Error("获取当前用户信息出错,详细错误信息为:" + e.message); } var s; return n.tokenExpired = 1e3 * n.exp, delete n.exp, delete n.iat, n; } Ss = "function" != typeof atob ? function (e) { if (e = String(e).replace(/[\t\n\f\r ]+/g, ""), !ks.test(e)) throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded."); var t; e += "==".slice(2 - (3 & e.length)); for (var n, s, r = "", i = 0; i < e.length;) { t = bs.indexOf(e.charAt(i++)) << 18 | bs.indexOf(e.charAt(i++)) << 12 | (n = bs.indexOf(e.charAt(i++))) << 6 | (s = bs.indexOf(e.charAt(i++))), r += 64 === n ? String.fromCharCode(t >> 16 & 255) : 64 === s ? String.fromCharCode(t >> 16 & 255, t >> 8 & 255) : String.fromCharCode(t >> 16 & 255, t >> 8 & 255, 255 & t); } return r; } : atob; var Ps = n(function (e, t) { Object.defineProperty(t, "__esModule", { value: !0 }); var n = "chooseAndUploadFile:ok", s = "chooseAndUploadFile:fail"; function r(e, t) { return e.tempFiles.forEach(function (e, n) { e.name || (e.name = e.path.substring(e.path.lastIndexOf("/") + 1)), t && (e.fileType = t), e.cloudPath = Date.now() + "_" + n + e.name.substring(e.name.lastIndexOf(".")); }), e.tempFilePaths || (e.tempFilePaths = e.tempFiles.map(function (e) { return e.path; })), e; } function i(e, t, _ref54) { var s = _ref54.onChooseFile, r = _ref54.onUploadProgress; return t.then(function (e) { if (s) { var _t20 = s(e); if (void 0 !== _t20) return Promise.resolve(_t20).then(function (t) { return void 0 === t ? e : t; }); } return e; }).then(function (t) { return !1 === t ? { errMsg: n, tempFilePaths: [], tempFiles: [] } : function (e, t) { var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5; var r = arguments.length > 3 ? arguments[3] : undefined; (t = Object.assign({}, t)).errMsg = n; var i = t.tempFiles, o = i.length; var a = 0; return new Promise(function (n) { for (; a < s;) { c(); } function c() { var s = a++; if (s >= o) return void (!i.find(function (e) { return !e.url && !e.errMsg; }) && n(t)); var u = i[s]; e.uploadFile({ filePath: u.path, cloudPath: u.cloudPath, fileType: u.fileType, cloudPathAsRealPath: u.cloudPathAsRealPath, onUploadProgress: function onUploadProgress(e) { e.index = s, e.tempFile = u, e.tempFilePath = u.path, r && r(e); } }).then(function (e) { u.url = e.fileID, s < o && c(); }).catch(function (e) { u.errMsg = e.errMsg || e.message, s < o && c(); }); } }); }(e, t, 5, r); }); } t.initChooseAndUploadFile = function (e) { return function () { var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { type: "all" }; return "image" === t.type ? i(e, function (e) { var t = e.count, n = e.sizeType, _e$sourceType = e.sourceType, i = _e$sourceType === void 0 ? ["album", "camera"] : _e$sourceType, o = e.extension; return new Promise(function (e, a) { uni.chooseImage({ count: t, sizeType: n, sourceType: i, extension: o, success: function success(t) { e(r(t, "image")); }, fail: function fail(e) { a({ errMsg: e.errMsg.replace("chooseImage:fail", s) }); } }); }); }(t), t) : "video" === t.type ? i(e, function (e) { var t = e.camera, n = e.compressed, i = e.maxDuration, _e$sourceType2 = e.sourceType, o = _e$sourceType2 === void 0 ? ["album", "camera"] : _e$sourceType2, a = e.extension; return new Promise(function (e, c) { uni.chooseVideo({ camera: t, compressed: n, maxDuration: i, sourceType: o, extension: a, success: function success(t) { var n = t.tempFilePath, s = t.duration, i = t.size, o = t.height, a = t.width; e(r({ errMsg: "chooseVideo:ok", tempFilePaths: [n], tempFiles: [{ name: t.tempFile && t.tempFile.name || "", path: n, size: i, type: t.tempFile && t.tempFile.type || "", width: a, height: o, duration: s, fileType: "video", cloudPath: "" }] }, "video")); }, fail: function fail(e) { c({ errMsg: e.errMsg.replace("chooseVideo:fail", s) }); } }); }); }(t), t) : i(e, function (e) { var t = e.count, n = e.extension; return new Promise(function (e, i) { var o = uni.chooseFile; if ("undefined" != typeof wx && "function" == typeof wx.chooseMessageFile && (o = wx.chooseMessageFile), "function" != typeof o) return i({ errMsg: s + " 请指定 type 类型,该平台仅支持选择 image 或 video。" }); o({ type: "all", count: t, extension: n, success: function success(t) { e(r(t)); }, fail: function fail(e) { i({ errMsg: e.errMsg.replace("chooseFile:fail", s) }); } }); }); }(t), t); }; }; }), Ts = t(Ps); var Cs = "manual"; function xs(e) { return { props: { localdata: { type: Array, default: function _default() { return []; } }, options: { type: [Object, Array], default: function _default() { return {}; } }, spaceInfo: { type: Object, default: function _default() { return {}; } }, collection: { type: [String, Array], default: "" }, action: { type: String, default: "" }, field: { type: String, default: "" }, orderby: { type: String, default: "" }, where: { type: [String, Object], default: "" }, pageData: { type: String, default: "add" }, pageCurrent: { type: Number, default: 1 }, pageSize: { type: Number, default: 20 }, getcount: { type: [Boolean, String], default: !1 }, gettree: { type: [Boolean, String], default: !1 }, gettreepath: { type: [Boolean, String], default: !1 }, startwith: { type: String, default: "" }, limitlevel: { type: Number, default: 10 }, groupby: { type: String, default: "" }, groupField: { type: String, default: "" }, distinct: { type: [Boolean, String], default: !1 }, foreignKey: { type: String, default: "" }, loadtime: { type: String, default: "auto" }, manual: { type: Boolean, default: !1 } }, data: function data() { return { mixinDatacomLoading: !1, mixinDatacomHasMore: !1, mixinDatacomResData: [], mixinDatacomErrorMessage: "", mixinDatacomPage: {} }; }, created: function created() { var _this22 = this; this.mixinDatacomPage = { current: this.pageCurrent, size: this.pageSize, count: 0 }, this.$watch(function () { var e = []; return ["pageCurrent", "pageSize", "localdata", "collection", "action", "field", "orderby", "where", "getont", "getcount", "gettree", "groupby", "groupField", "distinct"].forEach(function (t) { e.push(_this22[t]); }), e; }, function (e, t) { if (_this22.loadtime === Cs) return; var n = !1; var s = []; for (var _r7 = 2; _r7 < e.length; _r7++) { e[_r7] !== t[_r7] && (s.push(e[_r7]), n = !0); } e[0] !== t[0] && (_this22.mixinDatacomPage.current = _this22.pageCurrent), _this22.mixinDatacomPage.size = _this22.pageSize, _this22.onMixinDatacomPropsChange(n, s); }); }, methods: { onMixinDatacomPropsChange: function onMixinDatacomPropsChange(e, t) {}, mixinDatacomEasyGet: function mixinDatacomEasyGet() { var _this23 = this; var _ref55 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref55$getone = _ref55.getone, e = _ref55$getone === void 0 ? !1 : _ref55$getone, t = _ref55.success, n = _ref55.fail; this.mixinDatacomLoading || (this.mixinDatacomLoading = !0, this.mixinDatacomErrorMessage = "", this.mixinDatacomGet().then(function (n) { _this23.mixinDatacomLoading = !1; var _n$result = n.result, s = _n$result.data, r = _n$result.count; _this23.getcount && (_this23.mixinDatacomPage.count = r), _this23.mixinDatacomHasMore = s.length < _this23.pageSize; var i = e ? s.length ? s[0] : void 0 : s; _this23.mixinDatacomResData = i, t && t(i); }).catch(function (e) { _this23.mixinDatacomLoading = !1, _this23.mixinDatacomErrorMessage = e, n && n(e); })); }, mixinDatacomGet: function mixinDatacomGet() { var _n12; var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var n = e.database(this.spaceInfo); var s = t.action || this.action; s && (n = n.action(s)); var r = t.collection || this.collection; n = Array.isArray(r) ? (_n12 = n).collection.apply(_n12, (0, _toConsumableArray2.default)(r)) : n.collection(r); var i = t.where || this.where; i && Object.keys(i).length && (n = n.where(i)); var o = t.field || this.field; o && (n = n.field(o)); var a = t.foreignKey || this.foreignKey; a && (n = n.foreignKey(a)); var c = t.groupby || this.groupby; c && (n = n.groupBy(c)); var u = t.groupField || this.groupField; u && (n = n.groupField(u)); !0 === (void 0 !== t.distinct ? t.distinct : this.distinct) && (n = n.distinct()); var l = t.orderby || this.orderby; l && (n = n.orderBy(l)); var h = void 0 !== t.pageCurrent ? t.pageCurrent : this.mixinDatacomPage.current, d = void 0 !== t.pageSize ? t.pageSize : this.mixinDatacomPage.size, p = void 0 !== t.getcount ? t.getcount : this.getcount, f = void 0 !== t.gettree ? t.gettree : this.gettree, g = void 0 !== t.gettreepath ? t.gettreepath : this.gettreepath, m = { getCount: p }, y = { limitLevel: void 0 !== t.limitlevel ? t.limitlevel : this.limitlevel, startWith: void 0 !== t.startwith ? t.startwith : this.startwith }; return f && (m.getTree = y), g && (m.getTreePath = y), n = n.skip(d * (h - 1)).limit(d).get(m), n; } } }; } function Os(e) { return function (t) { var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; n = function (e) { var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return e.customUI = t.customUI || e.customUI, e.parseSystemError = t.parseSystemError || e.parseSystemError, Object.assign(e.loadingOptions, t.loadingOptions), Object.assign(e.errorOptions, t.errorOptions), "object" == (0, _typeof2.default)(t.secretMethods) && (e.secretMethods = t.secretMethods), e; }({ customUI: !1, loadingOptions: { title: "加载中...", mask: !0 }, errorOptions: { type: "modal", retry: !1 } }, n); var _n13 = n, s = _n13.customUI, r = _n13.loadingOptions, i = _n13.errorOptions, o = _n13.parseSystemError, a = !s; return new Proxy({}, { get: function get(s, c) { return function () { var _ref56 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref56.fn, t = _ref56.interceptorName, n = _ref56.getCallbackArgs; return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee53() { var _len2, s, _key2, r, i, o, _args = arguments; return _regenerator.default.wrap(function _callee53$(_context53) { while (1) { switch (_context53.prev = _context53.next) { case 0: for (_len2 = _args.length, s = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { s[_key2] = _args[_key2]; } r = n ? n({ params: s }) : {}; _context53.prev = 2; _context53.next = 5; return M(q(t, "invoke"), _objectSpread({}, r)); case 5: _context53.next = 7; return e.apply(void 0, s); case 7: i = _context53.sent; _context53.next = 10; return M(q(t, "success"), _objectSpread(_objectSpread({}, r), {}, { result: i })); case 10: return _context53.abrupt("return", i); case 13: _context53.prev = 13; _context53.t0 = _context53["catch"](2); o = _context53.t0; _context53.next = 18; return M(q(t, "fail"), _objectSpread(_objectSpread({}, r), {}, { error: o })); case 18: throw o; case 19: _context53.prev = 19; _context53.next = 22; return M(q(t, "complete"), o ? _objectSpread(_objectSpread({}, r), {}, { error: o }) : _objectSpread(_objectSpread({}, r), {}, { result: i })); case 22: return _context53.finish(19); case 23: case "end": return _context53.stop(); } } }, _callee53, null, [[2, 13, 19, 23]]); })); }({ fn: function () { var _s16 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee55() { var h, _len3, l, _key3, d, p, _ref58, f, g, m, y, _e26, _yield, _t21, _n14, _args4 = arguments; return _regenerator.default.wrap(function _callee55$(_context55) { while (1) { switch (_context55.prev = _context55.next) { case 0: a && uni.showLoading({ title: r.title, mask: r.mask }); for (_len3 = _args4.length, l = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { l[_key3] = _args4[_key3]; } d = { name: t, type: u, data: { method: c, params: l } }; "object" == (0, _typeof2.default)(n.secretMethods) && function (e, t) { var n = t.data.method, s = e.secretMethods || {}, r = s[n] || s["*"]; r && (t.secretType = r); }(n, d); p = !1; _context55.prev = 5; _context55.next = 8; return e.callFunction(d); case 8: h = _context55.sent; _context55.next = 14; break; case 11: _context55.prev = 11; _context55.t0 = _context55["catch"](5); p = !0, h = { result: new te(_context55.t0) }; case 14: _ref58 = h.result || {}, f = _ref58.errSubject, g = _ref58.errCode, m = _ref58.errMsg, y = _ref58.newToken; if (!(a && uni.hideLoading(), y && y.token && y.tokenExpired && (re(y), Y($, _objectSpread({}, y))), g)) { _context55.next = 39; break; } _e26 = m; if (!(p && o)) { _context55.next = 24; break; } _context55.next = 20; return o({ objectName: t, methodName: c, params: l, errSubject: f, errCode: g, errMsg: m }); case 20: _context55.t1 = _context55.sent.errMsg; if (_context55.t1) { _context55.next = 23; break; } _context55.t1 = m; case 23: _e26 = _context55.t1; case 24: if (!a) { _context55.next = 37; break; } if (!("toast" === i.type)) { _context55.next = 29; break; } uni.showToast({ title: _e26, icon: "none" }); _context55.next = 37; break; case 29: if (!("modal" !== i.type)) { _context55.next = 31; break; } throw new Error("Invalid errorOptions.type: ".concat(i.type)); case 31: _context55.next = 33; return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee54() { var _ref60, e, t, n, s, r, _args2 = arguments; return _regenerator.default.wrap(function _callee54$(_context54) { while (1) { switch (_context54.prev = _context54.next) { case 0: _ref60 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, e = _ref60.title, t = _ref60.content, n = _ref60.showCancel, s = _ref60.cancelText, r = _ref60.confirmText; return _context54.abrupt("return", new Promise(function (i, o) { uni.showModal({ title: e, content: t, showCancel: n, cancelText: s, confirmText: r, success: function success(e) { i(e); }, fail: function fail() { i({ confirm: !1, cancel: !0 }); } }); })); case 2: case "end": return _context54.stop(); } } }, _callee54); }))({ title: "提示", content: _e26, showCancel: i.retry, cancelText: "取消", confirmText: i.retry ? "重试" : "确定" }); case 33: _yield = _context55.sent; _t21 = _yield.confirm; if (!(i.retry && _t21)) { _context55.next = 37; break; } return _context55.abrupt("return", s.apply(void 0, l)); case 37: _n14 = new te({ subject: f, code: g, message: m, requestId: h.requestId }); throw _n14.detail = h.result, Y(j, { type: z, content: _n14 }), _n14; case 39: return _context55.abrupt("return", (Y(j, { type: z, content: h.result }), h.result)); case 40: case "end": return _context55.stop(); } } }, _callee55, null, [[5, 11]]); })); function s() { return _s16.apply(this, arguments); } return s; }(), interceptorName: "callObject", getCallbackArgs: function getCallbackArgs() { var _ref61 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref61.params; return { objectName: t, methodName: c, params: e }; } }); } }); }; } function Es(e) { return L("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", e.config.spaceId)); } function Ls() { return _Ls.apply(this, arguments); } function _Ls() { _Ls = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee58() { var _ref73, e, _ref73$callLoginByWei, t, n, s, r, _args7 = arguments; return _regenerator.default.wrap(function _callee58$(_context58) { while (1) { switch (_context58.prev = _context58.next) { case 0: _ref73 = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : {}, e = _ref73.openid, _ref73$callLoginByWei = _ref73.callLoginByWeixin, t = _ref73$callLoginByWei === void 0 ? !1 : _ref73$callLoginByWei; n = Es(this); if (!("mp-weixin" !== P)) { _context58.next = 4; break; } throw new Error("[SecureNetwork] API `initSecureNetworkByWeixin` is not supported on platform `".concat(P, "`")); case 4: if (!(e && t)) { _context58.next = 6; break; } throw new Error("[SecureNetwork] openid and callLoginByWeixin cannot be passed at the same time"); case 6: if (!e) { _context58.next = 8; break; } return _context58.abrupt("return", (n.mpWeixinOpenid = e, {})); case 8: _context58.next = 10; return new Promise(function (e, t) { uni.login({ success: function success(t) { e(t.code); }, fail: function fail(e) { t(new Error(e.errMsg)); } }); }); case 10: s = _context58.sent; r = this.importObject("uni-id-co", { customUI: !0 }); _context58.next = 14; return r.secureNetworkHandshakeByWeixin({ code: s, callLoginByWeixin: t }); case 14: n.mpWeixinCode = s; return _context58.abrupt("return", { code: s }); case 16: case "end": return _context58.stop(); } } }, _callee58, this); })); return _Ls.apply(this, arguments); } function Rs(_x40) { return _Rs.apply(this, arguments); } function _Rs() { _Rs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee59(e) { var t; return _regenerator.default.wrap(function _callee59$(_context59) { while (1) { switch (_context59.prev = _context59.next) { case 0: t = Es(this); return _context59.abrupt("return", (t.initPromise || (t.initPromise = Ls.call(this, e)), t.initPromise)); case 2: case "end": return _context59.stop(); } } }, _callee59, this); })); return _Rs.apply(this, arguments); } function Us(e) { return function () { var _ref62 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, t = _ref62.openid, _ref62$callLoginByWei = _ref62.callLoginByWeixin, n = _ref62$callLoginByWei === void 0 ? !1 : _ref62$callLoginByWei; return Rs.call(e, { openid: t, callLoginByWeixin: n }); }; } function Ns(e) { var t = { getSystemInfo: uni.getSystemInfo, getPushClientId: uni.getPushClientId }; return function (n) { return new Promise(function (s, r) { t[e](_objectSpread(_objectSpread({}, n), {}, { success: function success(e) { s(e); }, fail: function fail(e) { r(e); } })); }); }; } var Ds = /*#__PURE__*/function (_ref63) { (0, _inherits2.default)(Ds, _ref63); var _super12 = _createSuper(Ds); function Ds() { var _this24; (0, _classCallCheck2.default)(this, Ds); _this24 = _super12.call(this), _this24._uniPushMessageCallback = _this24._receivePushMessage.bind((0, _assertThisInitialized2.default)(_this24)), _this24._currentMessageId = -1, _this24._payloadQueue = []; return _this24; } (0, _createClass2.default)(Ds, [{ key: "init", value: function init() { var _this25 = this; return Promise.all([Ns("getSystemInfo")(), Ns("getPushClientId")()]).then(function () { var _ref64 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [], _ref65 = (0, _slicedToArray2.default)(_ref64, 2), _ref65$ = _ref65[0]; _ref65$ = _ref65$ === void 0 ? {} : _ref65$; var e = _ref65$.appId, _ref65$2 = _ref65[1]; _ref65$2 = _ref65$2 === void 0 ? {} : _ref65$2; var t = _ref65$2.cid; if (!e) throw new Error("Invalid appId, please check the manifest.json file"); if (!t) throw new Error("Invalid push client id"); _this25._appId = e, _this25._pushClientId = t, _this25._seqId = Date.now() + "-" + Math.floor(9e5 * Math.random() + 1e5), _this25.emit("open"), _this25._initMessageListener(); }, function (e) { throw _this25.emit("error", e), _this25.close(), e; }); } }, { key: "open", value: function () { var _open = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee56() { return _regenerator.default.wrap(function _callee56$(_context56) { while (1) { switch (_context56.prev = _context56.next) { case 0: return _context56.abrupt("return", this.init()); case 1: case "end": return _context56.stop(); } } }, _callee56, this); })); function open() { return _open.apply(this, arguments); } return open; }() }, { key: "_isUniCloudSSE", value: function _isUniCloudSSE(e) { if ("receive" !== e.type) return !1; var t = e && e.data && e.data.payload; return !(!t || "UNI_CLOUD_SSE" !== t.channel || t.seqId !== this._seqId); } }, { key: "_receivePushMessage", value: function _receivePushMessage(e) { if (!this._isUniCloudSSE(e)) return; var t = e && e.data && e.data.payload, n = t.action, s = t.messageId, r = t.message; this._payloadQueue.push({ action: n, messageId: s, message: r }), this._consumMessage(); } }, { key: "_consumMessage", value: function _consumMessage() { var _this26 = this; for (;;) { var _e27 = this._payloadQueue.find(function (e) { return e.messageId === _this26._currentMessageId + 1; }); if (!_e27) break; this._currentMessageId++, this._parseMessagePayload(_e27); } } }, { key: "_parseMessagePayload", value: function _parseMessagePayload(e) { var t = e.action, n = e.messageId, s = e.message; "end" === t ? this._end({ messageId: n, message: s }) : "message" === t && this._appendMessage({ messageId: n, message: s }); } }, { key: "_appendMessage", value: function _appendMessage() { var _ref66 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref66.messageId, t = _ref66.message; this.emit("message", t); } }, { key: "_end", value: function _end() { var _ref67 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, e = _ref67.messageId, t = _ref67.message; this.emit("end", t), this.close(); } }, { key: "_initMessageListener", value: function _initMessageListener() { uni.onPushMessage(this._uniPushMessageCallback); } }, { key: "_destroy", value: function _destroy() { uni.offPushMessage(this._uniPushMessageCallback); } }, { key: "toJSON", value: function toJSON() { return { appId: this._appId, pushClientId: this._pushClientId, seqId: this._seqId }; } }, { key: "close", value: function close() { this._destroy(), this.emit("close"); } }]); return Ds; }( /*#__PURE__*/function () { function _class6() { (0, _classCallCheck2.default)(this, _class6); this._callback = {}; } (0, _createClass2.default)(_class6, [{ key: "addListener", value: function addListener(e, t) { this._callback[e] || (this._callback[e] = []), this._callback[e].push(t); } }, { key: "on", value: function on(e, t) { return this.addListener(e, t); } }, { key: "removeListener", value: function removeListener(e, t) { if (!t) throw new Error('The "listener" argument must be of type function. Received undefined'); var n = this._callback[e]; if (!n) return; var s = function (e, t) { for (var _n15 = e.length - 1; _n15 >= 0; _n15--) { if (e[_n15] === t) return _n15; } return -1; }(n, t); n.splice(s, 1); } }, { key: "off", value: function off(e, t) { return this.removeListener(e, t); } }, { key: "removeAllListener", value: function removeAllListener(e) { delete this._callback[e]; } }, { key: "emit", value: function emit(e) { var n = this._callback[e]; for (var _len4 = arguments.length, t = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) { t[_key4 - 1] = arguments[_key4]; } if (n) for (var _e28 = 0; _e28 < n.length; _e28++) { n[_e28].apply(n, t); } } }]); return _class6; }()); function Ms(_x41, _x42) { return _Ms.apply(this, arguments); } function _Ms() { _Ms = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee60(e, t) { var n, _e32, s; return _regenerator.default.wrap(function _callee60$(_context60) { while (1) { switch (_context60.prev = _context60.next) { case 0: n = "http://".concat(e, ":").concat(t, "/system/ping"); _context60.prev = 1; _context60.next = 4; return s = { url: n, timeout: 500 }, new Promise(function (e, t) { ne.request(_objectSpread(_objectSpread({}, s), {}, { success: function success(t) { e(t); }, fail: function fail(e) { t(e); } })); }); case 4: _e32 = _context60.sent; return _context60.abrupt("return", !(!_e32.data || 0 !== _e32.data.code)); case 8: _context60.prev = 8; _context60.t0 = _context60["catch"](1); return _context60.abrupt("return", !1); case 11: case "end": return _context60.stop(); } } }, _callee60, null, [[1, 8]]); })); return _Ms.apply(this, arguments); } function qs(_x43) { return _qs.apply(this, arguments); } function _qs() { _qs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee62(e) { var _ae2, _e33, _t23, t, _t$debugInfo, n, s, _yield2, r, i, o; return _regenerator.default.wrap(function _callee62$(_context62) { while (1) { switch (_context62.prev = _context62.next) { case 0: if (S) { _context62.next = 2; break; } return _context62.abrupt("return", Promise.resolve()); case 2: if ("app" === P) { _ae2 = ae(), _e33 = _ae2.osName, _t23 = _ae2.osVersion; "ios" === _e33 && function (e) { if (!e || "string" != typeof e) return 0; var t = e.match(/^(\d+)./); return t && t[1] ? parseInt(t[1]) : 0; }(_t23) >= 14 && console.warn("iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备(仅开发模式生效,发行模式会连接uniCloud云端服务)"); } t = e.__dev__; if (t.debugInfo) { _context62.next = 6; break; } return _context62.abrupt("return"); case 6: _t$debugInfo = t.debugInfo; n = _t$debugInfo.address; s = _t$debugInfo.servePort; _context62.next = 11; return function () { var _ref74 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee61(e, t) { var n, _s17, _r8; return _regenerator.default.wrap(function _callee61$(_context61) { while (1) { switch (_context61.prev = _context61.next) { case 0: _s17 = 0; case 1: if (!(_s17 < e.length)) { _context61.next = 11; break; } _r8 = e[_s17]; _context61.next = 5; return Ms(_r8, t); case 5: if (!_context61.sent) { _context61.next = 8; break; } n = _r8; return _context61.abrupt("break", 11); case 8: _s17++; _context61.next = 1; break; case 11: return _context61.abrupt("return", { address: n, port: t }); case 12: case "end": return _context61.stop(); } } }, _callee61); })); return function (_x44, _x45) { return _ref74.apply(this, arguments); }; }()(n, s); case 11: _yield2 = _context62.sent; r = _yield2.address; if (!r) { _context62.next = 15; break; } return _context62.abrupt("return", (t.localAddress = r, void (t.localPort = s))); case 15: i = console["app" === P ? "error" : "warn"]; o = ""; if (!("remote" === t.debugInfo.initialLaunchType ? (t.debugInfo.forceRemote = !0, o = "当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。\n- 如果不使用uniCloud本地调试服务,请直接忽略此信息。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。") : o = "无法连接uniCloud本地调试服务,请检查当前客户端是否与主机在同一局域网下。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。", o += "\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\n- 检查是否错误的使用拦截器修改uni.request方法的参数", "web" === P && (o += "\n- 部分浏览器开启节流模式之后访问本地地址受限,请检查是否启用了节流模式"), 0 === P.indexOf("mp-") && (o += "\n- 小程序中如何使用uniCloud,请参考:https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinmp"), !t.debugInfo.forceRemote)) { _context62.next = 19; break; } throw new Error(o); case 19: i(o); case 20: case "end": return _context62.stop(); } } }, _callee62); })); return _qs.apply(this, arguments); } function Fs(e) { e._initPromiseHub || (e._initPromiseHub = new v({ createPromise: function createPromise() { var t = Promise.resolve(); var n; n = 1, t = new Promise(function (e) { setTimeout(function () { e(); }, n); }); var s = e.auth(); return t.then(function () { return s.getLoginState(); }).then(function (e) { return e ? Promise.resolve() : s.signInAnonymously(); }); } })); } var Ks = { tcb: It, tencent: It, aliyun: de, private: bt, alipay: Ot }; var js = new ( /*#__PURE__*/function () { function _class7() { (0, _classCallCheck2.default)(this, _class7); } (0, _createClass2.default)(_class7, [{ key: "init", value: function init(e) { var t = {}; var n = Ks[e.provider]; if (!n) throw new Error("未提供正确的provider参数"); t = n.init(e), S && function (e) { if (!S) return; var t = {}; e.__dev__ = t, t.debugLog = S && ("web" === P && navigator.userAgent.indexOf("HBuilderX") > 0 || "app" === P); var n = T; n && !n.code && (t.debugInfo = n); var s = new v({ createPromise: function createPromise() { return qs(e); } }); t.initLocalNetwork = function () { return s.exec(); }; }(t), Fs(t), qn(t), function (e) { var t = e.uploadFile; e.uploadFile = function (e) { return t.call(this, e); }; }(t), function (e) { e.database = function (t) { if (t && Object.keys(t).length > 0) return e.init(t).database(); if (this._database) return this._database; var n = Gn(Yn, { uniClient: e }); return this._database = n, n; }, e.databaseForJQL = function (t) { if (t && Object.keys(t).length > 0) return e.init(t).databaseForJQL(); if (this._databaseForJQL) return this._databaseForJQL; var n = Gn(Yn, { uniClient: e, isJQL: !0 }); return this._databaseForJQL = n, n; }; }(t), function (e) { e.getCurrentUserInfo = As, e.chooseAndUploadFile = Ts.initChooseAndUploadFile(e), Object.assign(e, { get mixinDatacom() { return xs(e); } }), e.SSEChannel = Ds, e.initSecureNetworkByWeixin = Us(e), e.importObject = Os(e); }(t); return ["callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "chooseAndUploadFile"].forEach(function (e) { if (!t[e]) return; var n = t[e]; t[e] = function () { return n.apply(t, Array.from(arguments)); }, t[e] = function (e, t) { return function (n) { var _this27 = this; var s = !1; if ("callFunction" === t) { var _e29 = n && n.type || c; s = _e29 !== c; } var r = "callFunction" === t && !s, i = this._initPromiseHub.exec(); n = n || {}; var _ee2 = ee(n), o = _ee2.success, a = _ee2.fail, u = _ee2.complete, l = i.then(function () { return s ? Promise.resolve() : M(q(t, "invoke"), n); }).then(function () { return e.call(_this27, n); }).then(function (e) { return s ? Promise.resolve(e) : M(q(t, "success"), e).then(function () { return M(q(t, "complete"), e); }).then(function () { return r && Y(j, { type: H, content: e }), Promise.resolve(e); }); }, function (e) { return s ? Promise.reject(e) : M(q(t, "fail"), e).then(function () { return M(q(t, "complete"), e); }).then(function () { return Y(j, { type: H, content: e }), Promise.reject(e); }); }); if (!(o || a || u)) return l; l.then(function (e) { o && o(e), u && u(e), r && Y(j, { type: H, content: e }); }, function (e) { a && a(e), u && u(e), r && Y(j, { type: H, content: e }); }); }; }(t[e], e).bind(t); }), t.init = this.init, t; } }]); return _class7; }())(); (function () { var e = C; var t = {}; if (e && 1 === e.length) t = e[0], js = js.init(t), js._isDefault = !0;else { var _t22 = ["auth", "callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "database", "getCurrentUSerInfo", "importObject"]; var _n16; _n16 = e && e.length > 0 ? "应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间" : x ? "应用未关联服务空间,请在uniCloud目录右键关联服务空间" : "uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间", _t22.forEach(function (e) { js[e] = function () { return console.error(_n16), Promise.reject(new te({ code: "SYS_ERR", message: _n16 })); }; }); } Object.assign(js, { get mixinDatacom() { return xs(js); } }), Is(js), js.addInterceptor = N, js.removeInterceptor = D, js.interceptObject = F, S && "web" === P && (window.uniCloud = js); })(); var Bs = js; exports.default = Bs; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 93), __webpack_require__(/*! @dcloudio/uni-mp-weixin/dist/mp.js */ 94)["default"])) /***/ }), /* 93 */ /*!***********************************!*\ !*** (webpack)/buildin/global.js ***! \***********************************/ /*! no static exports found */ /***/ (function(module, exports) { var g; // This works in non-strict mode g = (function() { return this; })(); try { // This works if eval is allowed (see CSP) g = g || new Function("return this")(); } catch (e) { // This works if the window reference is available if (typeof window === "object") g = window; } // g can still be undefined, but nothing to do about it... // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { ...} module.exports = g; /***/ }), /* 94 */ /*!*********************************************************!*\ !*** ./node_modules/@dcloudio/uni-mp-weixin/dist/mp.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1); Object.defineProperty(exports, "__esModule", { value: true }); exports.Behavior = Behavior; exports.Component = Component; exports.Page = Page; exports.nextTick = exports.default = void 0; var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2)); var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95)); var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 101)); var _PROP_DEFAULT_VALUES; function parseData(data, vueComponentOptions) { if (!data) { return; } vueComponentOptions.mpOptions.data = data; } function parseComponents(vueComponentOptions) { vueComponentOptions.components = global.__wxVueOptions.components; } var _toString = Object.prototype.toString; var hasOwnProperty = Object.prototype.hasOwnProperty; function isFn(fn) { return typeof fn === 'function'; } function isPlainObject(obj) { return _toString.call(obj) === '[object Object]'; } function hasOwn(obj, key) { return hasOwnProperty.call(obj, key); } function noop() {} /** * Create a cached version of a pure function. */ function cached(fn) { var cache = Object.create(null); return function cachedFn(str) { var hit = cache[str]; return hit || (cache[str] = fn(str)); }; } /** * Camelize a hyphen-delimited string. */ var camelizeRE = /-(\w)/g; var camelize = cached(function (str) { return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }); }); var SOURCE_KEY = '__data__'; var COMPONENT_LIFECYCLE = { created: 'onServiceCreated', attached: 'onServiceAttached', ready: 'mounted', moved: 'moved', detached: 'destroyed' }; var COMPONENT_LIFECYCLE_KEYS = Object.keys(COMPONENT_LIFECYCLE); var PAGE_LIFETIMES = { show: 'onPageShow', hide: 'onPageHide', resize: 'onPageResize' }; var PAGE_LIFETIMES_KEYS = Object.keys(PAGE_LIFETIMES); var PAGE_LIFECYCLE = ['onLoad', 'onShow', 'onReady', 'onHide', 'onUnload', 'onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onPageScroll', 'onResize', 'onTabItemTap']; function parsePageMethods(mpComponentOptions, vueComponentOptions) { var methods = Object.create(null); Object.keys(mpComponentOptions).forEach(function (key) { var value = mpComponentOptions[key]; if (isFn(value) && PAGE_LIFECYCLE.indexOf(key) === -1) { methods[key] = value; } }); vueComponentOptions.methods = methods; } function parsePageLifecycle(mpComponentOptions, vueComponentOptions) { Object.keys(mpComponentOptions).forEach(function (key) { if (PAGE_LIFECYCLE.indexOf(key) !== -1) { vueComponentOptions[key] = mpComponentOptions[key]; } }); } function parsePage(mpComponentOptions) { var vueComponentOptions = { mixins: [], mpOptions: {} }; parseComponents(vueComponentOptions); parseData(mpComponentOptions.data, vueComponentOptions); parsePageMethods(mpComponentOptions, vueComponentOptions); parsePageLifecycle(mpComponentOptions, vueComponentOptions); return vueComponentOptions; } function parseProperties(properties, vueComponentOptions) { if (!properties) { return; } vueComponentOptions.mpOptions.properties = properties; } function parseOptions(options, vueComponentOptions) { if (!options) { return; } vueComponentOptions.mpOptions.options = options; } function parseMethods(methods, vueComponentOptions) { if (!methods) { return; } if (methods.$emit) { console.warn('Method "$emit" conflicts with an existing Vue instance method'); delete methods.$emit; } vueComponentOptions.methods = methods; } function parseLifecycle(mpComponentOptions, vueComponentOptions) { COMPONENT_LIFECYCLE_KEYS.forEach(function (name) { if (hasOwn(mpComponentOptions, name)) { (vueComponentOptions[COMPONENT_LIFECYCLE[name]] || (vueComponentOptions[COMPONENT_LIFECYCLE[name]] = [])).push(mpComponentOptions[name]); } }); } var mpBehaviors = { 'wx://form-field': {}, 'wx://component-export': {} }; function callDefinitionFilter(mpComponentOptions) { var behaviors = mpComponentOptions.behaviors, definitionFilter = mpComponentOptions.definitionFilter; var behaviorDefinitionFilters = []; if (Array.isArray(behaviors)) { behaviors.forEach(function (behavior) { behavior = typeof behavior === 'string' ? mpBehaviors[behavior] : behavior; if (behavior.definitionFilter) { behaviorDefinitionFilters.push(behavior.definitionFilter); behavior.definitionFilter.call(null, mpComponentOptions, []); } }); } if (isFn(definitionFilter)) { return function (defFields) { definitionFilter(defFields, behaviorDefinitionFilters); }; } } function parseDefinitionFilter(mpComponentOptions, vueComponentOptions) { callDefinitionFilter(mpComponentOptions); } function parseBehavior(behavior) { var data = behavior.data, methods = behavior.methods, behaviors = behavior.behaviors, properties = behavior.properties; var vueComponentOptions = { watch: {}, mpOptions: { mpObservers: [] } }; parseData(data, vueComponentOptions); parseMethods(methods, vueComponentOptions); parseBehaviors(behaviors, vueComponentOptions); parseProperties(properties, vueComponentOptions); parseLifecycle(behavior, vueComponentOptions); parseDefinitionFilter(behavior); return vueComponentOptions; } var BEHAVIORS = { 'wx://form-field': { beforeCreate: function beforeCreate() { var mpOptions = this.$options.mpOptions; if (!mpOptions.properties) { mpOptions.properties = Object.create(null); } var props = mpOptions.properties; // TODO form submit,reset if (!hasOwn(props, 'name')) { props.name = { type: String }; } if (!hasOwn(props, 'value')) { props.value = { type: String // 默认类型调整为 String,否则默认值为 null,导致一些自定义 input 显示不正确 }; } } } }; function parseBehaviors(behaviors, vueComponentOptions) { if (!behaviors) { return; } behaviors.forEach(function (behavior) { if (typeof behavior === 'string') { BEHAVIORS[behavior] && vueComponentOptions.mixins.push(BEHAVIORS[behavior]); } else { vueComponentOptions.mixins.push(parseBehavior(behavior)); } }); } function parseSinglePath(path) { return path.split('.'); } function parseMultiPaths(paths) { return paths.split(',').map(function (path) { return parseSinglePath(path); }); } function parseObservers(observers, vueComponentOptions) { if (!observers) { return; } var mpObservers = vueComponentOptions.mpOptions.mpObservers; Object.keys(observers).forEach(function (path) { mpObservers.push({ paths: parseMultiPaths(path), observer: observers[path] }); }); } function relative(from, to) { if (to.indexOf('/') === 0) { from = ''; } var fromArr = from.split('/'); var toArr = to.split('/'); fromArr.pop(); while (toArr.length) { var part = toArr.shift(); if (part !== '' && part !== '.') { if (part !== '..') { fromArr.push(part); } else { fromArr.pop(); } } } return fromArr.join('/'); } function parseRelations(relations, vueComponentOptions) { if (!relations) { return; } Object.keys(relations).forEach(function (name) { var relation = relations[name]; relation.name = name; relation.target = relation.target ? String(relation.target) : relative(global.__wxRoute, name); }); vueComponentOptions.mpOptions.relations = relations; } function parseExternalClasses(externalClasses, vueComponentOptions) { if (!externalClasses) { return; } if (!Array.isArray(externalClasses)) { externalClasses = [externalClasses]; } vueComponentOptions.mpOptions.externalClasses = externalClasses; if (!vueComponentOptions.mpOptions.properties) { vueComponentOptions.mpOptions.properties = Object.create(null); } externalClasses.forEach(function (externalClass) { vueComponentOptions.mpOptions.properties[camelize(externalClass)] = { type: String, value: '' }; }); } function parseLifetimes(lifetimes, vueComponentOptions) { if (!lifetimes) { return; } parseLifecycle(lifetimes, vueComponentOptions); } function parsePageLifetimes(pageLifetimes, vueComponentOptions) { if (!pageLifetimes) { return; } PAGE_LIFETIMES_KEYS.forEach(function (key) { var lifetimeFn = pageLifetimes[key]; isFn(lifetimeFn) && (vueComponentOptions[PAGE_LIFETIMES[key]] = lifetimeFn); }); } function parseComponent(mpComponentOptions) { var data = mpComponentOptions.data, options = mpComponentOptions.options, methods = mpComponentOptions.methods, behaviors = mpComponentOptions.behaviors, lifetimes = mpComponentOptions.lifetimes, observers = mpComponentOptions.observers, relations = mpComponentOptions.relations, properties = mpComponentOptions.properties, pageLifetimes = mpComponentOptions.pageLifetimes, externalClasses = mpComponentOptions.externalClasses; var vueComponentOptions = { mixins: [], props: {}, watch: {}, mpOptions: { mpObservers: [] } }; parseComponents(vueComponentOptions); parseData(data, vueComponentOptions); parseOptions(options, vueComponentOptions); parseMethods(methods, vueComponentOptions); parseBehaviors(behaviors, vueComponentOptions); parseLifetimes(lifetimes, vueComponentOptions); parseObservers(observers, vueComponentOptions); parseRelations(relations, vueComponentOptions); parseProperties(properties, vueComponentOptions); parsePageLifetimes(pageLifetimes, vueComponentOptions); parseExternalClasses(externalClasses, vueComponentOptions); parseLifecycle(mpComponentOptions, vueComponentOptions); parseDefinitionFilter(mpComponentOptions); return vueComponentOptions; } function initRelationHandlers(type, handler, target, ctx) { if (!handler) { return; } var name = "_$".concat(type, "Handlers"); (ctx[name] || (ctx[name] = [])).push(function () { handler.call(ctx, target); }); } function initLinkedHandlers(relation, target, ctx) { var type = 'linked'; var name = relation.name; var relationNodes = ctx._$relationNodes || (ctx._$relationNodes = Object.create(null)); (relationNodes[name] || (relationNodes[name] = [])).push(target); initRelationHandlers(type, relation[type], target, ctx); } function initUnlinkedHandlers(relation, target, ctx) { var type = 'unlinked'; initRelationHandlers(type, relation[type], target, ctx); } function findParentRelation(parentVm, target, type) { var relations = parentVm && parentVm.$options.mpOptions && parentVm.$options.mpOptions.relations; if (!relations) { return []; } var name = Object.keys(relations).find(function (name) { var relation = relations[name]; return relation.target === target && relation.type === type; }); if (!name) { return []; } return [relations[name], parentVm]; } function initParentRelation(vm, childRelation, match) { var _match = match(vm, vm.$options.mpOptions.path), _match2 = (0, _slicedToArray2.default)(_match, 2), parentRelation = _match2[0], parentVm = _match2[1]; if (!parentRelation) { return; } initLinkedHandlers(parentRelation, vm, parentVm); initLinkedHandlers(childRelation, parentVm, vm); initUnlinkedHandlers(parentRelation, vm, parentVm); initUnlinkedHandlers(childRelation, parentVm, vm); } function initRelation(relation, vm) { var type = relation.type; if (type === 'parent') { initParentRelation(vm, relation, function matchParent(vm, target) { return findParentRelation(vm.$parent, target, 'child'); }); } else if (type === 'ancestor') { initParentRelation(vm, relation, function matchAncestor(vm, target) { var $parent = vm.$parent; while ($parent) { var ret = findParentRelation($parent, target, 'descendant'); if (ret.length) { return ret; } $parent = $parent.$parent; } return []; }); } } function initRelations(vm) { var _ref = vm.$options.mpOptions || {}, relations = _ref.relations; if (!relations) { return; } Object.keys(relations).forEach(function (name) { initRelation(relations[name], vm); }); } function handleRelations(vm, type) { // TODO 需要移除 relationNodes var handlers = vm["_$".concat(type, "Handlers")]; if (!handlers) { return; } handlers.forEach(function (handler) { return handler(); }); } var sharedPropertyDefinition = { enumerable: true, configurable: true, get: noop, set: noop }; function proxy(target, sourceKey, key) { sharedPropertyDefinition.get = function proxyGetter() { return this[sourceKey][key]; }; sharedPropertyDefinition.set = function proxySetter(val) { this[sourceKey][key] = val; }; Object.defineProperty(target, key, sharedPropertyDefinition); } function setDataByExprPath(exprPath, value, data) { var keys = exprPath.replace(/\[(\d+?)\]/g, '.$1').split('.'); keys.reduce(function (obj, key, idx) { if (idx === keys.length - 1) { obj[key] = value; } else { if (typeof obj[key] === 'undefined') { obj[key] = {}; } return obj[key]; } }, data); return keys.length === 1; } function setData(data, callback) { var _this = this; if (!isPlainObject(data)) { return; } Object.keys(data).forEach(function (key) { if (setDataByExprPath(key, data[key], _this.data)) { !hasOwn(_this, key) && proxy(_this, SOURCE_KEY, key); } }); this.$forceUpdate(); isFn(callback) && this.$nextTick(callback); } /** * https://github.com/swan-team/swan-js/blob/61e2a63f7aa576b5daafbe77fdfa7c65b977060c/src/utils/index.js */ var _toString$1 = Object.prototype.toString; /** * 深度assign的函数 * @param {Object} targetObject 要被拷贝的目标对象 * @param {Object} originObject 拷贝的源对象 * @return {Object} merge后的对象 */ var deepAssign = function deepAssign() { var targetObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var originObject = arguments.length > 1 ? arguments[1] : undefined; var originType = _toString$1.call(originObject); if (originType === '[object Array]') { targetObject = originObject.slice(0); return targetObject; } else if (originType === '[object Object]') { for (var key in originObject) { targetObject[key] = deepAssign(targetObject[key], originObject[key]); } return targetObject; } else if (originType === '[object Date]') { return new Date(originObject.getTime()); } else if (originType === '[object RegExp]') { var target = String(originObject); var lastIndex = target.lastIndexOf('/'); return new RegExp(target.slice(1, lastIndex), target.slice(lastIndex + 1)); } return originObject; }; /** * 深度拷贝逻辑,不同于lodash等库,但是与微信一致 * @param {*} [originObj] 原对象 * @return {Object|Array} 拷贝结果 */ var deepClone = function deepClone(originObj) { return deepAssign(_toString$1.call(originObj) === '[object Array]' ? [] : {}, originObj); }; var PROP_DEFAULT_VALUES = (_PROP_DEFAULT_VALUES = {}, (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, String, ''), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Number, 0), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Boolean, false), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Object, null), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Array, []), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, null, null), _PROP_DEFAULT_VALUES); function getDefaultVal(propType) { return PROP_DEFAULT_VALUES[propType]; } function getPropertyVal(options) { if (isPlainObject(options)) { if (hasOwn(options, 'value')) { return options.value; } return getDefaultVal(options.type); } return getDefaultVal(options); } function getType(propOptions) { return isPlainObject(propOptions) ? propOptions.type : propOptions; } function validateProp(key, propsOptions, propsData, vm) { var value = propsData[key]; if (value !== undefined) { var propOptions = propsOptions[key]; var type = getType(propOptions); value = formatVal(value, type); var observer = propOptions && propOptions.observer; if (observer) { // 初始化时,异步触发 observer,否则 observer 中无法访问 methods 或其他 setTimeout(function () { observe(observer, vm, value); }, 4); } return value; } return getPropertyVal(propsOptions[key]); } function formatVal(val, type) { if (type === Boolean) { return !!val; } else if (type === String) { return String(val); } return val; } function observe(observer, vm, newVal, oldVal) { try { if (typeof observer === 'function') { observer.call(vm, newVal, oldVal); } else if (typeof observer === 'string' && typeof vm[observer] === 'function') { vm[observer](newVal, oldVal); } } catch (err) { console.error("execute observer ".concat(observer, " callback fail! err: ").concat(err)); } } function initProperties(vm, instanceData) { var properties = vm.$options.mpOptions.properties; if (!properties) { return; } var propsData = deepClone(vm.$options.propsData) || {}; var _loop = function _loop(key) { var observer = isPlainObject(properties[key]) ? properties[key].observer : false; var value = validateProp(key, properties, propsData, vm); Object.defineProperty(instanceData, key, { enumerable: true, configurable: true, get: function get() { return value; }, set: function set(newVal) { var oldVal = value; /* eslint-disable no-self-compare */ if (newVal === value || newVal !== newVal && value !== value) { return; } // TODO 临时方案,clone array value = Array.isArray(newVal) ? newVal.slice(0) : newVal; if (observer) { observe(observer, vm, newVal, oldVal); } // 触发渲染 vm.$forceUpdate(); } }); }; for (var key in properties) { _loop(key); } } function updateProperties(vm) { var properties = vm.$options.mpOptions && vm.$options.mpOptions.properties; var propsData = vm.$options.propsData; if (propsData && properties) { Object.keys(properties).forEach(function (key) { if (hasOwn(propsData, key)) { vm[key] = formatVal(propsData[key], getType(properties[key])); } }); } } function initState(vm) { var instanceData = JSON.parse(JSON.stringify(vm.$options.mpOptions.data || {})); vm[SOURCE_KEY] = instanceData; var propertyDefinition = { get: function get() { return vm[SOURCE_KEY]; }, set: function set(value) { vm[SOURCE_KEY] = value; } }; Object.defineProperties(vm, { data: propertyDefinition, properties: propertyDefinition }); vm.setData = setData; initProperties(vm, instanceData); Object.keys(instanceData).forEach(function (key) { proxy(vm, SOURCE_KEY, key); }); } function initMethods(vm) { var oldEmit = vm.$emit; vm.triggerEvent = function (eventName, detail, options) { var target = { dataset: vm.$el.dataset }; var event = { target: target, currentTarget: target, detail: detail, preventDefault: noop, stopPropagation: noop }; oldEmit.call(vm, eventName, event); }; // 主要是Vant 自己封装了 $emit,放到 methods 中会触发 Vue 的警告,索性,框架直接重写该方法 vm.$emit = function () { vm.triggerEvent.apply(vm, arguments); }; vm.getRelationNodes = function (relationKey) { // 需要过滤已被销毁的vm /* eslint-disable no-mixed-operators */ return (vm._$relationNodes && vm._$relationNodes[relationKey] || []).filter(function (vm) { return !vm._isDestroyed; }); }; vm._$updateProperties = updateProperties; } function handleObservers(vm) { var watch = vm.$options.watch; if (!watch) { return; } Object.keys(watch).forEach(function (name) { var observer = watch[name]; if (observer.mounted) { var val = vm[name]; var handler = observer.handler; if (typeof handler === 'string') { handler = vm[handler]; } handler && handler.call(vm, val, val); } }); } var polyfill = { beforeCreate: function beforeCreate() { // 取消 development 时的 Proxy,避免小程序组件模板中使用尚未定义的属性告警 this._renderProxy = this; this._$self = this; this._$noop = noop; }, created: function created() { // properties 中可能会访问 methods,故需要在 created 中初始化 initState(this); initMethods(this); initRelations(this); }, mounted: function mounted() { handleObservers(this); }, destroyed: function destroyed() { handleRelations(this, 'unlinked'); } }; global.__wxRoute = ''; global.__wxComponents = Object.create(null); global.__wxVueOptions = Object.create(null); function Page(options) { var pageOptions = parsePage(options); pageOptions.mixins.unshift(polyfill); pageOptions.mpOptions.path = global.__wxRoute; global.__wxComponents[global.__wxRoute] = pageOptions; } function initRelationsHandler(vueComponentOptions) { // linked 需要在当前组件 attached 之后再执行 if (!vueComponentOptions.onServiceAttached) { vueComponentOptions.onServiceAttached = []; } vueComponentOptions.onServiceAttached.push(function onServiceAttached() { handleRelations(this, 'linked'); }); } function Component(options) { var componentOptions = parseComponent(options); componentOptions.mixins.unshift(polyfill); componentOptions.mpOptions.path = global.__wxRoute; initRelationsHandler(componentOptions); global.__wxComponents[global.__wxRoute] = componentOptions; } function Behavior(options) { return options; } var nextTick = _vue.default.nextTick; exports.nextTick = nextTick; var index = uni.__$wx__; var _default = index; exports.default = _default; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 93))) /***/ }), /* 95 */ /*!**************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***! \**************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ 96); var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ 97); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 98); var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ 100); function _slicedToArray(arr, i) { return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest(); } module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 96 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 97 */ /*!*********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***! \*********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } } module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 98 */ /*!***************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 99); function _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); } module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 99 */ /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _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; } module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 100 */ /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 101 */ /*!**********************!*\ !*** external "Vue" ***! \**********************/ /*! no static exports found */ /***/ (function(module, exports) { module.exports = Vue; /***/ }), /* 102 */ /*!**********************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***! \**********************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 103 */ /*!************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ 104); function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 104 */ /*!*****************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***! \*****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 105 */ /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ 106); var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ 107); var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 98); var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ 108); function _toConsumableArray(arr) { return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread(); } module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 106 */ /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 99); function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return arrayLikeToArray(arr); } module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 107 */ /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 108 */ /*!******************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 109 */ /*!*********************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/inherits.js ***! \*********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 110); function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) setPrototypeOf(subClass, superClass); } module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 110 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _setPrototypeOf(o, p) { module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _setPrototypeOf(o, p); } module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 111 */ /*!**************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"]; var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ 102); function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return assertThisInitialized(self); } module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 112 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _getPrototypeOf(o) { module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _getPrototypeOf(o); } module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 113 */ /*!****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***! \****************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ 112); var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 110); var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ 114); var construct = __webpack_require__(/*! ./construct.js */ 115); function _wrapNativeSuper(Class) { var _cache = typeof Map === "function" ? new Map() : undefined; module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !isNativeFunction(Class)) return Class; if (typeof Class !== "function") { throw new TypeError("Super expression must either be null or a function"); } if (typeof _cache !== "undefined") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return construct(Class, arguments, getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return setPrototypeOf(Wrapper, Class); }, module.exports.__esModule = true, module.exports["default"] = module.exports; return _wrapNativeSuper(Class); } module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 114 */ /*!*****************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _isNativeFunction(fn) { return Function.toString.call(fn).indexOf("[native code]") !== -1; } module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 115 */ /*!**********************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/construct.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 110); var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ 116); function _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports; } else { module.exports = _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) setPrototypeOf(instance, Class.prototype); return instance; }, module.exports.__esModule = true, module.exports["default"] = module.exports; } return _construct.apply(null, arguments); } module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 116 */ /*!*************************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 117 */ /*!***************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***! \***************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 118 */ /*!************************************************************!*\ !*** ./node_modules/@babel/runtime/helpers/createClass.js ***! \************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3); function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports; /***/ }), /* 119 */ /*!*******************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages.json?{"type":"origin-pages-json"} ***! \*******************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _default = { "pages": [{ "path": "pages/login/login", "style": { "navigationBarTitleText": "登录", "navigationStyle": "custom" } }, { "path": "pages/home/index", "style": { "navigationBarTitleText": "首页", "navigationStyle": "custom" } }, { "path": "pages/power/index", "style": { "navigationBarTitleText": "电量预测", "navigationStyle": "custom" } }, { "path": "pages/type/index", "style": { "navigationBarTitleText": "故障分类", "navigationStyle": "custom" } }, { "path": "pages/report/index", "style": { "navigationBarTitleText": "数据简报", "navigationStyle": "custom" } }, { "path": "pages/warn/index", "style": { "navigationBarTitleText": "故障预警", "navigationStyle": "custom" } }], "tabBar": { "color": "#6A98CB", "selectedColor": "#FF8902", "borderStyle": "white", "backgroundColor": "#000", "list": [{ "pagePath": "pages/home/index", "iconPath": "static/jnImage/indexPage/home.png", "selectedIconPath": "static/jnImage/indexPage/homeS.png", "text": "首页" }, { "pagePath": "pages/power/index", "iconPath": "static/jnImage/indexPage/power.png", "selectedIconPath": "static/jnImage/indexPage/powerS.png", "text": "电量预测" }, { "pagePath": "pages/type/index", "iconPath": "static/jnImage/indexPage/type.png", "selectedIconPath": "static/jnImage/indexPage/typeS.png", "text": "故障分类" }, { "pagePath": "pages/report/index", "iconPath": "static/jnImage/indexPage/report.png", "selectedIconPath": "static/jnImage/indexPage/reportS.png", "text": "数据简报" }, { "pagePath": "pages/warn/index", "iconPath": "static/jnImage/indexPage/warn.png", "selectedIconPath": "static/jnImage/indexPage/warnS.png", "text": "故障预警" }] }, "globalStyle": { "navigationBarTextStyle": "black", "navigationBarTitleText": "RuoYi", "navigationBarBackgroundColor": "#FFFFFF" } }; exports.default = _default; /***/ }), /* 120 */ /*!******************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages.json?{"type":"stat"} ***! \******************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _default = { "appid": "__UNI__B5DFCD0" }; exports.default = _default; /***/ }), /* 121 */ /*!*********************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***! \*********************************************************************/ /*! exports provided: log, default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; }); function typof (v) { var s = Object.prototype.toString.call(v) return s.substring(8, s.length - 1) } function isDebugMode () { /* eslint-disable no-undef */ return typeof __channelId__ === 'string' && __channelId__ } function jsonStringifyReplacer (k, p) { switch (typof(p)) { case 'Function': return 'function() { [native code] }' default : return p } } function log (type) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key] } console[type].apply(console, args) } function formatLog () { for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key] } var type = args.shift() if (isDebugMode()) { args.push(args.pop().replace('at ', 'uni-app:///')) return console[type].apply(console, args) } var msgs = args.map(function (v) { var type = Object.prototype.toString.call(v).toLowerCase() if (type === '[object object]' || type === '[object array]') { try { v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---' } catch (e) { v = type } } else { if (v === null) { v = '---NULL---' } else if (v === undefined) { v = '---UNDEFINED---' } else { var vType = typof(v).toUpperCase() if (vType === 'NUMBER' || vType === 'BOOLEAN') { v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---' } else { v = String(v) } } } return v }) var msg = '' if (msgs.length > 1) { var lastMsg = msgs.pop() msg = msgs.join('---COMMA---') if (lastMsg.indexOf(' at ') === 0) { msg += lastMsg } else { msg += '---COMMA---' + lastMsg } } else { msg = msgs[0] } console[type](msg) } /***/ }), /* 122 */ /*!************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js ***! \************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("/* WEBPACK VAR INJECTION */(function(__f__) {/*\r\n * uCharts (R)\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts (R) 官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95));\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar config = {\n version: 'v2.5.0-20230101',\n yAxisWidth: 15,\n xAxisHeight: 22,\n padding: [10, 10, 10, 10],\n rotate: false,\n fontSize: 13,\n fontColor: '#666666',\n dataPointShape: ['circle', 'circle', 'circle', 'circle'],\n color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],\n linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],\n pieChartLinePadding: 15,\n pieChartTextPadding: 5,\n titleFontSize: 20,\n subtitleFontSize: 15,\n radarLabelTextMargin: 13\n};\nvar assign = function assign(target) {\n for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n varArgs[_key2 - 1] = arguments[_key2];\n }\n if (target == null) {\n throw new TypeError('[uCharts] Cannot convert undefined or null to object');\n }\n if (!varArgs || varArgs.length <= 0) {\n return target;\n }\n // 深度合并对象\n function deepAssign(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj1[key] && obj1[key].toString() === \"[object Object]\" ? deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];\n }\n return obj1;\n }\n varArgs.forEach(function (val) {\n target = deepAssign(target, val);\n });\n return target;\n};\nvar util = {\n toFixed: function toFixed(num, limit) {\n limit = limit || 2;\n if (this.isFloat(num)) {\n num = num.toFixed(limit);\n }\n return num;\n },\n isFloat: function isFloat(num) {\n return num % 1 !== 0;\n },\n approximatelyEqual: function approximatelyEqual(num1, num2) {\n return Math.abs(num1 - num2) < 1e-10;\n },\n isSameSign: function isSameSign(num1, num2) {\n return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;\n },\n isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {\n return this.isSameSign(p1.x, p2.x);\n },\n isCollision: function isCollision(obj1, obj2) {\n obj1.end = {};\n obj1.end.x = obj1.start.x + obj1.width;\n obj1.end.y = obj1.start.y - obj1.height;\n obj2.end = {};\n obj2.end.x = obj2.start.x + obj2.width;\n obj2.end.y = obj2.start.y - obj2.height;\n var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;\n return !flag;\n }\n};\n\n//兼容H5点击事件\nfunction getH5Offset(e) {\n e.mp = {\n changedTouches: []\n };\n e.mp.changedTouches.push({\n x: e.offsetX,\n y: e.offsetY\n });\n return e;\n}\n\n// hex 转 rgba\nfunction hexToRgb(hexValue, opc) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) {\n return r + r + g + g + b + b;\n });\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';\n}\nfunction findRange(num, type, limit) {\n if (isNaN(num)) {\n throw new Error('[uCharts] series数据需为Number格式');\n }\n limit = limit || 10;\n type = type ? type : 'upper';\n var multiple = 1;\n while (limit < 1) {\n limit *= 10;\n multiple *= 10;\n }\n if (type === 'upper') {\n num = Math.ceil(num * multiple);\n } else {\n num = Math.floor(num * multiple);\n }\n while (num % limit !== 0) {\n if (type === 'upper') {\n if (num == num + 1) {\n //修复数据值过大num++无效的bug by 向日葵 @xrk_jy\n break;\n }\n num++;\n } else {\n num--;\n }\n }\n return num / multiple;\n}\nfunction calCandleMA(dayArr, nameArr, colorArr, kdata) {\n var seriesTemp = [];\n for (var k = 0; k < dayArr.length; k++) {\n var seriesItem = {\n data: [],\n name: nameArr[k],\n color: colorArr[k]\n };\n for (var i = 0, len = kdata.length; i < len; i++) {\n if (i < dayArr[k]) {\n seriesItem.data.push(null);\n continue;\n }\n var sum = 0;\n for (var j = 0; j < dayArr[k]; j++) {\n sum += kdata[i - j][1];\n }\n seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));\n }\n seriesTemp.push(seriesItem);\n }\n return seriesTemp;\n}\nfunction calValidDistance(self, distance, chartData, config, opts) {\n var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];\n var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n dataChartWidth += (opts.extra.mount.widthRatio - 1) * chartData.eachSpacing;\n }\n var validDistance = distance;\n if (distance >= 0) {\n validDistance = 0;\n self.uevent.trigger('scrollLeft');\n self.scrollOption.position = 'left';\n opts.xAxis.scrollPosition = 'left';\n } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {\n validDistance = dataChartAreaWidth - dataChartWidth;\n self.uevent.trigger('scrollRight');\n self.scrollOption.position = 'right';\n opts.xAxis.scrollPosition = 'right';\n } else {\n self.scrollOption.position = distance;\n opts.xAxis.scrollPosition = distance;\n }\n return validDistance;\n}\nfunction isInAngleRange(angle, startAngle, endAngle) {\n function adjust(angle) {\n while (angle < 0) {\n angle += 2 * Math.PI;\n }\n while (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n return angle;\n }\n angle = adjust(angle);\n startAngle = adjust(startAngle);\n endAngle = adjust(endAngle);\n if (startAngle > endAngle) {\n endAngle += 2 * Math.PI;\n if (angle < startAngle) {\n angle += 2 * Math.PI;\n }\n }\n return angle >= startAngle && angle <= endAngle;\n}\nfunction createCurveControlPoints(points, i) {\n function isNotMiddlePoint(points, i) {\n if (points[i - 1] && points[i + 1]) {\n return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y);\n } else {\n return false;\n }\n }\n function isNotMiddlePointX(points, i) {\n if (points[i - 1] && points[i + 1]) {\n return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, points[i + 1].x);\n } else {\n return false;\n }\n }\n var a = 0.2;\n var b = 0.2;\n var pAx = null;\n var pAy = null;\n var pBx = null;\n var pBy = null;\n if (i < 1) {\n pAx = points[0].x + (points[1].x - points[0].x) * a;\n pAy = points[0].y + (points[1].y - points[0].y) * a;\n } else {\n pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;\n pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;\n }\n if (i > points.length - 3) {\n var last = points.length - 1;\n pBx = points[last].x - (points[last].x - points[last - 1].x) * b;\n pBy = points[last].y - (points[last].y - points[last - 1].y) * b;\n } else {\n pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;\n pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;\n }\n if (isNotMiddlePoint(points, i + 1)) {\n pBy = points[i + 1].y;\n }\n if (isNotMiddlePoint(points, i)) {\n pAy = points[i].y;\n }\n if (isNotMiddlePointX(points, i + 1)) {\n pBx = points[i + 1].x;\n }\n if (isNotMiddlePointX(points, i)) {\n pAx = points[i].x;\n }\n if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {\n pAy = points[i].y;\n }\n if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {\n pBy = points[i + 1].y;\n }\n if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {\n pAx = points[i].x;\n }\n if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {\n pBx = points[i + 1].x;\n }\n return {\n ctrA: {\n x: pAx,\n y: pAy\n },\n ctrB: {\n x: pBx,\n y: pBy\n }\n };\n}\nfunction convertCoordinateOrigin(x, y, center) {\n return {\n x: center.x + x,\n y: center.y - y\n };\n}\nfunction avoidCollision(obj, target) {\n if (target) {\n // is collision test\n while (util.isCollision(obj, target)) {\n if (obj.start.x > 0) {\n obj.start.y--;\n } else if (obj.start.x < 0) {\n obj.start.y++;\n } else {\n if (obj.start.y > 0) {\n obj.start.y++;\n } else {\n obj.start.y--;\n }\n }\n }\n }\n return obj;\n}\nfunction fixPieSeries(series, opts, config) {\n var pieSeriesArr = [];\n if (series.length > 0 && series[0].data.constructor.toString().indexOf('Array') > -1) {\n opts._pieSeries_ = series;\n var oldseries = series[0].data;\n for (var i = 0; i < oldseries.length; i++) {\n oldseries[i].formatter = series[0].formatter;\n oldseries[i].data = oldseries[i].value;\n pieSeriesArr.push(oldseries[i]);\n }\n opts.series = pieSeriesArr;\n } else {\n pieSeriesArr = series;\n }\n return pieSeriesArr;\n}\nfunction fillSeries(series, opts, config) {\n var index = 0;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n if (!item.color) {\n item.color = config.color[index];\n index = (index + 1) % config.color.length;\n }\n if (!item.linearIndex) {\n item.linearIndex = i;\n }\n if (!item.index) {\n item.index = 0;\n }\n if (!item.type) {\n item.type = opts.type;\n }\n if (typeof item.show == \"undefined\") {\n item.show = true;\n }\n if (!item.type) {\n item.type = opts.type;\n }\n if (!item.pointShape) {\n item.pointShape = \"circle\";\n }\n if (!item.legendShape) {\n switch (item.type) {\n case 'line':\n item.legendShape = \"line\";\n break;\n case 'column':\n case 'bar':\n item.legendShape = \"rect\";\n break;\n case 'area':\n case 'mount':\n item.legendShape = \"triangle\";\n break;\n default:\n item.legendShape = \"circle\";\n }\n }\n }\n return series;\n}\nfunction fillCustomColor(linearType, customColor, series, config) {\n var newcolor = customColor || [];\n if (linearType == 'custom' && newcolor.length == 0) {\n newcolor = config.linearColor;\n }\n if (linearType == 'custom' && newcolor.length < series.length) {\n var chazhi = series.length - newcolor.length;\n for (var i = 0; i < chazhi; i++) {\n newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);\n }\n }\n return newcolor;\n}\nfunction getDataRange(minData, maxData) {\n var limit = 0;\n var range = maxData - minData;\n if (range >= 10000) {\n limit = 1000;\n } else if (range >= 1000) {\n limit = 100;\n } else if (range >= 100) {\n limit = 10;\n } else if (range >= 10) {\n limit = 5;\n } else if (range >= 1) {\n limit = 1;\n } else if (range >= 0.1) {\n limit = 0.1;\n } else if (range >= 0.01) {\n limit = 0.01;\n } else if (range >= 0.001) {\n limit = 0.001;\n } else if (range >= 0.0001) {\n limit = 0.0001;\n } else if (range >= 0.00001) {\n limit = 0.00001;\n } else {\n limit = 0.000001;\n }\n return {\n minRange: findRange(minData, 'lower', limit),\n maxRange: findRange(maxData, 'upper', limit)\n };\n}\nfunction measureText(text, fontSize, context) {\n var width = 0;\n text = String(text);\n if (context !== false && context !== undefined && context.setFontSize && context.measureText) {\n context.setFontSize(fontSize);\n return context.measureText(text).width;\n } else {\n var text = text.split('');\n for (var i = 0; i < text.length; i++) {\n var item = text[i];\n if (/[a-zA-Z]/.test(item)) {\n width += 7;\n } else if (/[0-9]/.test(item)) {\n width += 5.5;\n } else if (/\\./.test(item)) {\n width += 2.7;\n } else if (/-/.test(item)) {\n width += 3.25;\n } else if (/:/.test(item)) {\n width += 2.5;\n } else if (/[\\u4e00-\\u9fa5]/.test(item)) {\n width += 10;\n } else if (/\\(|\\)/.test(item)) {\n width += 3.73;\n } else if (/\\s/.test(item)) {\n width += 2.5;\n } else if (/%/.test(item)) {\n width += 8;\n } else {\n width += 10;\n }\n }\n return width * fontSize / 10;\n }\n}\nfunction dataCombine(series) {\n return series.reduce(function (a, b) {\n return (a.data ? a.data : a).concat(b.data);\n }, []);\n}\nfunction dataCombineStack(series, len) {\n var sum = new Array(len);\n for (var j = 0; j < sum.length; j++) {\n sum[j] = 0;\n }\n for (var i = 0; i < series.length; i++) {\n for (var j = 0; j < sum.length; j++) {\n sum[j] += series[i].data[j];\n }\n }\n return series.reduce(function (a, b) {\n return (a.data ? a.data : a).concat(b.data).concat(sum);\n }, []);\n}\nfunction getTouches(touches, opts, e) {\n var x, y;\n if (touches.clientX) {\n if (opts.rotate) {\n y = opts.height - touches.clientX * opts.pix;\n x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n } else {\n x = touches.clientX * opts.pix;\n y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n }\n } else {\n if (opts.rotate) {\n y = opts.height - touches.x * opts.pix;\n x = touches.y * opts.pix;\n } else {\n x = touches.x * opts.pix;\n y = touches.y * opts.pix;\n }\n }\n return {\n x: x,\n y: y\n };\n}\nfunction getSeriesDataItem(series, index, group) {\n var data = [];\n var newSeries = [];\n var indexIsArr = index.constructor.toString().indexOf('Array') > -1;\n if (indexIsArr) {\n var tempSeries = filterSeries(series);\n for (var i = 0; i < group.length; i++) {\n newSeries.push(tempSeries[group[i]]);\n }\n } else {\n newSeries = series;\n }\n ;\n for (var _i = 0; _i < newSeries.length; _i++) {\n var item = newSeries[_i];\n var tmpindex = -1;\n if (indexIsArr) {\n tmpindex = index[_i];\n } else {\n tmpindex = index;\n }\n if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {\n var seriesItem = {};\n seriesItem.color = item.color;\n seriesItem.type = item.type;\n seriesItem.style = item.style;\n seriesItem.pointShape = item.pointShape;\n seriesItem.disableLegend = item.disableLegend;\n seriesItem.legendShape = item.legendShape;\n seriesItem.name = item.name;\n seriesItem.show = item.show;\n seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];\n data.push(seriesItem);\n }\n }\n return data;\n}\nfunction getMaxTextListLength(list, fontSize, context) {\n var lengthList = list.map(function (item) {\n return measureText(item, fontSize, context);\n });\n return Math.max.apply(null, lengthList);\n}\nfunction getRadarCoordinateSeries(length) {\n var eachAngle = 2 * Math.PI / length;\n var CoordinateSeries = [];\n for (var i = 0; i < length; i++) {\n CoordinateSeries.push(eachAngle * i);\n }\n return CoordinateSeries.map(function (item) {\n return -1 * item + Math.PI / 2;\n });\n}\nfunction getToolTipData(seriesData, opts, index, group, categories) {\n var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var calPoints = opts.chartData.calPoints ? opts.chartData.calPoints : [];\n var points = {};\n if (group.length > 0) {\n var filterPoints = [];\n for (var i = 0; i < group.length; i++) {\n filterPoints.push(calPoints[group[i]]);\n }\n points = filterPoints[0][index[0]];\n } else {\n for (var _i2 = 0; _i2 < calPoints.length; _i2++) {\n if (calPoints[_i2][index]) {\n points = calPoints[_i2][index];\n break;\n }\n }\n }\n ;\n var textList = seriesData.map(function (item) {\n var titleText = null;\n if (opts.categories && opts.categories.length > 0) {\n titleText = categories[index];\n }\n ;\n return {\n text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,\n color: item.color,\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n });\n var offset = {\n x: Math.round(points.x),\n y: Math.round(points.y)\n };\n return {\n textList: textList,\n offset: offset\n };\n}\nfunction getMixToolTipData(seriesData, opts, index, categories) {\n var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;\n var textList = seriesData.map(function (item) {\n return {\n text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,\n color: item.color,\n disableLegend: item.disableLegend ? true : false,\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n });\n textList = textList.filter(function (item) {\n if (item.disableLegend !== true) {\n return item;\n }\n });\n var offset = {\n x: Math.round(points),\n y: 0\n };\n return {\n textList: textList,\n offset: offset\n };\n}\nfunction getCandleToolTipData(series, seriesData, opts, index, categories, extra) {\n var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\n var calPoints = opts.chartData.calPoints;\n var upColor = extra.color.upFill;\n var downColor = extra.color.downFill;\n //颜色顺序为开盘,收盘,最低,最高\n var color = [upColor, upColor, downColor, upColor];\n var textList = [];\n seriesData.map(function (item) {\n if (index == 0) {\n if (item.data[1] - item.data[0] < 0) {\n color[1] = downColor;\n } else {\n color[1] = upColor;\n }\n } else {\n if (item.data[0] < series[index - 1][1]) {\n color[0] = downColor;\n }\n if (item.data[1] < item.data[0]) {\n color[1] = downColor;\n }\n if (item.data[2] > series[index - 1][1]) {\n color[2] = upColor;\n }\n if (item.data[3] < series[index - 1][1]) {\n color[3] = downColor;\n }\n }\n var text1 = {\n text: '开盘:' + item.data[0],\n color: color[0],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n var text2 = {\n text: '收盘:' + item.data[1],\n color: color[1],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n var text3 = {\n text: '最低:' + item.data[2],\n color: color[2],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n var text4 = {\n text: '最高:' + item.data[3],\n color: color[3],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n textList.push(text1, text2, text3, text4);\n });\n var validCalPoints = [];\n var offset = {\n x: 0,\n y: 0\n };\n for (var i = 0; i < calPoints.length; i++) {\n var points = calPoints[i];\n if (typeof points[index] !== 'undefined' && points[index] !== null) {\n validCalPoints.push(points[index]);\n }\n }\n offset.x = Math.round(validCalPoints[0][0].x);\n return {\n textList: textList,\n offset: offset\n };\n}\nfunction filterSeries(series) {\n var tempSeries = [];\n for (var i = 0; i < series.length; i++) {\n if (series[i].show == true) {\n tempSeries.push(series[i]);\n }\n }\n return tempSeries;\n}\nfunction findCurrentIndex(currentPoints, calPoints, opts, config) {\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var current = {\n index: -1,\n group: []\n };\n var spacing = opts.chartData.eachSpacing / 2;\n var xAxisPoints = [];\n if (calPoints && calPoints.length > 0) {\n if (!opts.categories) {\n spacing = 0;\n } else {\n for (var i = 1; i < opts.chartData.xAxisPoints.length; i++) {\n xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);\n }\n if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {\n xAxisPoints = opts.chartData.xAxisPoints;\n }\n }\n if (isInExactChartArea(currentPoints, opts, config)) {\n if (!opts.categories) {\n var timePoints = Array(calPoints.length);\n for (var _i3 = 0; _i3 < calPoints.length; _i3++) {\n timePoints[_i3] = Array(calPoints[_i3].length);\n for (var j = 0; j < calPoints[_i3].length; j++) {\n timePoints[_i3][j] = Math.abs(calPoints[_i3][j].x - currentPoints.x);\n }\n }\n ;\n var pointValue = Array(timePoints.length);\n var pointIndex = Array(timePoints.length);\n for (var _i4 = 0; _i4 < timePoints.length; _i4++) {\n pointValue[_i4] = Math.min.apply(null, timePoints[_i4]);\n pointIndex[_i4] = timePoints[_i4].indexOf(pointValue[_i4]);\n }\n var minValue = Math.min.apply(null, pointValue);\n current.index = [];\n for (var _i5 = 0; _i5 < pointValue.length; _i5++) {\n if (pointValue[_i5] == minValue) {\n current.group.push(_i5);\n current.index.push(pointIndex[_i5]);\n }\n }\n ;\n } else {\n xAxisPoints.forEach(function (item, index) {\n if (currentPoints.x + offset + spacing > item) {\n current.index = index;\n }\n });\n }\n }\n }\n return current;\n}\nfunction findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var current = {\n index: -1,\n group: []\n };\n var spacing = opts.chartData.eachSpacing / 2;\n var yAxisPoints = opts.chartData.yAxisPoints;\n if (calPoints && calPoints.length > 0) {\n if (isInExactChartArea(currentPoints, opts, config)) {\n yAxisPoints.forEach(function (item, index) {\n if (currentPoints.y + offset + spacing > item) {\n current.index = index;\n }\n });\n }\n }\n return current;\n}\nfunction findLegendIndex(currentPoints, legendData, opts) {\n var currentIndex = -1;\n var gap = 0;\n if (isInExactLegendArea(currentPoints, legendData.area)) {\n var points = legendData.points;\n var index = -1;\n for (var i = 0, len = points.length; i < len; i++) {\n var item = points[i];\n for (var j = 0; j < item.length; j++) {\n index += 1;\n var area = item[j]['area'];\n if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {\n currentIndex = index;\n break;\n }\n }\n }\n return currentIndex;\n }\n return currentIndex;\n}\nfunction isInExactLegendArea(currentPoints, area) {\n return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;\n}\nfunction isInExactChartArea(currentPoints, opts, config) {\n return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];\n}\nfunction findRadarChartCurrentIndex(currentPoints, radarData, count) {\n var eachAngleArea = 2 * Math.PI / count;\n var currentIndex = -1;\n if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {\n var fixAngle = function fixAngle(angle) {\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n if (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n return angle;\n };\n var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);\n angle = -1 * angle;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n var angleList = radarData.angleList.map(function (item) {\n item = fixAngle(-1 * item);\n return item;\n });\n angleList.forEach(function (item, index) {\n var rangeStart = fixAngle(item - eachAngleArea / 2);\n var rangeEnd = fixAngle(item + eachAngleArea / 2);\n if (rangeEnd < rangeStart) {\n rangeEnd += 2 * Math.PI;\n }\n if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {\n currentIndex = index;\n }\n });\n }\n return currentIndex;\n}\nfunction findFunnelChartCurrentIndex(currentPoints, funnelData) {\n var currentIndex = -1;\n for (var i = 0, len = funnelData.series.length; i < len; i++) {\n var item = funnelData.series[i];\n if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {\n currentIndex = i;\n break;\n }\n }\n return currentIndex;\n}\nfunction findWordChartCurrentIndex(currentPoints, wordData) {\n var currentIndex = -1;\n for (var i = 0, len = wordData.length; i < len; i++) {\n var item = wordData[i];\n if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {\n currentIndex = i;\n break;\n }\n }\n return currentIndex;\n}\nfunction findMapChartCurrentIndex(currentPoints, opts) {\n var currentIndex = -1;\n var cData = opts.chartData.mapData;\n var data = opts.series;\n var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);\n var poi = [tmp.x, tmp.y];\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i].geometry.coordinates;\n if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {\n currentIndex = i;\n break;\n }\n }\n return currentIndex;\n}\nfunction findRoseChartCurrentIndex(currentPoints, pieData, opts) {\n var currentIndex = -1;\n var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);\n if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n angle = -angle;\n if (opts.extra.rose && opts.extra.rose.offsetAngle) {\n angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;\n }\n for (var i = 0, len = series.length; i < len; i++) {\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {\n currentIndex = i;\n break;\n }\n }\n }\n return currentIndex;\n}\nfunction findPieChartCurrentIndex(currentPoints, pieData, opts) {\n var currentIndex = -1;\n var series = getPieDataPoints(pieData.series);\n if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n angle = -angle;\n if (opts.extra.pie && opts.extra.pie.offsetAngle) {\n angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;\n }\n if (opts.extra.ring && opts.extra.ring.offsetAngle) {\n angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;\n }\n for (var i = 0, len = series.length; i < len; i++) {\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {\n currentIndex = i;\n break;\n }\n }\n }\n return currentIndex;\n}\nfunction isInExactPieChartArea(currentPoints, center, radius) {\n return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);\n}\nfunction splitPoints(points, eachSeries) {\n var newPoints = [];\n var items = [];\n points.forEach(function (item, index) {\n if (eachSeries.connectNulls) {\n if (item !== null) {\n items.push(item);\n }\n } else {\n if (item !== null) {\n items.push(item);\n } else {\n if (items.length) {\n newPoints.push(items);\n }\n items = [];\n }\n }\n });\n if (items.length) {\n newPoints.push(items);\n }\n return newPoints;\n}\nfunction calLegendData(series, opts, config, chartData, context) {\n var legendData = {\n area: {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n },\n width: 0,\n height: 0,\n wholeWidth: 0,\n wholeHeight: 0\n },\n points: [],\n widthArr: [],\n heightArr: []\n };\n if (opts.legend.show === false) {\n chartData.legendData = legendData;\n return legendData;\n }\n var padding = opts.legend.padding * opts.pix;\n var margin = opts.legend.margin * opts.pix;\n var fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;\n var shapeWidth = 15 * opts.pix;\n var shapeRight = 5 * opts.pix;\n var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n var legendList = [];\n var widthCount = 0;\n var widthCountArr = [];\n var currentRow = [];\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n var legendText = item.legendText ? item.legendText : item.name;\n var itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {\n legendList.push(currentRow);\n widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n widthCount = itemWidth;\n currentRow = [item];\n } else {\n widthCount += itemWidth;\n currentRow.push(item);\n }\n }\n if (currentRow.length) {\n legendList.push(currentRow);\n widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n legendData.widthArr = widthCountArr;\n var legendWidth = Math.max.apply(null, widthCountArr);\n switch (opts.legend.float) {\n case 'left':\n legendData.area.start.x = opts.area[3];\n legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;\n break;\n case 'right':\n legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;\n legendData.area.end.x = opts.width - opts.area[1];\n break;\n default:\n legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;\n legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;\n }\n legendData.area.width = legendWidth + 2 * padding;\n legendData.area.wholeWidth = legendWidth + 2 * padding;\n legendData.area.height = legendList.length * lineHeight + 2 * padding;\n legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;\n legendData.points = legendList;\n }\n } else {\n var len = series.length;\n var maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;\n var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);\n legendData.area.height = maxLength * lineHeight + padding * 2;\n legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;\n switch (opts.legend.float) {\n case 'top':\n legendData.area.start.y = opts.area[0] + margin;\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n break;\n case 'bottom':\n legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;\n legendData.area.end.y = opts.height - opts.area[2] - margin;\n break;\n default:\n legendData.area.start.y = (opts.height - legendData.area.height) / 2;\n legendData.area.end.y = (opts.height + legendData.area.height) / 2;\n }\n var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);\n var _currentRow = [];\n for (var _i6 = 0; _i6 < lineNum; _i6++) {\n var temp = series.slice(_i6 * maxLength, _i6 * maxLength + maxLength);\n _currentRow.push(temp);\n }\n legendData.points = _currentRow;\n if (_currentRow.length) {\n for (var _i7 = 0; _i7 < _currentRow.length; _i7++) {\n var _item = _currentRow[_i7];\n var maxWidth = 0;\n for (var j = 0; j < _item.length; j++) {\n var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n if (_itemWidth > maxWidth) {\n maxWidth = _itemWidth;\n }\n }\n legendData.widthArr.push(maxWidth);\n legendData.heightArr.push(_item.length * lineHeight + padding * 2);\n }\n var _legendWidth = 0;\n for (var _i8 = 0; _i8 < legendData.widthArr.length; _i8++) {\n _legendWidth += legendData.widthArr[_i8];\n }\n legendData.area.width = _legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;\n legendData.area.wholeWidth = legendData.area.width + padding;\n }\n }\n switch (opts.legend.position) {\n case 'top':\n legendData.area.start.y = opts.area[0] + margin;\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n break;\n case 'bottom':\n legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;\n legendData.area.end.y = opts.height - opts.area[2] - margin;\n break;\n case 'left':\n legendData.area.start.x = opts.area[3];\n legendData.area.end.x = opts.area[3] + legendData.area.width;\n break;\n case 'right':\n legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;\n legendData.area.end.x = opts.width - opts.area[1];\n break;\n }\n chartData.legendData = legendData;\n return legendData;\n}\nfunction calCategoriesData(categories, opts, config, eachSpacing, context) {\n var result = {\n angle: 0,\n xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix\n };\n var fontSize = opts.xAxis.fontSize * opts.pix;\n var categoriesTextLenth = categories.map(function (item, index) {\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;\n return measureText(String(xitem), fontSize, context);\n });\n var maxTextLength = Math.max.apply(this, categoriesTextLenth);\n if (opts.xAxis.rotateLabel == true) {\n result.angle = opts.xAxis.rotateAngle * Math.PI / 180;\n var tempHeight = opts.xAxis.marginTop * opts.pix * 2 + Math.abs(maxTextLength * Math.sin(result.angle));\n tempHeight = tempHeight < fontSize + opts.xAxis.marginTop * opts.pix * 2 ? tempHeight + opts.xAxis.marginTop * opts.pix * 2 : tempHeight;\n result.xAxisHeight = tempHeight;\n }\n if (opts.enableScroll && opts.xAxis.scrollShow) {\n result.xAxisHeight += 6 * opts.pix;\n }\n if (opts.xAxis.disabled) {\n result.xAxisHeight = 0;\n }\n return result;\n}\nfunction getXAxisTextList(series, opts, config, stack) {\n var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n var data;\n if (stack == 'stack') {\n data = dataCombineStack(series, opts.categories.length);\n } else {\n data = dataCombine(series);\n }\n var sorted = [];\n // remove null from data\n data = data.filter(function (item) {\n //return item !== null;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n return item !== null;\n } else {\n return item.value !== null;\n }\n } else {\n return item !== null;\n }\n });\n data.map(function (item) {\n if ((0, _typeof2.default)(item) === 'object') {\n if (item.constructor.toString().indexOf('Array') > -1) {\n if (opts.type == 'candle') {\n item.map(function (subitem) {\n sorted.push(subitem);\n });\n } else {\n sorted.push(item[0]);\n }\n } else {\n sorted.push(item.value);\n }\n } else {\n sorted.push(item);\n }\n });\n var minData = 0;\n var maxData = 0;\n if (sorted.length > 0) {\n minData = Math.min.apply(this, sorted);\n maxData = Math.max.apply(this, sorted);\n }\n //为了兼容v1.9.0之前的项目\n if (index > -1) {\n if (typeof opts.xAxis.data[index].min === 'number') {\n minData = Math.min(opts.xAxis.data[index].min, minData);\n }\n if (typeof opts.xAxis.data[index].max === 'number') {\n maxData = Math.max(opts.xAxis.data[index].max, maxData);\n }\n } else {\n if (typeof opts.xAxis.min === 'number') {\n minData = Math.min(opts.xAxis.min, minData);\n }\n if (typeof opts.xAxis.max === 'number') {\n maxData = Math.max(opts.xAxis.max, maxData);\n }\n }\n if (minData === maxData) {\n var rangeSpan = maxData || 10;\n maxData += rangeSpan;\n }\n //var dataRange = getDataRange(minData, maxData);\n var minRange = minData;\n var maxRange = maxData;\n var range = [];\n var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;\n for (var i = 0; i <= opts.xAxis.splitNumber; i++) {\n range.push(minRange + eachRange * i);\n }\n return range;\n}\nfunction calXAxisData(series, opts, config, context) {\n //堆叠图重算Y轴\n var columnstyle = assign({}, {\n type: \"\"\n }, opts.extra.bar);\n var result = {\n angle: 0,\n xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix\n };\n result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);\n result.rangesFormat = result.ranges.map(function (item) {\n //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);\n item = util.toFixed(item, 2);\n return item;\n });\n var xAxisScaleValues = result.ranges.map(function (item) {\n // 如果刻度值是浮点数,则保留两位小数\n item = util.toFixed(item, 2);\n // 若有自定义格式则调用自定义的格式化函数\n //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;\n return item;\n });\n result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));\n // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\\结束点以及总长\n var eachSpacing = result.eachSpacing;\n var textLength = xAxisScaleValues.map(function (item) {\n return measureText(item, opts.xAxis.fontSize * opts.pix, context);\n });\n if (opts.xAxis.disabled === true) {\n result.xAxisHeight = 0;\n }\n return result;\n}\nfunction getRadarDataPoints(angleList, center, radius, series, opts) {\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var radarOption = opts.extra.radar || {};\n radarOption.max = radarOption.max || 0;\n var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\n var data = [];\n var _loop2 = function _loop2(i) {\n var each = series[i];\n var listItem = {};\n listItem.color = each.color;\n listItem.legendShape = each.legendShape;\n listItem.pointShape = each.pointShape;\n listItem.data = [];\n each.data.forEach(function (item, index) {\n var tmp = {};\n tmp.angle = angleList[index];\n tmp.proportion = item / maxData;\n tmp.value = item;\n tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);\n listItem.data.push(tmp);\n });\n data.push(listItem);\n };\n for (var i = 0; i < series.length; i++) {\n _loop2(i);\n }\n return data;\n}\nfunction getPieDataPoints(series, radius) {\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var count = 0;\n var _start_ = 0;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n count += item.data;\n }\n for (var _i9 = 0; _i9 < series.length; _i9++) {\n var _item2 = series[_i9];\n _item2.data = _item2.data === null ? 0 : _item2.data;\n if (count === 0) {\n _item2._proportion_ = 1 / series.length * process;\n } else {\n _item2._proportion_ = _item2.data / count * process;\n }\n _item2._radius_ = radius;\n }\n for (var _i10 = 0; _i10 < series.length; _i10++) {\n var _item3 = series[_i10];\n _item3._start_ = _start_;\n _start_ += 2 * _item3._proportion_ * Math.PI;\n }\n return series;\n}\nfunction getFunnelDataPoints(series, radius, option, eachSpacing) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n for (var i = 0; i < series.length; i++) {\n if (option.type == 'funnel') {\n series[i].radius = series[i].data / series[0].data * radius * process;\n } else {\n series[i].radius = eachSpacing * (series.length - i) / (eachSpacing * series.length) * radius * process;\n }\n series[i]._proportion_ = series[i].data / series[0].data;\n }\n // if(option.type !== 'pyramid'){\n // series.reverse();\n // }\n return series;\n}\nfunction getRoseDataPoints(series, type, minRadius, radius) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var count = 0;\n var _start_ = 0;\n var dataArr = [];\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n count += item.data;\n dataArr.push(item.data);\n }\n var minData = Math.min.apply(null, dataArr);\n var maxData = Math.max.apply(null, dataArr);\n var radiusLength = radius - minRadius;\n for (var _i11 = 0; _i11 < series.length; _i11++) {\n var _item4 = series[_i11];\n _item4.data = _item4.data === null ? 0 : _item4.data;\n if (count === 0) {\n _item4._proportion_ = 1 / series.length * process;\n _item4._rose_proportion_ = 1 / series.length * process;\n } else {\n _item4._proportion_ = _item4.data / count * process;\n if (type == 'area') {\n _item4._rose_proportion_ = 1 / series.length * process;\n } else {\n _item4._rose_proportion_ = _item4.data / count * process;\n }\n }\n _item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData)) || radius;\n }\n for (var _i12 = 0; _i12 < series.length; _i12++) {\n var _item5 = series[_i12];\n _item5._start_ = _start_;\n _start_ += 2 * _item5._rose_proportion_ * Math.PI;\n }\n return series;\n}\nfunction getArcbarDataPoints(series, arcbarOption) {\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (process == 1) {\n process = 0.999999;\n }\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n var totalAngle = void 0;\n if (arcbarOption.type == 'circle') {\n totalAngle = 2;\n } else {\n if (arcbarOption.direction == 'ccw') {\n if (arcbarOption.startAngle < arcbarOption.endAngle) {\n totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle;\n } else {\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n }\n } else {\n if (arcbarOption.endAngle < arcbarOption.startAngle) {\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\n } else {\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n }\n }\n }\n item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\n if (arcbarOption.direction == 'ccw') {\n item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process;\n }\n if (item._proportion_ >= 2) {\n item._proportion_ = item._proportion_ % 2;\n }\n }\n return series;\n}\nfunction getGaugeArcbarDataPoints(series, arcbarOption) {\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (process == 1) {\n process = 0.999999;\n }\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n var totalAngle = void 0;\n if (arcbarOption.type == 'circle') {\n totalAngle = 2;\n } else {\n if (arcbarOption.endAngle < arcbarOption.startAngle) {\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\n } else {\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n }\n }\n item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\n if (item._proportion_ >= 2) {\n item._proportion_ = item._proportion_ % 2;\n }\n }\n return series;\n}\nfunction getGaugeAxisPoints(categories, startAngle, endAngle) {\n var totalAngle;\n if (endAngle < startAngle) {\n totalAngle = 2 + endAngle - startAngle;\n } else {\n totalAngle = startAngle - endAngle;\n }\n var tempStartAngle = startAngle;\n for (var i = 0; i < categories.length; i++) {\n categories[i].value = categories[i].value === null ? 0 : categories[i].value;\n categories[i]._startAngle_ = tempStartAngle;\n categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;\n if (categories[i]._endAngle_ >= 2) {\n categories[i]._endAngle_ = categories[i]._endAngle_ % 2;\n }\n tempStartAngle = categories[i]._endAngle_;\n }\n return categories;\n}\nfunction getGaugeDataPoints(series, categories, gaugeOption) {\n var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n if (gaugeOption.pointer.color == 'auto') {\n for (var _i13 = 0; _i13 < categories.length; _i13++) {\n if (item.data <= categories[_i13].value) {\n item.color = categories[_i13].color;\n break;\n }\n }\n } else {\n item.color = gaugeOption.pointer.color;\n }\n var totalAngle = void 0;\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;\n item._oldAngle_ = gaugeOption.oldAngle;\n if (gaugeOption.oldAngle < gaugeOption.endAngle) {\n item._oldAngle_ += 2;\n }\n if (item.data >= gaugeOption.oldData) {\n item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;\n } else {\n item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;\n }\n if (item._proportion_ >= 2) {\n item._proportion_ = item._proportion_ % 2;\n }\n }\n return series;\n}\nfunction getPieTextMaxLength(series, config, context, opts) {\n series = getPieDataPoints(series);\n var maxLength = 0;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n var text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';\n maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));\n }\n return maxLength;\n}\nfunction fixColumeData(points, eachSpacing, columnLen, index, config, opts) {\n return points.map(function (item) {\n if (item === null) {\n return null;\n }\n var seriesGap = 0;\n var categoryGap = 0;\n if (opts.type == 'mix') {\n seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;\n categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;\n } else {\n seriesGap = opts.extra.column.seriesGap * opts.pix || 0;\n categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n }\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);\n }\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n return item;\n });\n}\nfunction fixBarData(points, eachSpacing, columnLen, index, config, opts) {\n return points.map(function (item) {\n if (item === null) {\n return null;\n }\n var seriesGap = 0;\n var categoryGap = 0;\n seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;\n categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n return item;\n });\n}\nfunction fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {\n var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n return points.map(function (item) {\n if (item === null) {\n return null;\n }\n item.width = eachSpacing - 2 * categoryGap;\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n }\n if (index > 0) {\n item.width -= border;\n }\n return item;\n });\n}\nfunction fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n return points.map(function (item, indexn) {\n if (item === null) {\n return null;\n }\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n return item;\n });\n}\nfunction fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n return points.map(function (item, indexn) {\n if (item === null) {\n return null;\n }\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n return item;\n });\n}\nfunction getXAxisPoints(categories, opts, config) {\n var spacingValid = opts.width - opts.area[1] - opts.area[3];\n var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;\n if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {\n dataCount -= 1;\n }\n var widthRatio = 0;\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n widthRatio = opts.extra.mount.widthRatio - 1;\n dataCount += widthRatio;\n }\n var eachSpacing = spacingValid / dataCount;\n var xAxisPoints = [];\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n categories.forEach(function (item, index) {\n xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing);\n });\n if (opts.xAxis.boundaryGap !== 'justify') {\n if (opts.enableScroll === true) {\n xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing);\n } else {\n xAxisPoints.push(endX);\n }\n }\n return {\n xAxisPoints: xAxisPoints,\n startX: startX,\n endX: endX,\n eachSpacing: eachSpacing\n };\n}\nfunction getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var cPoints = [];\n item.forEach(function (items, indexs) {\n var point = {};\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n var value = items.value || items;\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.y = opts.height - Math.round(height) - opts.area[2];\n cPoints.push(point);\n });\n points.push(cPoints);\n }\n });\n return points;\n}\nfunction getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n var boundaryGap = 'center';\n if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n boundaryGap = opts.xAxis.boundaryGap;\n }\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n var xranges, xminRange, xmaxRange;\n xranges = [].concat(opts.chartData.xAxisData.ranges);\n xminRange = xranges.shift();\n xmaxRange = xranges.pop();\n value = item[1];\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n if (opts.type == 'bubble') {\n point.r = item[2];\n point.t = item[3];\n }\n } else {\n value = item.value;\n }\n }\n if (boundaryGap == 'center') {\n point.x += eachSpacing / 2;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n }\n });\n return points;\n}\nfunction getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process) {\n var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;\n var boundaryGap = opts.xAxis.boundaryGap;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n if (lineOption.animation == 'vertical') {\n point.x = xAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n var xranges, xminRange, xmaxRange;\n xranges = [].concat(opts.chartData.xAxisData.ranges);\n xminRange = xranges.shift();\n xmaxRange = xranges.pop();\n value = item[1];\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n } else {\n value = item.value;\n }\n }\n if (boundaryGap == 'center') {\n point.x += eachSpacing / 2;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n } else {\n point.x = xAxisPoints[0] + eachSpacing * index * process;\n var value = item;\n if (boundaryGap == 'center') {\n point.x += eachSpacing / 2;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n }\n }\n });\n return points;\n}\nfunction getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process) {\n var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n var xranges, xminRange, xmaxRange;\n xranges = [].concat(opts.chartData.xAxisData.ranges);\n xminRange = xranges.shift();\n xmaxRange = xranges.pop();\n value = item[1];\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n } else {\n value = item.value;\n }\n }\n point.x += eachSpacing / 2;\n var height = validHeight * (value * process - minRange) / (maxRange - minRange);\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n }\n });\n return points;\n}\nfunction getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints) {\n var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n var mountWidth = eachSpacing * mountOption.widthRatio;\n series.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index];\n point.x += eachSpacing / 2;\n var value = item.data;\n var height = validHeight * (value * process - minRange) / (maxRange - minRange);\n point.y = opts.height - height - opts.area[2];\n point.value = value;\n point.width = mountWidth;\n points.push(point);\n }\n });\n return points;\n}\nfunction getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.y = yAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n value = item.value;\n }\n var height = validWidth * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.height = height;\n point.value = value;\n point.x = height + opts.area[3];\n points.push(point);\n }\n });\n return points;\n}\nfunction getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n if (seriesIndex > 0) {\n var value = 0;\n for (var i = 0; i <= seriesIndex; i++) {\n value += stackSeries[i].data[index];\n }\n var value0 = value - item;\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n } else {\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n value = item.value;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = 0;\n }\n var heightc = height0;\n height *= process;\n heightc *= process;\n point.y = opts.height - Math.round(height) - opts.area[2];\n point.y0 = opts.height - Math.round(heightc) - opts.area[2];\n points.push(point);\n }\n });\n return points;\n}\nfunction getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n var points = [];\n var validHeight = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.y = yAxisPoints[index];\n if (seriesIndex > 0) {\n var value = 0;\n for (var i = 0; i <= seriesIndex; i++) {\n value += stackSeries[i].data[index];\n }\n var value0 = value - item;\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n } else {\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n value = item.value;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = 0;\n }\n var heightc = height0;\n height *= process;\n heightc *= process;\n point.height = height - heightc;\n point.x = opts.area[3] + height;\n point.x0 = opts.area[3] + heightc;\n points.push(point);\n }\n });\n return points;\n}\nfunction getYAxisTextList(series, opts, config, stack, yData) {\n var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;\n var data;\n if (stack == 'stack') {\n data = dataCombineStack(series, opts.categories.length);\n } else {\n data = dataCombine(series);\n }\n var sorted = [];\n // remove null from data\n data = data.filter(function (item) {\n //return item !== null;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n return item !== null;\n } else {\n return item.value !== null;\n }\n } else {\n return item !== null;\n }\n });\n data.map(function (item) {\n if ((0, _typeof2.default)(item) === 'object') {\n if (item.constructor.toString().indexOf('Array') > -1) {\n if (opts.type == 'candle') {\n item.map(function (subitem) {\n sorted.push(subitem);\n });\n } else {\n sorted.push(item[1]);\n }\n } else {\n sorted.push(item.value);\n }\n } else {\n sorted.push(item);\n }\n });\n var minData = yData.min || 0;\n var maxData = yData.max || 0;\n if (sorted.length > 0) {\n minData = Math.min.apply(this, sorted);\n maxData = Math.max.apply(this, sorted);\n }\n if (minData === maxData) {\n if (maxData == 0) {\n maxData = 10;\n } else {\n minData = 0;\n }\n }\n var dataRange = getDataRange(minData, maxData);\n var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min;\n var maxRange = yData.max === undefined || yData.max === null ? dataRange.maxRange : yData.max;\n var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;\n var range = [];\n for (var i = 0; i <= opts.yAxis.splitNumber; i++) {\n range.push(minRange + eachRange * i);\n }\n return range.reverse();\n}\nfunction calYAxisData(series, opts, config, context) {\n //堆叠图重算Y轴\n var columnstyle = assign({}, {\n type: \"\"\n }, opts.extra.column);\n //如果是多Y轴,重新计算\n var YLength = opts.yAxis.data.length;\n var newSeries = new Array(YLength);\n if (YLength > 0) {\n for (var i = 0; i < YLength; i++) {\n newSeries[i] = [];\n for (var j = 0; j < series.length; j++) {\n if (series[j].index == i) {\n newSeries[i].push(series[j]);\n }\n }\n }\n var rangesArr = new Array(YLength);\n var rangesFormatArr = new Array(YLength);\n var yAxisWidthArr = new Array(YLength);\n var _loop3 = function _loop3(_i14) {\n var yData = opts.yAxis.data[_i14];\n //如果总开关不显示,强制每个Y轴为不显示\n if (opts.yAxis.disabled == true) {\n yData.disabled = true;\n }\n if (yData.type === 'categories') {\n if (!yData.formatter) {\n yData.formatter = function (val, index, opts) {\n return val + (yData.unit || '');\n };\n }\n yData.categories = yData.categories || opts.categories;\n rangesArr[_i14] = yData.categories;\n } else {\n if (!yData.formatter) {\n yData.formatter = function (val, index, opts) {\n return util.toFixed(val, yData.tofix || 0) + (yData.unit || '');\n };\n }\n rangesArr[_i14] = getYAxisTextList(newSeries[_i14], opts, config, columnstyle.type, yData, _i14);\n }\n var yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;\n yAxisWidthArr[_i14] = {\n position: yData.position ? yData.position : 'left',\n width: 0\n };\n rangesFormatArr[_i14] = rangesArr[_i14].map(function (items, index) {\n items = yData.formatter(items, index, opts);\n yAxisWidthArr[_i14].width = Math.max(yAxisWidthArr[_i14].width, measureText(items, yAxisFontSizes, context) + 5);\n return items;\n });\n var calibration = yData.calibration ? 4 * opts.pix : 0;\n yAxisWidthArr[_i14].width += calibration + 3 * opts.pix;\n if (yData.disabled === true) {\n yAxisWidthArr[_i14].width = 0;\n }\n };\n for (var _i14 = 0; _i14 < YLength; _i14++) {\n _loop3(_i14);\n }\n } else {\n var rangesArr = new Array(1);\n var rangesFormatArr = new Array(1);\n var yAxisWidthArr = new Array(1);\n if (opts.type === 'bar') {\n rangesArr[0] = opts.categories;\n if (!opts.yAxis.formatter) {\n opts.yAxis.formatter = function (val, index, opts) {\n return val + (opts.yAxis.unit || '');\n };\n }\n } else {\n if (!opts.yAxis.formatter) {\n opts.yAxis.formatter = function (val, index, opts) {\n return val.toFixed(opts.yAxis.tofix) + (opts.yAxis.unit || '');\n };\n }\n rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});\n }\n yAxisWidthArr[0] = {\n position: 'left',\n width: 0\n };\n var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;\n rangesFormatArr[0] = rangesArr[0].map(function (item, index) {\n item = opts.yAxis.formatter(item, index, opts);\n yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);\n return item;\n });\n yAxisWidthArr[0].width += 3 * opts.pix;\n if (opts.yAxis.disabled === true) {\n yAxisWidthArr[0] = {\n position: 'left',\n width: 0\n };\n opts.yAxis.data[0] = {\n disabled: true\n };\n } else {\n opts.yAxis.data[0] = {\n disabled: false,\n position: 'left',\n max: opts.yAxis.max,\n min: opts.yAxis.min,\n formatter: opts.yAxis.formatter\n };\n if (opts.type === 'bar') {\n opts.yAxis.data[0].categories = opts.categories;\n opts.yAxis.data[0].type = 'categories';\n }\n }\n }\n return {\n rangesFormat: rangesFormatArr,\n ranges: rangesArr,\n yAxisWidth: yAxisWidthArr\n };\n}\nfunction calTooltipYAxisData(point, series, opts, config, eachSpacing) {\n var ranges = [].concat(opts.chartData.yAxisData.ranges);\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var minAxis = opts.area[0];\n var items = [];\n for (var i = 0; i < ranges.length; i++) {\n var maxVal = Math.max.apply(this, ranges[i]);\n var minVal = Math.min.apply(this, ranges[i]);\n var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;\n item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0);\n items.push(String(item));\n }\n return items;\n}\nfunction calMarkLineData(points, opts) {\n var minRange, maxRange;\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n for (var i = 0; i < points.length; i++) {\n points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;\n var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);\n minRange = range.pop();\n maxRange = range.shift();\n var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);\n points[i].y = opts.height - Math.round(height) - opts.area[2];\n }\n return points;\n}\nfunction contextRotate(context, opts) {\n if (opts.rotateLock !== true) {\n context.translate(opts.height, 0);\n context.rotate(90 * Math.PI / 180);\n } else if (opts._rotate_ !== true) {\n context.translate(opts.height, 0);\n context.rotate(90 * Math.PI / 180);\n opts._rotate_ = true;\n }\n}\nfunction drawPointShape(points, color, shape, context, opts) {\n context.beginPath();\n if (opts.dataPointShapeType == 'hollow') {\n context.setStrokeStyle(color);\n context.setFillStyle(opts.background);\n context.setLineWidth(2 * opts.pix);\n } else {\n context.setStrokeStyle(\"#ffffff\");\n context.setFillStyle(color);\n context.setLineWidth(1 * opts.pix);\n }\n if (shape === 'diamond') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y);\n context.lineTo(item.x, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'circle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n }\n });\n } else if (shape === 'square') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x - 3.5, item.y - 3.5);\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n }\n });\n } else if (shape === 'triangle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y + 4.5);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'none') {\n return;\n }\n context.closePath();\n context.fill();\n context.stroke();\n}\nfunction drawActivePoint(points, color, shape, context, opts, option, seriesIndex) {\n if (!opts.tooltip) {\n return;\n }\n if (opts.tooltip.group.length > 0 && opts.tooltip.group.includes(seriesIndex) == false) {\n return;\n }\n var pointIndex = typeof opts.tooltip.index === 'number' ? opts.tooltip.index : opts.tooltip.index[opts.tooltip.group.indexOf(seriesIndex)];\n context.beginPath();\n if (option.activeType == 'hollow') {\n context.setStrokeStyle(color);\n context.setFillStyle(opts.background);\n context.setLineWidth(2 * opts.pix);\n } else {\n context.setStrokeStyle(\"#ffffff\");\n context.setFillStyle(color);\n context.setLineWidth(1 * opts.pix);\n }\n if (shape === 'diamond') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y);\n context.lineTo(item.x, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'circle') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n }\n });\n } else if (shape === 'square') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x - 3.5, item.y - 3.5);\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n }\n });\n } else if (shape === 'triangle') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y + 4.5);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'none') {\n return;\n }\n context.closePath();\n context.fill();\n context.stroke();\n}\nfunction drawRingTitle(opts, config, context, center) {\n var titlefontSize = opts.title.fontSize || config.titleFontSize;\n var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;\n var title = opts.title.name || '';\n var subtitle = opts.subtitle.name || '';\n var titleFontColor = opts.title.color || opts.fontColor;\n var subtitleFontColor = opts.subtitle.color || opts.fontColor;\n var titleHeight = title ? titlefontSize : 0;\n var subtitleHeight = subtitle ? subtitlefontSize : 0;\n var margin = 5;\n if (subtitle) {\n var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);\n var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0) * opts.pix;\n var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;\n if (title) {\n startY += (titleHeight * opts.pix + margin) / 2;\n }\n context.beginPath();\n context.setFontSize(subtitlefontSize * opts.pix);\n context.setFillStyle(subtitleFontColor);\n context.fillText(subtitle, startX, startY);\n context.closePath();\n context.stroke();\n }\n if (title) {\n var _textWidth = measureText(title, titlefontSize * opts.pix, context);\n var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);\n var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;\n if (subtitle) {\n _startY -= (subtitleHeight * opts.pix + margin) / 2;\n }\n context.beginPath();\n context.setFontSize(titlefontSize * opts.pix);\n context.setFillStyle(titleFontColor);\n context.fillText(title, _startX, _startY);\n context.closePath();\n context.stroke();\n }\n}\nfunction drawPointText(points, series, config, context, opts) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series.textColor || opts.fontColor);\n var value = data[index];\n if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n if (data[index].constructor.toString().indexOf('Array') > -1) {\n value = data[index][1];\n } else {\n value = data[index].value;\n }\n }\n var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n context.setTextAlign('center');\n context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n }\n });\n}\nfunction drawColumePointText(points, series, config, context, opts) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n var Position = opts.extra.column.labelPosition;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series.textColor || opts.fontColor);\n var value = data[index];\n if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n if (data[index].constructor.toString().indexOf('Array') > -1) {\n value = data[index][1];\n } else {\n value = data[index].value;\n }\n }\n var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n context.setTextAlign('center');\n var startY = item.y - 4 * opts.pix + textOffset * opts.pix;\n if (item.y > series.zeroPoints) {\n startY = item.y + textOffset * opts.pix + fontSize;\n }\n if (Position == 'insideTop') {\n startY = item.y + fontSize + textOffset * opts.pix;\n if (item.y > series.zeroPoints) {\n startY = item.y - textOffset * opts.pix - 4 * opts.pix;\n }\n }\n if (Position == 'center') {\n startY = item.y + textOffset * opts.pix + (opts.height - opts.area[2] - item.y + fontSize) / 2;\n if (series.zeroPoints < opts.height - opts.area[2]) {\n startY = item.y + textOffset * opts.pix + (series.zeroPoints - item.y + fontSize) / 2;\n }\n if (item.y > series.zeroPoints) {\n startY = item.y - textOffset * opts.pix - (item.y - series.zeroPoints - fontSize) / 2;\n }\n if (opts.extra.column.type == 'stack') {\n startY = item.y + textOffset * opts.pix + (item.y0 - item.y + fontSize) / 2;\n }\n }\n if (Position == 'bottom') {\n startY = opts.height - opts.area[2] + textOffset * opts.pix - 4 * opts.pix;\n if (series.zeroPoints < opts.height - opts.area[2]) {\n startY = series.zeroPoints + textOffset * opts.pix - 4 * opts.pix;\n }\n if (item.y > series.zeroPoints) {\n startY = series.zeroPoints - textOffset * opts.pix + fontSize + 2 * opts.pix;\n }\n if (opts.extra.column.type == 'stack') {\n startY = item.y0 + textOffset * opts.pix - 4 * opts.pix;\n }\n }\n context.fillText(String(formatVal), item.x, startY);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n }\n });\n}\nfunction drawMountPointText(points, series, config, context, opts, zeroPoints) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n var Position = opts.extra.mount.labelPosition;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series[index].textColor || opts.fontColor);\n var value = item.value;\n var formatVal = series[index].formatter ? series[index].formatter(value, index, series, opts) : value;\n context.setTextAlign('center');\n var startY = item.y - 4 * opts.pix + textOffset * opts.pix;\n if (item.y > zeroPoints) {\n startY = item.y + textOffset * opts.pix + fontSize;\n }\n context.fillText(String(formatVal), item.x, startY);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n }\n });\n}\nfunction drawBarPointText(points, series, config, context, opts) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series.textColor || opts.fontColor);\n var value = data[index];\n if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n value = data[index].value;\n }\n var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n context.setTextAlign('left');\n context.fillText(String(formatVal), item.x + 4 * opts.pix, item.y + fontSize / 2 - 3);\n context.closePath();\n context.stroke();\n }\n });\n}\nfunction drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {\n radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;\n radius = radius < 10 ? 10 : radius;\n var totalAngle;\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;\n var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;\n var nowAngle = gaugeOption.startAngle;\n var nowNumber = gaugeOption.startNumber;\n for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\n var pos = {\n x: radius * Math.cos(nowAngle * Math.PI),\n y: radius * Math.sin(nowAngle * Math.PI)\n };\n var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber, i, opts) : nowNumber;\n pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;\n pos.y += centerPosition.y;\n var startX = pos.x;\n var startY = pos.y;\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(gaugeOption.labelColor || opts.fontColor);\n context.fillText(labelText, startX, startY + config.fontSize / 2);\n context.closePath();\n context.stroke();\n nowAngle += splitAngle;\n if (nowAngle >= 2) {\n nowAngle = nowAngle % 2;\n }\n nowNumber += splitNumber;\n }\n}\nfunction drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {\n var radarOption = opts.extra.radar || {};\n angleList.forEach(function (angle, index) {\n if (radarOption.labelPointShow === true && opts.categories[index] !== '') {\n var posPoint = {\n x: radius * Math.cos(angle),\n y: radius * Math.sin(angle)\n };\n var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);\n context.setFillStyle(radarOption.labelPointColor);\n context.beginPath();\n context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);\n context.closePath();\n context.fill();\n }\n if (radarOption.labelShow === true) {\n var pos = {\n x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),\n y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle)\n };\n var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);\n var startX = posRelativeCanvas.x;\n var startY = posRelativeCanvas.y;\n if (util.approximatelyEqual(pos.x, 0)) {\n startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;\n } else if (pos.x < 0) {\n startX -= measureText(opts.categories[index] || '', config.fontSize, context);\n }\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(radarOption.labelColor || opts.fontColor);\n context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);\n context.closePath();\n context.stroke();\n }\n });\n}\nfunction drawPieText(series, opts, config, context, radius, center) {\n var lineRadius = config.pieChartLinePadding;\n var textObjectCollection = [];\n var lastTextObject = null;\n var seriesConvert = series.map(function (item, index) {\n var text = item.formatter ? item.formatter(item, index, series, opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';\n text = item.labelText ? item.labelText : text;\n var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);\n if (item._rose_proportion_) {\n arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);\n }\n var color = item.color;\n var radius = item._radius_;\n return {\n arc: arc,\n text: text,\n color: color,\n radius: radius,\n textColor: item.textColor,\n textSize: item.textSize,\n labelShow: item.labelShow\n };\n });\n for (var i = 0; i < seriesConvert.length; i++) {\n var item = seriesConvert[i];\n // line end\n var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);\n var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);\n // line start\n var orginX2 = Math.cos(item.arc) * item.radius;\n var orginY2 = Math.sin(item.arc) * item.radius;\n // text start\n var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;\n var orginY3 = orginY1;\n var textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);\n var startY = orginY3;\n if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {\n x: orginX3\n })) {\n if (orginX3 > 0) {\n startY = Math.min(orginY3, lastTextObject.start.y);\n } else if (orginX1 < 0) {\n startY = Math.max(orginY3, lastTextObject.start.y);\n } else {\n if (orginY3 > 0) {\n startY = Math.max(orginY3, lastTextObject.start.y);\n } else {\n startY = Math.min(orginY3, lastTextObject.start.y);\n }\n }\n }\n if (orginX3 < 0) {\n orginX3 -= textWidth;\n }\n var textObject = {\n lineStart: {\n x: orginX2,\n y: orginY2\n },\n lineEnd: {\n x: orginX1,\n y: orginY1\n },\n start: {\n x: orginX3,\n y: startY\n },\n width: textWidth,\n height: config.fontSize,\n text: item.text,\n color: item.color,\n textColor: item.textColor,\n textSize: item.textSize\n };\n lastTextObject = avoidCollision(textObject, lastTextObject);\n textObjectCollection.push(lastTextObject);\n }\n for (var _i15 = 0; _i15 < textObjectCollection.length; _i15++) {\n if (seriesConvert[_i15].labelShow === false) {\n continue;\n }\n var _item6 = textObjectCollection[_i15];\n var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);\n var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);\n var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);\n context.setLineWidth(1 * opts.pix);\n context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n context.beginPath();\n context.setStrokeStyle(_item6.color);\n context.setFillStyle(_item6.color);\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;\n var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;\n context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.moveTo(textPosition.x + _item6.width, textPosition.y);\n context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n context.setFillStyle(_item6.textColor || opts.fontColor);\n context.fillText(_item6.text, textStartX, textPosition.y + 3);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n}\nfunction drawToolTipSplitLine(offsetX, opts, config, context) {\n var toolTipOption = opts.extra.tooltip || {};\n toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;\n toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;\n var startY = opts.area[0];\n var endY = opts.height - opts.area[2];\n if (toolTipOption.gridType == 'dash') {\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n }\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.moveTo(offsetX, startY);\n context.lineTo(offsetX, endY);\n context.stroke();\n context.setLineDash([]);\n if (toolTipOption.xAxisLabel) {\n var labelText = opts.categories[opts.tooltip.index];\n context.setFontSize(config.fontSize);\n var textWidth = measureText(labelText, config.fontSize, context);\n var textX = offsetX - 0.5 * textWidth;\n var textY = endY + 2 * opts.pix;\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n context.setLineWidth(1 * opts.pix);\n context.rect(textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, config.fontSize + 2 * toolTipOption.boxPadding * opts.pix);\n context.closePath();\n context.stroke();\n context.fill();\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n context.fillText(String(labelText), textX, textY + toolTipOption.boxPadding * opts.pix + config.fontSize);\n context.closePath();\n context.stroke();\n }\n}\nfunction drawMarkLine(opts, config, context) {\n var markLineOption = assign({}, {\n type: 'solid',\n dashLength: 4,\n data: []\n }, opts.extra.markLine);\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n var points = calMarkLineData(markLineOption.data, opts);\n for (var i = 0; i < points.length; i++) {\n var item = assign({}, {\n lineColor: '#DE4A42',\n showLabel: false,\n labelFontSize: 13,\n labelPadding: 6,\n labelFontColor: '#666666',\n labelBgColor: '#DFE8FF',\n labelBgOpacity: 0.8,\n labelAlign: 'left',\n labelOffsetX: 0,\n labelOffsetY: 0\n }, points[i]);\n if (markLineOption.type == 'dash') {\n context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);\n }\n context.setStrokeStyle(item.lineColor);\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.moveTo(startX, item.y);\n context.lineTo(endX, item.y);\n context.stroke();\n context.setLineDash([]);\n if (item.showLabel) {\n var fontSize = item.labelFontSize * opts.pix;\n var labelText = item.labelText ? item.labelText : item.value;\n context.setFontSize(fontSize);\n var textWidth = measureText(labelText, fontSize, context);\n var bgWidth = textWidth + item.labelPadding * opts.pix * 2;\n var bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];\n bgStartX += item.labelOffsetX;\n var bgStartY = item.y - 0.5 * fontSize - item.labelPadding * opts.pix;\n bgStartY += item.labelOffsetY;\n var textX = bgStartX + item.labelPadding * opts.pix;\n var textY = item.y;\n context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));\n context.setStrokeStyle(item.labelBgColor);\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.rect(bgStartX, bgStartY, bgWidth, fontSize + 2 * item.labelPadding * opts.pix);\n context.closePath();\n context.stroke();\n context.fill();\n context.setFontSize(fontSize);\n context.setTextAlign('left');\n context.setFillStyle(item.labelFontColor);\n context.fillText(String(labelText), textX, bgStartY + fontSize + item.labelPadding * opts.pix / 2);\n context.stroke();\n context.setTextAlign('left');\n }\n }\n}\nfunction drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {\n var toolTipOption = assign({}, {\n gridType: 'solid',\n dashLength: 4\n }, opts.extra.tooltip);\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n if (toolTipOption.gridType == 'dash') {\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n }\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.moveTo(startX, opts.tooltip.offset.y);\n context.lineTo(endX, opts.tooltip.offset.y);\n context.stroke();\n context.setLineDash([]);\n if (toolTipOption.yAxisLabel) {\n var boxPadding = toolTipOption.boxPadding * opts.pix;\n var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);\n var widthArr = opts.chartData.yAxisData.yAxisWidth;\n var tStartLeft = opts.area[3];\n var tStartRight = opts.width - opts.area[1];\n for (var i = 0; i < labelText.length; i++) {\n context.setFontSize(toolTipOption.fontSize * opts.pix);\n var textWidth = measureText(labelText[i], toolTipOption.fontSize * opts.pix, context);\n var bgStartX = void 0,\n bgEndX = void 0,\n bgWidth = void 0;\n if (widthArr[i].position == 'left') {\n bgStartX = tStartLeft - (textWidth + boxPadding * 2) - 2 * opts.pix;\n bgEndX = Math.max(bgStartX, bgStartX + textWidth + boxPadding * 2);\n } else {\n bgStartX = tStartRight + 2 * opts.pix;\n bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + boxPadding * 2);\n }\n bgWidth = bgEndX - bgStartX;\n var textX = bgStartX + (bgWidth - textWidth) / 2;\n var textY = opts.tooltip.offset.y;\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n context.setLineWidth(1 * opts.pix);\n context.rect(bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, config.fontSize + 2 * boxPadding);\n context.closePath();\n context.stroke();\n context.fill();\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);\n context.closePath();\n context.stroke();\n if (widthArr[i].position == 'left') {\n tStartLeft -= widthArr[i].width + opts.yAxis.padding * opts.pix;\n } else {\n tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;\n }\n }\n }\n}\nfunction drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n var toolTipOption = assign({}, {\n activeBgColor: '#000000',\n activeBgOpacity: 0.08,\n activeWidth: eachSpacing\n }, opts.extra.column);\n toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;\n var startY = opts.area[0];\n var endY = opts.height - opts.area[2];\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);\n context.closePath();\n context.fill();\n context.setFillStyle(\"#FFFFFF\");\n}\nfunction drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n var toolTipOption = assign({}, {\n activeBgColor: '#000000',\n activeBgOpacity: 0.08\n }, opts.extra.bar);\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n context.rect(startX, offsetX - eachSpacing / 2, endX - startX, eachSpacing);\n context.closePath();\n context.fill();\n context.setFillStyle(\"#FFFFFF\");\n}\nfunction drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {\n var toolTipOption = assign({}, {\n showBox: true,\n showArrow: true,\n showCategory: false,\n bgColor: '#000000',\n bgOpacity: 0.7,\n borderColor: '#000000',\n borderWidth: 0,\n borderRadius: 0,\n borderOpacity: 0.7,\n boxPadding: 3,\n fontColor: '#FFFFFF',\n fontSize: 13,\n lineHeight: 20,\n legendShow: true,\n legendShape: 'auto',\n splitLine: true\n }, opts.extra.tooltip);\n if (toolTipOption.showCategory == true && opts.categories) {\n textList.unshift({\n text: opts.categories[opts.tooltip.index],\n color: null\n });\n }\n var fontSize = toolTipOption.fontSize * opts.pix;\n var lineHeight = toolTipOption.lineHeight * opts.pix;\n var boxPadding = toolTipOption.boxPadding * opts.pix;\n var legendWidth = fontSize;\n var legendMarginRight = 5 * opts.pix;\n if (toolTipOption.legendShow == false) {\n legendWidth = 0;\n legendMarginRight = 0;\n }\n var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;\n var isOverRightBorder = false;\n if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {\n if (toolTipOption.splitLine == true) {\n drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);\n }\n }\n offset = assign({\n x: 0,\n y: 0\n }, offset);\n offset.y -= 8 * opts.pix;\n var textWidth = textList.map(function (item) {\n return measureText(item.text, fontSize, context);\n });\n var toolTipWidth = legendWidth + legendMarginRight + 4 * boxPadding + Math.max.apply(null, textWidth);\n var toolTipHeight = 2 * boxPadding + textList.length * lineHeight;\n if (toolTipOption.showBox == false) {\n return;\n }\n // if beyond the right border\n if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {\n isOverRightBorder = true;\n }\n if (toolTipHeight + offset.y > opts.height) {\n offset.y = opts.height - toolTipHeight;\n }\n // draw background rect\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.bgColor, toolTipOption.bgOpacity));\n context.setLineWidth(toolTipOption.borderWidth * opts.pix);\n context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));\n var radius = toolTipOption.borderRadius;\n if (isOverRightBorder) {\n // 增加左侧仍然超出的判断\n if (toolTipWidth + arrowWidth > opts.width) {\n offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);\n }\n if (toolTipWidth > offset.x) {\n offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);\n }\n if (toolTipOption.showArrow) {\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n }\n context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\n if (toolTipOption.showArrow) {\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\n }\n } else {\n if (toolTipOption.showArrow) {\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n }\n context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\n context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\n if (toolTipOption.showArrow) {\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\n }\n }\n context.closePath();\n context.fill();\n if (toolTipOption.borderWidth > 0) {\n context.stroke();\n }\n // draw legend\n if (toolTipOption.legendShow) {\n textList.forEach(function (item, index) {\n if (item.color !== null) {\n context.beginPath();\n context.setFillStyle(item.color);\n var startX = offset.x + arrowWidth + 2 * boxPadding;\n var startY = offset.y + (lineHeight - fontSize) / 2 + lineHeight * index + boxPadding + 1;\n if (isOverRightBorder) {\n startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding;\n }\n switch (item.legendShape) {\n case 'line':\n context.moveTo(startX, startY + 0.5 * legendWidth - 2 * opts.pix);\n context.fillRect(startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, 4 * opts.pix);\n break;\n case 'triangle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n break;\n case 'diamond':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n break;\n case 'circle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth);\n context.arc(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth, 5 * opts.pix, 0, 2 * Math.PI);\n break;\n case 'rect':\n context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n break;\n case 'square':\n context.moveTo(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.fillRect(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\n break;\n default:\n context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n }\n context.closePath();\n context.fill();\n }\n });\n }\n\n // draw text list\n textList.forEach(function (item, index) {\n var startX = offset.x + arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;\n if (isOverRightBorder) {\n startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;\n }\n var startY = offset.y + lineHeight * index + (lineHeight - fontSize) / 2 - 1 + boxPadding + fontSize;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setTextBaseline('normal');\n context.setFillStyle(toolTipOption.fontColor);\n context.fillText(item.text, startX, startY);\n context.closePath();\n context.stroke();\n });\n}\nfunction drawColumnDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var columnOption = assign({}, {\n type: 'group',\n width: eachSpacing / 2,\n meterBorder: 4,\n meterFillColor: '#FFFFFF',\n barBorderCircle: false,\n barBorderRadius: [],\n seriesGap: 2,\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0,\n labelPosition: 'outside'\n }, opts.extra.column);\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n }\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);\n }\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n\n // 计算0轴坐标\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);\n var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];\n eachSeries.zeroPoints = zeroPoints;\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process);\n var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(tooltipPoints);\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n for (var i = 0; i < points.length; i++) {\n var item = points[i];\n //fix issues/I27B1N yyoinge & Joeshu\n if (item !== null && i > leftNum && i < rightNum) {\n var startX = item.x - item.width / 2;\n var height = opts.height - item.y - opts.area[2];\n context.beginPath();\n var fillColor = item.color || eachSeries.color;\n var strokeColor = item.color || eachSeries.color;\n if (columnOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);\n //透明渐变\n if (columnOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n var left = startX;\n var top = item.y > zeroPoints ? zeroPoints : item.y;\n var width = item.width;\n var _height = Math.abs(zeroPoints - item.y);\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n if (item.y > zeroPoints) {\n columnOption.barBorderRadius = [0, 0, width / 2, width / 2];\n }\n var _columnOption$barBord = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n r0 = _columnOption$barBord[0],\n r1 = _columnOption$barBord[1],\n r2 = _columnOption$barBord[2],\n r3 = _columnOption$barBord[3];\n var minRadius = Math.min(width / 2, _height / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n context.arc(left + width - r2, top + _height - r2, r2, 0, Math.PI / 2);\n context.arc(left + r3, top + _height - r3, r3, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, item.y);\n context.lineTo(startX + item.width, item.y);\n context.lineTo(startX + item.width, zeroPoints);\n context.lineTo(startX, zeroPoints);\n context.lineTo(startX, item.y);\n context.setLineWidth(1);\n context.setStrokeStyle(strokeColor);\n }\n context.setFillStyle(fillColor);\n context.closePath();\n //context.stroke();\n context.fill();\n }\n }\n ;\n break;\n case 'stack':\n // 绘制堆叠数据图\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(points);\n points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n for (var _i16 = 0; _i16 < points.length; _i16++) {\n var _item7 = points[_i16];\n if (_item7 !== null && _i16 > leftNum && _i16 < rightNum) {\n context.beginPath();\n var fillColor = _item7.color || eachSeries.color;\n var startX = _item7.x - _item7.width / 2 + 1;\n var height = opts.height - _item7.y - opts.area[2];\n var height0 = opts.height - _item7.y0 - opts.area[2];\n if (seriesIndex > 0) {\n height -= height0;\n }\n context.setFillStyle(fillColor);\n context.moveTo(startX, _item7.y);\n context.fillRect(startX, _item7.y, _item7.width, height);\n context.closePath();\n context.fill();\n }\n }\n ;\n break;\n case 'meter':\n // 绘制温度计数据图\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);\n for (var _i17 = 0; _i17 < points.length; _i17++) {\n var _item8 = points[_i17];\n if (_item8 !== null && _i17 > leftNum && _i17 < rightNum) {\n //画背景颜色\n context.beginPath();\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(columnOption.meterBorder * opts.pix);\n }\n if (seriesIndex == 0) {\n context.setFillStyle(columnOption.meterFillColor);\n } else {\n context.setFillStyle(_item8.color || eachSeries.color);\n }\n var startX = _item8.x - _item8.width / 2;\n var height = opts.height - _item8.y - opts.area[2];\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n var _left = startX;\n var _top = _item8.y;\n var _width = _item8.width;\n var _height2 = zeroPoints - _item8.y;\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [_width / 2, _width / 2, 0, 0];\n }\n var _columnOption$barBord2 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n _r = _columnOption$barBord2[0],\n _r2 = _columnOption$barBord2[1],\n _r3 = _columnOption$barBord2[2],\n _r4 = _columnOption$barBord2[3];\n var _minRadius = Math.min(_width / 2, _height2 / 2);\n _r = _r > _minRadius ? _minRadius : _r;\n _r2 = _r2 > _minRadius ? _minRadius : _r2;\n _r3 = _r3 > _minRadius ? _minRadius : _r3;\n _r4 = _r4 > _minRadius ? _minRadius : _r4;\n _r = _r < 0 ? 0 : _r;\n _r2 = _r2 < 0 ? 0 : _r2;\n _r3 = _r3 < 0 ? 0 : _r3;\n _r4 = _r4 < 0 ? 0 : _r4;\n context.arc(_left + _r, _top + _r, _r, -Math.PI, -Math.PI / 2);\n context.arc(_left + _width - _r2, _top + _r2, _r2, -Math.PI / 2, 0);\n context.arc(_left + _width - _r3, _top + _height2 - _r3, _r3, 0, Math.PI / 2);\n context.arc(_left + _r4, _top + _height2 - _r4, _r4, Math.PI / 2, Math.PI);\n context.fill();\n } else {\n context.moveTo(startX, _item8.y);\n context.lineTo(startX + _item8.width, _item8.y);\n context.lineTo(startX + _item8.width, zeroPoints);\n context.lineTo(startX, zeroPoints);\n context.lineTo(startX, _item8.y);\n context.fill();\n }\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\n context.closePath();\n context.stroke();\n }\n }\n }\n break;\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n drawColumePointText(points, eachSeries, config, context, opts);\n break;\n case 'stack':\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n drawColumePointText(points, eachSeries, config, context, opts);\n break;\n case 'meter':\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawColumePointText(points, eachSeries, config, context, opts);\n break;\n }\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawMountDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var mountOption = assign({}, {\n type: 'mount',\n widthRatio: 1,\n borderWidth: 1,\n barBorderCircle: false,\n barBorderRadius: [],\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0\n }, opts.extra.mount);\n mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;\n mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n }\n mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n\n // 计算0轴坐标\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);\n var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];\n var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);\n switch (mountOption.type) {\n case 'bar':\n for (var i = 0; i < points.length; i++) {\n var item = points[i];\n if (item !== null && i > leftNum && i < rightNum) {\n var startX = item.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - item.y - opts.area[2];\n context.beginPath();\n var fillColor = item.color || series[i].color;\n var strokeColor = item.color || series[i].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4 || mountOption.barBorderCircle === true) {\n var left = startX;\n var top = item.y > zeroPoints ? zeroPoints : item.y;\n var width = item.width;\n var _height3 = Math.abs(zeroPoints - item.y);\n if (mountOption.barBorderCircle) {\n mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n if (item.y > zeroPoints) {\n mountOption.barBorderRadius = [0, 0, width / 2, width / 2];\n }\n var _mountOption$barBorde = (0, _slicedToArray2.default)(mountOption.barBorderRadius, 4),\n r0 = _mountOption$barBorde[0],\n r1 = _mountOption$barBorde[1],\n r2 = _mountOption$barBorde[2],\n r3 = _mountOption$barBorde[3];\n var minRadius = Math.min(width / 2, _height3 / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n context.arc(left + width - r2, top + _height3 - r2, r2, 0, Math.PI / 2);\n context.arc(left + r3, top + _height3 - r3, r3, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, item.y);\n context.lineTo(startX + item.width, item.y);\n context.lineTo(startX + item.width, zeroPoints);\n context.lineTo(startX, zeroPoints);\n context.lineTo(startX, item.y);\n }\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.closePath();\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n case 'triangle':\n for (var _i18 = 0; _i18 < points.length; _i18++) {\n var _item9 = points[_i18];\n if (_item9 !== null && _i18 > leftNum && _i18 < rightNum) {\n var startX = _item9.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - _item9.y - opts.area[2];\n context.beginPath();\n var fillColor = _item9.color || series[_i18].color;\n var strokeColor = _item9.color || series[_i18].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, _item9.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n context.moveTo(startX, zeroPoints);\n context.lineTo(_item9.x, _item9.y);\n context.lineTo(startX + _item9.width, zeroPoints);\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n case 'mount':\n for (var _i19 = 0; _i19 < points.length; _i19++) {\n var _item10 = points[_i19];\n if (_item10 !== null && _i19 > leftNum && _i19 < rightNum) {\n var startX = _item10.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - _item10.y - opts.area[2];\n context.beginPath();\n var fillColor = _item10.color || series[_i19].color;\n var strokeColor = _item10.color || series[_i19].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, _item10.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n context.moveTo(startX, zeroPoints);\n context.bezierCurveTo(_item10.x - _item10.width / 4, zeroPoints, _item10.x - _item10.width / 4, _item10.y, _item10.x, _item10.y);\n context.bezierCurveTo(_item10.x + _item10.width / 4, _item10.y, _item10.x + _item10.width / 4, zeroPoints, startX + _item10.width, zeroPoints);\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n case 'sharp':\n for (var _i20 = 0; _i20 < points.length; _i20++) {\n var _item11 = points[_i20];\n if (_item11 !== null && _i20 > leftNum && _i20 < rightNum) {\n var startX = _item11.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - _item11.y - opts.area[2];\n context.beginPath();\n var fillColor = _item11.color || series[_i20].color;\n var strokeColor = _item11.color || series[_i20].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, _item11.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n context.moveTo(startX, zeroPoints);\n context.quadraticCurveTo(_item11.x - 0, zeroPoints - height / 4, _item11.x, _item11.y);\n context.quadraticCurveTo(_item11.x + 0, zeroPoints - height / 4, startX + _item11.width, zeroPoints);\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n }\n if (opts.dataLabel !== false && process === 1) {\n var _ranges, _minRange, _maxRange;\n _ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\n _minRange = _ranges.pop();\n _maxRange = _ranges.shift();\n var points = getMountDataPoints(series, _minRange, _maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);\n drawMountPointText(points, series, config, context, opts, zeroPoints);\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: points,\n eachSpacing: eachSpacing\n };\n}\nfunction drawBarDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var yAxisPoints = [];\n var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / opts.categories.length;\n for (var i = 0; i < opts.categories.length; i++) {\n yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);\n }\n var columnOption = assign({}, {\n type: 'group',\n width: eachSpacing / 2,\n meterBorder: 4,\n meterFillColor: '#FFFFFF',\n barBorderCircle: false,\n barBorderRadius: [],\n seriesGap: 2,\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0\n }, opts.extra.bar);\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = yAxisPoints.length + 2;\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);\n }\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.xAxisData.ranges);\n maxRange = ranges.pop();\n minRange = ranges.shift();\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(tooltipPoints);\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n for (var _i21 = 0; _i21 < points.length; _i21++) {\n var item = points[_i21];\n //fix issues/I27B1N yyoinge & Joeshu\n if (item !== null && _i21 > leftNum && _i21 < rightNum) {\n //var startX = item.x - item.width / 2;\n var startX = opts.area[3];\n var startY = item.y - item.width / 2;\n var height = item.height;\n context.beginPath();\n var fillColor = item.color || eachSeries.color;\n var strokeColor = item.color || eachSeries.color;\n if (columnOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, item.x, item.y);\n //透明渐变\n if (columnOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n var left = startX;\n var width = item.width;\n var top = item.y - item.width / 2;\n var _height4 = item.height;\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n var _columnOption$barBord3 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n r0 = _columnOption$barBord3[0],\n r1 = _columnOption$barBord3[1],\n r2 = _columnOption$barBord3[2],\n r3 = _columnOption$barBord3[3];\n var minRadius = Math.min(width / 2, _height4 / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);\n context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);\n context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);\n context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, startY);\n context.lineTo(item.x, startY);\n context.lineTo(item.x, startY + item.width);\n context.lineTo(startX, startY + item.width);\n context.lineTo(startX, startY);\n context.setLineWidth(1);\n context.setStrokeStyle(strokeColor);\n }\n context.setFillStyle(fillColor);\n context.closePath();\n //context.stroke();\n context.fill();\n }\n }\n ;\n break;\n case 'stack':\n // 绘制堆叠数据图\n var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(points);\n points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n for (var _i22 = 0; _i22 < points.length; _i22++) {\n var _item12 = points[_i22];\n if (_item12 !== null && _i22 > leftNum && _i22 < rightNum) {\n context.beginPath();\n var fillColor = _item12.color || eachSeries.color;\n var startX = _item12.x0;\n context.setFillStyle(fillColor);\n context.moveTo(startX, _item12.y - _item12.width / 2);\n context.fillRect(startX, _item12.y - _item12.width / 2, _item12.height, _item12.width);\n context.closePath();\n context.fill();\n }\n }\n ;\n break;\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.xAxisData.ranges);\n maxRange = ranges.pop();\n minRange = ranges.shift();\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n drawBarPointText(points, eachSeries, config, context, opts);\n break;\n case 'stack':\n var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n drawBarPointText(points, eachSeries, config, context, opts);\n break;\n }\n });\n }\n return {\n yAxisPoints: yAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawCandleDataPoints(series, seriesMA, opts, config, context) {\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var candleOption = assign({}, {\n color: {},\n average: {}\n }, opts.extra.candle);\n candleOption.color = assign({}, {\n upLine: '#f04864',\n upFill: '#f04864',\n downLine: '#2fc25b',\n downFill: '#2fc25b'\n }, candleOption.color);\n candleOption.average = assign({}, {\n show: false,\n name: [],\n day: [],\n color: config.color\n }, candleOption.average);\n opts.extra.candle = candleOption;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n //画均线\n if (candleOption.average.show || seriesMA) {\n //Merge pull request !12 from 邱贵翔\n seriesMA.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n var splitPointList = splitPoints(points, eachSeries);\n for (var i = 0; i < splitPointList.length; i++) {\n var _points = splitPointList[i];\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(1);\n if (_points.length === 1) {\n context.moveTo(_points[0].x, _points[0].y);\n context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(_points[0].x, _points[0].y);\n var startPoint = 0;\n for (var j = 0; j < _points.length; j++) {\n var item = _points[j];\n if (startPoint == 0 && item.x > leftSpace) {\n context.moveTo(item.x, item.y);\n startPoint = 1;\n }\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(_points, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n }\n }\n context.moveTo(_points[0].x, _points[0].y);\n }\n context.closePath();\n context.stroke();\n }\n });\n }\n //画K线\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n var splitPointList = splitPoints(points, eachSeries);\n for (var i = 0; i < splitPointList[0].length; i++) {\n if (i > leftNum && i < rightNum) {\n var item = splitPointList[0][i];\n context.beginPath();\n //如果上涨\n if (data[i][1] - data[i][0] > 0) {\n context.setStrokeStyle(candleOption.color.upLine);\n context.setFillStyle(candleOption.color.upFill);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(item[3].x, item[3].y); //顶点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.lineTo(item[2].x, item[2].y); //底点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.moveTo(item[3].x, item[3].y); //顶点\n } else {\n context.setStrokeStyle(candleOption.color.downLine);\n context.setFillStyle(candleOption.color.downFill);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(item[3].x, item[3].y); //顶点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.lineTo(item[2].x, item[2].y); //底点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.moveTo(item[3].x, item[3].y); //顶点\n }\n\n context.closePath();\n context.fill();\n context.stroke();\n }\n }\n });\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawAreaDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var areaOption = assign({}, {\n type: 'straight',\n opacity: 0.2,\n addLine: false,\n width: 2,\n gradient: false,\n activeType: 'none'\n }, opts.extra.area);\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var endY = opts.height - opts.area[2];\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n var splitPointList = splitPoints(points, eachSeries);\n for (var i = 0; i < splitPointList.length; i++) {\n var _points2 = splitPointList[i];\n // 绘制区域数\n context.beginPath();\n context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n if (areaOption.gradient) {\n var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n context.setFillStyle(gradient);\n } else {\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n }\n context.setLineWidth(areaOption.width * opts.pix);\n if (_points2.length > 1) {\n var firstPoint = _points2[0];\n var lastPoint = _points2[_points2.length - 1];\n context.moveTo(firstPoint.x, firstPoint.y);\n var startPoint = 0;\n if (areaOption.type === 'curve') {\n for (var j = 0; j < _points2.length; j++) {\n var item = _points2[j];\n if (startPoint == 0 && item.x > leftSpace) {\n context.moveTo(item.x, item.y);\n startPoint = 1;\n }\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(_points2, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n }\n }\n ;\n }\n if (areaOption.type === 'straight') {\n for (var _j = 0; _j < _points2.length; _j++) {\n var _item13 = _points2[_j];\n if (startPoint == 0 && _item13.x > leftSpace) {\n context.moveTo(_item13.x, _item13.y);\n startPoint = 1;\n }\n if (_j > 0 && _item13.x > leftSpace && _item13.x < rightSpace) {\n context.lineTo(_item13.x, _item13.y);\n }\n }\n ;\n }\n if (areaOption.type === 'step') {\n for (var _j2 = 0; _j2 < _points2.length; _j2++) {\n var _item14 = _points2[_j2];\n if (startPoint == 0 && _item14.x > leftSpace) {\n context.moveTo(_item14.x, _item14.y);\n startPoint = 1;\n }\n if (_j2 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {\n context.lineTo(_item14.x, _points2[_j2 - 1].y);\n context.lineTo(_item14.x, _item14.y);\n }\n }\n ;\n }\n context.lineTo(lastPoint.x, endY);\n context.lineTo(firstPoint.x, endY);\n context.lineTo(firstPoint.x, firstPoint.y);\n } else {\n var _item15 = _points2[0];\n context.moveTo(_item15.x - eachSpacing / 2, _item15.y);\n // context.lineTo(item.x + eachSpacing / 2, item.y);\n // context.lineTo(item.x + eachSpacing / 2, endY);\n // context.lineTo(item.x - eachSpacing / 2, endY);\n // context.moveTo(item.x - eachSpacing / 2, item.y);\n }\n\n context.closePath();\n context.fill();\n //画连线\n if (areaOption.addLine) {\n if (eachSeries.lineType == 'dash') {\n var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n dashLength *= opts.pix;\n context.setLineDash([dashLength, dashLength]);\n }\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(areaOption.width * opts.pix);\n if (_points2.length === 1) {\n context.moveTo(_points2[0].x, _points2[0].y);\n // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(_points2[0].x, _points2[0].y);\n var _startPoint = 0;\n if (areaOption.type === 'curve') {\n for (var _j3 = 0; _j3 < _points2.length; _j3++) {\n var _item16 = _points2[_j3];\n if (_startPoint == 0 && _item16.x > leftSpace) {\n context.moveTo(_item16.x, _item16.y);\n _startPoint = 1;\n }\n if (_j3 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {\n var _ctrlPoint = createCurveControlPoints(_points2, _j3 - 1);\n context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item16.x, _item16.y);\n }\n }\n ;\n }\n if (areaOption.type === 'straight') {\n for (var _j4 = 0; _j4 < _points2.length; _j4++) {\n var _item17 = _points2[_j4];\n if (_startPoint == 0 && _item17.x > leftSpace) {\n context.moveTo(_item17.x, _item17.y);\n _startPoint = 1;\n }\n if (_j4 > 0 && _item17.x > leftSpace && _item17.x < rightSpace) {\n context.lineTo(_item17.x, _item17.y);\n }\n }\n ;\n }\n if (areaOption.type === 'step') {\n for (var _j5 = 0; _j5 < _points2.length; _j5++) {\n var _item18 = _points2[_j5];\n if (_startPoint == 0 && _item18.x > leftSpace) {\n context.moveTo(_item18.x, _item18.y);\n _startPoint = 1;\n }\n if (_j5 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {\n context.lineTo(_item18.x, _points2[_j5 - 1].y);\n context.lineTo(_item18.x, _item18.y);\n }\n }\n ;\n }\n context.moveTo(_points2[0].x, _points2[0].y);\n }\n context.stroke();\n context.setLineDash([]);\n }\n }\n //画点\n if (opts.dataPointShape !== false) {\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, areaOption, seriesIndex);\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawPointText(points, eachSeries, config, context, opts);\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawScatterDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var scatterOption = assign({}, {\n type: 'circle'\n }, opts.extra.scatter);\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setFillStyle(eachSeries.color);\n context.setLineWidth(1 * opts.pix);\n var shape = eachSeries.pointShape;\n if (shape === 'diamond') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y);\n context.lineTo(item.x, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'circle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n }\n });\n } else if (shape === 'square') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x - 3.5, item.y - 3.5);\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n }\n });\n } else if (shape === 'triangle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y + 4.5);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'triangle') {\n return;\n }\n context.closePath();\n context.fill();\n context.stroke();\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawPointText(points, eachSeries, config, context, opts);\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawBubbleDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var bubbleOption = assign({}, {\n opacity: 1,\n border: 2\n }, opts.extra.bubble);\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(bubbleOption.border * opts.pix);\n context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));\n points.forEach(function (item, index) {\n context.moveTo(item.x + item.r, item.y);\n context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);\n });\n context.closePath();\n context.fill();\n context.stroke();\n if (opts.dataLabel !== false && process === 1) {\n points.forEach(function (item, index) {\n context.beginPath();\n var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(eachSeries.textColor || \"#FFFFFF\");\n context.setTextAlign('center');\n context.fillText(String(item.t), item.x, item.y + fontSize / 2);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n });\n }\n });\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawLineDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var lineOption = assign({}, {\n type: 'straight',\n width: 2,\n activeType: 'none',\n linearType: 'none',\n onShadow: false,\n animation: 'vertical'\n }, opts.extra.line);\n lineOption.width *= opts.pix;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n // 这段很神奇的代码用于解决ios16的setStrokeStyle失效的bug\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.moveTo(-10000, -10000);\n context.lineTo(-10001, -10001);\n context.stroke();\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process);\n calPoints.push(points);\n var splitPointList = splitPoints(points, eachSeries);\n if (eachSeries.lineType == 'dash') {\n var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n dashLength *= opts.pix;\n context.setLineDash([dashLength, dashLength]);\n }\n context.beginPath();\n var strokeColor = eachSeries.color;\n if (lineOption.linearType !== 'none' && eachSeries.linearColor && eachSeries.linearColor.length > 0) {\n var grd = context.createLinearGradient(opts.chartData.xAxisData.startX, opts.height / 2, opts.chartData.xAxisData.endX, opts.height / 2);\n for (var i = 0; i < eachSeries.linearColor.length; i++) {\n grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1));\n }\n strokeColor = grd;\n }\n context.setStrokeStyle(strokeColor);\n if (lineOption.onShadow == true && eachSeries.setShadow && eachSeries.setShadow.length > 0) {\n context.setShadow(eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], eachSeries.setShadow[3]);\n } else {\n context.setShadow(0, 0, 0, 'rgba(0,0,0,0)');\n }\n context.setLineWidth(lineOption.width);\n splitPointList.forEach(function (points, index) {\n if (points.length === 1) {\n context.moveTo(points[0].x, points[0].y);\n // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(points[0].x, points[0].y);\n var startPoint = 0;\n if (lineOption.type === 'curve') {\n for (var j = 0; j < points.length; j++) {\n var item = points[j];\n if (startPoint == 0 && item.x > leftSpace) {\n context.moveTo(item.x, item.y);\n startPoint = 1;\n }\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(points, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n }\n }\n ;\n }\n if (lineOption.type === 'straight') {\n for (var _j6 = 0; _j6 < points.length; _j6++) {\n var _item19 = points[_j6];\n if (startPoint == 0 && _item19.x > leftSpace) {\n context.moveTo(_item19.x, _item19.y);\n startPoint = 1;\n }\n if (_j6 > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {\n context.lineTo(_item19.x, _item19.y);\n }\n }\n ;\n }\n if (lineOption.type === 'step') {\n for (var _j7 = 0; _j7 < points.length; _j7++) {\n var _item20 = points[_j7];\n if (startPoint == 0 && _item20.x > leftSpace) {\n context.moveTo(_item20.x, _item20.y);\n startPoint = 1;\n }\n if (_j7 > 0 && _item20.x > leftSpace && _item20.x < rightSpace) {\n context.lineTo(_item20.x, points[_j7 - 1].y);\n context.lineTo(_item20.x, _item20.y);\n }\n }\n ;\n }\n context.moveTo(points[0].x, points[0].y);\n }\n });\n context.stroke();\n context.setLineDash([]);\n if (opts.dataPointShape !== false) {\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, lineOption);\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawPointText(points, eachSeries, config, context, opts);\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawMixDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var columnOption = assign({}, {\n width: eachSpacing / 2,\n barBorderCircle: false,\n barBorderRadius: [],\n seriesGap: 2,\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0\n }, opts.extra.mix.column);\n var areaOption = assign({}, {\n opacity: 0.2,\n gradient: false\n }, opts.extra.mix.area);\n var lineOption = assign({}, {\n width: 2\n }, opts.extra.mix.line);\n var endY = opts.height - opts.area[2];\n var calPoints = [];\n var columnIndex = 0;\n var columnLength = 0;\n series.forEach(function (eachSeries, seriesIndex) {\n if (eachSeries.type == 'column') {\n columnLength += 1;\n }\n });\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n // 绘制柱状数据图\n if (eachSeries.type == 'column') {\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n for (var i = 0; i < points.length; i++) {\n var item = points[i];\n if (item !== null && i > leftNum && i < rightNum) {\n var startX = item.x - item.width / 2;\n var height = opts.height - item.y - opts.area[2];\n context.beginPath();\n var fillColor = item.color || eachSeries.color;\n var strokeColor = item.color || eachSeries.color;\n if (columnOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\n //透明渐变\n if (columnOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle) {\n var left = startX;\n var top = item.y;\n var width = item.width;\n var _height5 = opts.height - opts.area[2] - item.y;\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n var _columnOption$barBord4 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n r0 = _columnOption$barBord4[0],\n r1 = _columnOption$barBord4[1],\n r2 = _columnOption$barBord4[2],\n r3 = _columnOption$barBord4[3];\n var minRadius = Math.min(width / 2, _height5 / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n context.arc(left + width - r2, top + _height5 - r2, r2, 0, Math.PI / 2);\n context.arc(left + r3, top + _height5 - r3, r3, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, item.y);\n context.lineTo(startX + item.width, item.y);\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\n context.lineTo(startX, opts.height - opts.area[2]);\n context.lineTo(startX, item.y);\n context.setLineWidth(1);\n context.setStrokeStyle(strokeColor);\n }\n context.setFillStyle(fillColor);\n context.closePath();\n context.fill();\n }\n }\n columnIndex += 1;\n }\n //绘制区域图数据\n if (eachSeries.type == 'area') {\n var _splitPointList = splitPoints(points, eachSeries);\n for (var _i23 = 0; _i23 < _splitPointList.length; _i23++) {\n var _points3 = _splitPointList[_i23];\n // 绘制区域数据\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n if (areaOption.gradient) {\n var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n context.setFillStyle(gradient);\n } else {\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n }\n context.setLineWidth(2 * opts.pix);\n if (_points3.length > 1) {\n var firstPoint = _points3[0];\n var lastPoint = _points3[_points3.length - 1];\n context.moveTo(firstPoint.x, firstPoint.y);\n var startPoint = 0;\n if (eachSeries.style === 'curve') {\n for (var j = 0; j < _points3.length; j++) {\n var _item21 = _points3[j];\n if (startPoint == 0 && _item21.x > leftSpace) {\n context.moveTo(_item21.x, _item21.y);\n startPoint = 1;\n }\n if (j > 0 && _item21.x > leftSpace && _item21.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(_points3, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item21.x, _item21.y);\n }\n }\n ;\n } else {\n for (var _j8 = 0; _j8 < _points3.length; _j8++) {\n var _item22 = _points3[_j8];\n if (startPoint == 0 && _item22.x > leftSpace) {\n context.moveTo(_item22.x, _item22.y);\n startPoint = 1;\n }\n if (_j8 > 0 && _item22.x > leftSpace && _item22.x < rightSpace) {\n context.lineTo(_item22.x, _item22.y);\n }\n }\n ;\n }\n context.lineTo(lastPoint.x, endY);\n context.lineTo(firstPoint.x, endY);\n context.lineTo(firstPoint.x, firstPoint.y);\n } else {\n var _item23 = _points3[0];\n context.moveTo(_item23.x - eachSpacing / 2, _item23.y);\n // context.lineTo(item.x + eachSpacing / 2, item.y);\n // context.lineTo(item.x + eachSpacing / 2, endY);\n // context.lineTo(item.x - eachSpacing / 2, endY);\n // context.moveTo(item.x - eachSpacing / 2, item.y);\n }\n\n context.closePath();\n context.fill();\n }\n }\n // 绘制折线数据图\n if (eachSeries.type == 'line') {\n var splitPointList = splitPoints(points, eachSeries);\n splitPointList.forEach(function (points, index) {\n if (eachSeries.lineType == 'dash') {\n var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n dashLength *= opts.pix;\n context.setLineDash([dashLength, dashLength]);\n }\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(lineOption.width * opts.pix);\n if (points.length === 1) {\n context.moveTo(points[0].x, points[0].y);\n // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(points[0].x, points[0].y);\n var _startPoint2 = 0;\n if (eachSeries.style == 'curve') {\n for (var _j9 = 0; _j9 < points.length; _j9++) {\n var _item24 = points[_j9];\n if (_startPoint2 == 0 && _item24.x > leftSpace) {\n context.moveTo(_item24.x, _item24.y);\n _startPoint2 = 1;\n }\n if (_j9 > 0 && _item24.x > leftSpace && _item24.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(points, _j9 - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item24.x, _item24.y);\n }\n }\n } else {\n for (var _j10 = 0; _j10 < points.length; _j10++) {\n var _item25 = points[_j10];\n if (_startPoint2 == 0 && _item25.x > leftSpace) {\n context.moveTo(_item25.x, _item25.y);\n _startPoint2 = 1;\n }\n if (_j10 > 0 && _item25.x > leftSpace && _item25.x < rightSpace) {\n context.lineTo(_item25.x, _item25.y);\n }\n }\n }\n context.moveTo(points[0].x, points[0].y);\n }\n context.stroke();\n context.setLineDash([]);\n });\n }\n // 绘制点数据图\n if (eachSeries.type == 'point') {\n eachSeries.addPoint = true;\n }\n if (eachSeries.addPoint == true && eachSeries.type !== 'column') {\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n var columnIndex = 0;\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n if (eachSeries.type !== 'column') {\n drawPointText(points, eachSeries, config, context, opts);\n } else {\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n drawPointText(points, eachSeries, config, context, opts);\n columnIndex += 1;\n }\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {\n var toolTipOption = opts.extra.tooltip || {};\n if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) {\n drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);\n }\n context.save();\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n }\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);\n }\n context.restore();\n}\nfunction drawXAxis(categories, opts, config, context) {\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n startX = xAxisData.startX,\n endX = xAxisData.endX,\n eachSpacing = xAxisData.eachSpacing;\n var boundaryGap = 'center';\n if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n boundaryGap = opts.xAxis.boundaryGap;\n }\n var startY = opts.height - opts.area[2];\n var endY = opts.area[0];\n\n //绘制滚动条\n if (opts.enableScroll && opts.xAxis.scrollShow) {\n var scrollY = opts.height - opts.area[2] + config.xAxisHeight;\n var scrollScreenWidth = endX - startX;\n var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n scrollTotalWidth += (opts.extra.mount.widthRatio - 1) * eachSpacing;\n }\n var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;\n var scrollLeft = 0;\n if (opts._scrollDistance_) {\n scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;\n }\n context.beginPath();\n context.setLineCap('round');\n context.setLineWidth(6 * opts.pix);\n context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || \"#EFEBEF\");\n context.moveTo(startX, scrollY);\n context.lineTo(endX, scrollY);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.setLineCap('round');\n context.setLineWidth(6 * opts.pix);\n context.setStrokeStyle(opts.xAxis.scrollColor || \"#A6A6A6\");\n context.moveTo(startX + scrollLeft, scrollY);\n context.lineTo(startX + scrollLeft + scrollWidth, scrollY);\n context.stroke();\n context.closePath();\n context.setLineCap('butt');\n }\n context.save();\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n context.translate(opts._scrollDistance_, 0);\n }\n //绘制X轴刻度线\n if (opts.xAxis.calibration === true) {\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n context.setLineCap('butt');\n context.setLineWidth(1 * opts.pix);\n xAxisPoints.forEach(function (item, index) {\n if (index > 0) {\n context.beginPath();\n context.moveTo(item - eachSpacing / 2, startY);\n context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);\n context.closePath();\n context.stroke();\n }\n });\n }\n //绘制X轴网格\n if (opts.xAxis.disableGrid !== true) {\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n context.setLineCap('butt');\n context.setLineWidth(1 * opts.pix);\n if (opts.xAxis.gridType == 'dash') {\n context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);\n }\n opts.xAxis.gridEval = opts.xAxis.gridEval || 1;\n xAxisPoints.forEach(function (item, index) {\n if (index % opts.xAxis.gridEval == 0) {\n context.beginPath();\n context.moveTo(item, startY);\n context.lineTo(item, endY);\n context.stroke();\n }\n });\n context.setLineDash([]);\n }\n //绘制X轴文案\n if (opts.xAxis.disabled !== true) {\n // 对X轴列表做抽稀处理\n //默认全部显示X轴标签\n var maxXAxisListLength = categories.length;\n //如果设置了X轴单屏数量\n if (opts.xAxis.labelCount) {\n //如果设置X轴密度\n if (opts.xAxis.itemCount) {\n maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);\n } else {\n maxXAxisListLength = opts.xAxis.labelCount;\n }\n maxXAxisListLength -= 1;\n }\n var ratio = Math.ceil(categories.length / maxXAxisListLength);\n var newCategories = [];\n var cgLength = categories.length;\n for (var i = 0; i < cgLength; i++) {\n if (i % ratio !== 0) {\n newCategories.push(\"\");\n } else {\n newCategories.push(categories[i]);\n }\n }\n newCategories[cgLength - 1] = categories[cgLength - 1];\n var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\n if (config._xAxisTextAngle_ === 0) {\n newCategories.forEach(function (item, index) {\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;\n var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;\n if (boundaryGap == 'center') {\n offset += eachSpacing / 2;\n }\n var scrollHeight = 0;\n if (opts.xAxis.scrollShow) {\n scrollHeight = 6 * opts.pix;\n }\n // 如果在主视图区域内\n var _scrollDistance_ = opts._scrollDistance_ || 0;\n var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];\n if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {\n context.beginPath();\n context.setFontSize(xAxisFontSize);\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n context.fillText(String(xitem), xAxisPoints[index] + offset, startY + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix / 2 + opts.xAxis.fontSize * opts.pix);\n context.closePath();\n context.stroke();\n }\n });\n } else {\n newCategories.forEach(function (item, index) {\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;\n // 如果在主视图区域内\n var _scrollDistance_ = opts._scrollDistance_ || 0;\n var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];\n if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {\n context.save();\n context.beginPath();\n context.setFontSize(xAxisFontSize);\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n var textWidth = measureText(String(xitem), xAxisFontSize, context);\n var offsetX = xAxisPoints[index];\n if (boundaryGap == 'center') {\n offsetX = xAxisPoints[index] + eachSpacing / 2;\n }\n var scrollHeight = 0;\n if (opts.xAxis.scrollShow) {\n scrollHeight = 6 * opts.pix;\n }\n var offsetY = startY + opts.xAxis.marginTop * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));\n if (opts.xAxis.rotateAngle < 0) {\n offsetX -= xAxisFontSize / 2;\n textWidth = 0;\n } else {\n offsetX += xAxisFontSize / 2;\n textWidth = -textWidth;\n }\n context.translate(offsetX, offsetY);\n context.rotate(-1 * config._xAxisTextAngle_);\n context.fillText(String(xitem), textWidth, 0);\n context.closePath();\n context.stroke();\n context.restore();\n }\n });\n }\n }\n context.restore();\n\n //画X轴标题\n if (opts.xAxis.title) {\n context.beginPath();\n context.setFontSize(opts.xAxis.titleFontSize * opts.pix);\n context.setFillStyle(opts.xAxis.titleFontColor);\n context.fillText(String(opts.xAxis.title), opts.width - opts.area[1] + opts.xAxis.titleOffsetX * opts.pix, opts.height - opts.area[2] + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix / 2 + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix);\n context.closePath();\n context.stroke();\n }\n\n //绘制X轴轴线\n if (opts.xAxis.axisLine) {\n context.beginPath();\n context.setStrokeStyle(opts.xAxis.axisLineColor);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(startX, opts.height - opts.area[2]);\n context.lineTo(endX, opts.height - opts.area[2]);\n context.stroke();\n }\n}\nfunction drawYAxisGrid(categories, opts, config, context) {\n if (opts.yAxis.disableGrid === true) {\n return;\n }\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n var startX = opts.area[3];\n var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;\n var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing;\n }\n var endX = startX + TotalWidth;\n var points = [];\n var startY = 1;\n if (opts.xAxis.axisLine === false) {\n startY = 0;\n }\n for (var i = startY; i < opts.yAxis.splitNumber + 1; i++) {\n points.push(opts.height - opts.area[2] - eachSpacing * i);\n }\n context.save();\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n context.translate(opts._scrollDistance_, 0);\n }\n if (opts.yAxis.gridType == 'dash') {\n context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);\n }\n context.setStrokeStyle(opts.yAxis.gridColor);\n context.setLineWidth(1 * opts.pix);\n points.forEach(function (item, index) {\n context.beginPath();\n context.moveTo(startX, item);\n context.lineTo(endX, item);\n context.stroke();\n });\n context.setLineDash([]);\n context.restore();\n}\nfunction drawYAxis(series, opts, config, context) {\n if (opts.yAxis.disabled === true) {\n return;\n }\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n var endY = opts.height - opts.area[2];\n // set YAxis background\n context.beginPath();\n context.setFillStyle(opts.background);\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {\n context.fillRect(0, 0, startX, endY + 2 * opts.pix);\n }\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {\n context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix);\n }\n context.closePath();\n context.stroke();\n var tStartLeft = opts.area[3];\n var tStartRight = opts.width - opts.area[1];\n var tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;\n if (opts.yAxis.data) {\n var _loop4 = function _loop4(i) {\n var yData = opts.yAxis.data[i];\n points = [];\n if (yData.type === 'categories') {\n for (var _i24 = 0; _i24 <= yData.categories.length; _i24++) {\n points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * _i24);\n }\n } else {\n for (var _i25 = 0; _i25 <= opts.yAxis.splitNumber; _i25++) {\n points.push(opts.area[0] + eachSpacing * _i25);\n }\n }\n if (yData.disabled !== true) {\n var rangesFormat = opts.chartData.yAxisData.rangesFormat[i];\n var yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;\n var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];\n var textAlign = yData.textAlign || \"right\";\n //画Y轴刻度及文案\n rangesFormat.forEach(function (item, index) {\n var pos = points[index];\n context.beginPath();\n context.setFontSize(yAxisFontSize);\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n context.setFillStyle(yData.fontColor || opts.fontColor);\n var tmpstrat = 0;\n var gapwidth = 4 * opts.pix;\n if (yAxisWidth.position == 'left') {\n //画刻度线\n if (yData.calibration == true) {\n context.moveTo(tStartLeft, pos);\n context.lineTo(tStartLeft - 3 * opts.pix, pos);\n gapwidth += 3 * opts.pix;\n }\n //画文字\n switch (textAlign) {\n case \"left\":\n context.setTextAlign('left');\n tmpstrat = tStartLeft - yAxisWidth.width;\n break;\n case \"right\":\n context.setTextAlign('right');\n tmpstrat = tStartLeft - gapwidth;\n break;\n default:\n context.setTextAlign('center');\n tmpstrat = tStartLeft - yAxisWidth.width / 2;\n }\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n } else if (yAxisWidth.position == 'right') {\n //画刻度线\n if (yData.calibration == true) {\n context.moveTo(tStartRight, pos);\n context.lineTo(tStartRight + 3 * opts.pix, pos);\n gapwidth += 3 * opts.pix;\n }\n switch (textAlign) {\n case \"left\":\n context.setTextAlign('left');\n tmpstrat = tStartRight + gapwidth;\n break;\n case \"right\":\n context.setTextAlign('right');\n tmpstrat = tStartRight + yAxisWidth.width;\n break;\n default:\n context.setTextAlign('center');\n tmpstrat = tStartRight + yAxisWidth.width / 2;\n }\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n } else if (yAxisWidth.position == 'center') {\n //画刻度线\n if (yData.calibration == true) {\n context.moveTo(tStartCenter, pos);\n context.lineTo(tStartCenter - 3 * opts.pix, pos);\n gapwidth += 3 * opts.pix;\n }\n //画文字\n switch (textAlign) {\n case \"left\":\n context.setTextAlign('left');\n tmpstrat = tStartCenter - yAxisWidth.width;\n break;\n case \"right\":\n context.setTextAlign('right');\n tmpstrat = tStartCenter - gapwidth;\n break;\n default:\n context.setTextAlign('center');\n tmpstrat = tStartCenter - yAxisWidth.width / 2;\n }\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n }\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n });\n //画Y轴轴线\n if (yData.axisLine !== false) {\n context.beginPath();\n context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n context.setLineWidth(1 * opts.pix);\n if (yAxisWidth.position == 'left') {\n context.moveTo(tStartLeft, opts.height - opts.area[2]);\n context.lineTo(tStartLeft, opts.area[0]);\n } else if (yAxisWidth.position == 'right') {\n context.moveTo(tStartRight, opts.height - opts.area[2]);\n context.lineTo(tStartRight, opts.area[0]);\n } else if (yAxisWidth.position == 'center') {\n context.moveTo(tStartCenter, opts.height - opts.area[2]);\n context.lineTo(tStartCenter, opts.area[0]);\n }\n context.stroke();\n }\n //画Y轴标题\n if (opts.yAxis.showTitle) {\n var titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;\n var title = yData.title;\n context.beginPath();\n context.setFontSize(titleFontSize);\n context.setFillStyle(yData.titleFontColor || opts.fontColor);\n if (yAxisWidth.position == 'left') {\n context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n } else if (yAxisWidth.position == 'right') {\n context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n } else if (yAxisWidth.position == 'center') {\n context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n }\n context.closePath();\n context.stroke();\n }\n if (yAxisWidth.position == 'left') {\n tStartLeft -= yAxisWidth.width + opts.yAxis.padding * opts.pix;\n } else {\n tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;\n }\n }\n };\n for (var i = 0; i < opts.yAxis.data.length; i++) {\n var points;\n _loop4(i);\n }\n }\n}\nfunction drawLegend(series, opts, config, context, chartData) {\n if (opts.legend.show === false) {\n return;\n }\n var legendData = chartData.legendData;\n var legendList = legendData.points;\n var legendArea = legendData.area;\n var padding = opts.legend.padding * opts.pix;\n var fontSize = opts.legend.fontSize * opts.pix;\n var shapeWidth = 15 * opts.pix;\n var shapeRight = 5 * opts.pix;\n var itemGap = opts.legend.itemGap * opts.pix;\n var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n //画背景及边框\n context.beginPath();\n context.setLineWidth(opts.legend.borderWidth * opts.pix);\n context.setStrokeStyle(opts.legend.borderColor);\n context.setFillStyle(opts.legend.backgroundColor);\n context.moveTo(legendArea.start.x, legendArea.start.y);\n context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);\n context.closePath();\n context.fill();\n context.stroke();\n legendList.forEach(function (itemList, listIndex) {\n var width = 0;\n var height = 0;\n width = legendData.widthArr[listIndex];\n height = legendData.heightArr[listIndex];\n var startX = 0;\n var startY = 0;\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n switch (opts.legend.float) {\n case 'left':\n startX = legendArea.start.x + padding;\n break;\n case 'right':\n startX = legendArea.start.x + legendArea.width - width;\n break;\n default:\n startX = legendArea.start.x + (legendArea.width - width) / 2;\n }\n startY = legendArea.start.y + padding + listIndex * lineHeight;\n } else {\n if (listIndex == 0) {\n width = 0;\n } else {\n width = legendData.widthArr[listIndex - 1];\n }\n startX = legendArea.start.x + padding + width;\n startY = legendArea.start.y + padding + (legendArea.height - height) / 2;\n }\n context.setFontSize(config.fontSize);\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[i];\n item.area = [0, 0, 0, 0];\n item.area[0] = startX;\n item.area[1] = startY;\n item.area[3] = startY + lineHeight;\n context.beginPath();\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);\n context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);\n switch (item.legendShape) {\n case 'line':\n context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);\n context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);\n break;\n case 'triangle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n break;\n case 'diamond':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n break;\n case 'circle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);\n context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);\n break;\n case 'rect':\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n break;\n case 'square':\n context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\n break;\n case 'none':\n break;\n default:\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n }\n context.closePath();\n context.fill();\n context.stroke();\n startX += shapeWidth + shapeRight;\n var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;\n var legendText = item.legendText ? item.legendText : item.name;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);\n context.fillText(legendText, startX, startY + fontTrans);\n context.closePath();\n context.stroke();\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n startX += measureText(legendText, fontSize, context) + itemGap;\n item.area[2] = startX;\n } else {\n item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;\n ;\n startX -= shapeWidth + shapeRight;\n startY += lineHeight;\n }\n }\n });\n}\nfunction drawPieDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var pieOption = assign({}, {\n activeOpacity: 0.5,\n activeRadius: 10,\n offsetAngle: 0,\n labelWidth: 15,\n ringWidth: 30,\n customRadius: 0,\n border: false,\n borderWidth: 2,\n borderColor: '#FFFFFF',\n centerColor: '#FFFFFF',\n linearType: 'none',\n customColor: []\n }, opts.type == \"pie\" ? opts.extra.pie : opts.extra.ring);\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n };\n if (config.pieChartLinePadding == 0) {\n config.pieChartLinePadding = pieOption.activeRadius * opts.pix;\n }\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n radius = radius < 10 ? 10 : radius;\n if (pieOption.customRadius > 0) {\n radius = pieOption.customRadius * opts.pix;\n }\n series = getPieDataPoints(series, radius, process);\n var activeRadius = pieOption.activeRadius * opts.pix;\n pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);\n series = series.map(function (eachSeries) {\n eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;\n return eachSeries;\n });\n series.forEach(function (eachSeries, seriesIndex) {\n if (opts.tooltip) {\n if (opts.tooltip.index == seriesIndex) {\n context.beginPath();\n context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n context.closePath();\n context.fill();\n }\n }\n context.beginPath();\n context.setLineWidth(pieOption.borderWidth * opts.pix);\n context.lineJoin = \"round\";\n context.setStrokeStyle(pieOption.borderColor);\n var fillcolor = eachSeries.color;\n if (pieOption.linearType == 'custom') {\n var grd;\n if (context.createCircularGradient) {\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n } else {\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n }\n grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1));\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n fillcolor = grd;\n }\n context.setFillStyle(fillcolor);\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n context.closePath();\n context.fill();\n if (pieOption.border == true) {\n context.stroke();\n }\n });\n if (opts.type === 'ring') {\n var innerPieWidth = radius * 0.6;\n if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {\n innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);\n }\n context.beginPath();\n context.setFillStyle(pieOption.centerColor);\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n }\n if (opts.dataLabel !== false && process === 1) {\n drawPieText(series, opts, config, context, radius, centerPosition);\n }\n if (process === 1 && opts.type === 'ring') {\n drawRingTitle(opts, config, context, centerPosition);\n }\n return {\n center: centerPosition,\n radius: radius,\n series: series\n };\n}\nfunction drawRoseDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var roseOption = assign({}, {\n type: 'area',\n activeOpacity: 0.5,\n activeRadius: 10,\n offsetAngle: 0,\n labelWidth: 15,\n border: false,\n borderWidth: 2,\n borderColor: '#FFFFFF',\n linearType: 'none',\n customColor: []\n }, opts.extra.rose);\n if (config.pieChartLinePadding == 0) {\n config.pieChartLinePadding = roseOption.activeRadius * opts.pix;\n }\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n };\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n radius = radius < 10 ? 10 : radius;\n var minRadius = roseOption.minRadius || radius * 0.5;\n if (radius < minRadius) {\n radius = minRadius + 10;\n }\n series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);\n var activeRadius = roseOption.activeRadius * opts.pix;\n roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);\n series = series.map(function (eachSeries) {\n eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;\n return eachSeries;\n });\n series.forEach(function (eachSeries, seriesIndex) {\n if (opts.tooltip) {\n if (opts.tooltip.index == seriesIndex) {\n context.beginPath();\n context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n context.closePath();\n context.fill();\n }\n }\n context.beginPath();\n context.setLineWidth(roseOption.borderWidth * opts.pix);\n context.lineJoin = \"round\";\n context.setStrokeStyle(roseOption.borderColor);\n var fillcolor = eachSeries.color;\n if (roseOption.linearType == 'custom') {\n var grd;\n if (context.createCircularGradient) {\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n } else {\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n }\n grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1));\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n fillcolor = grd;\n }\n context.setFillStyle(fillcolor);\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n context.closePath();\n context.fill();\n if (roseOption.border == true) {\n context.stroke();\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n drawPieText(series, opts, config, context, radius, centerPosition);\n }\n return {\n center: centerPosition,\n radius: radius,\n series: series\n };\n}\nfunction drawArcbarDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var arcbarOption = assign({}, {\n startAngle: 0.75,\n endAngle: 0.25,\n type: 'default',\n direction: 'cw',\n lineCap: 'round',\n width: 12,\n gap: 2,\n linearType: 'none',\n customColor: []\n }, opts.extra.arcbar);\n series = getArcbarDataPoints(series, arcbarOption, process);\n var centerPosition;\n if (arcbarOption.centerX || arcbarOption.centerY) {\n centerPosition = {\n x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,\n y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2\n };\n } else {\n centerPosition = {\n x: opts.width / 2,\n y: opts.height / 2\n };\n }\n var radius;\n if (arcbarOption.radius) {\n radius = arcbarOption.radius;\n } else {\n radius = Math.min(centerPosition.x, centerPosition.y);\n radius -= 5 * opts.pix;\n radius -= arcbarOption.width / 2;\n }\n radius = radius < 10 ? 10 : radius;\n arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);\n for (var i = 0; i < series.length; i++) {\n var eachSeries = series[i];\n //背景颜色\n context.setLineWidth(arcbarOption.width * opts.pix);\n context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');\n context.setLineCap(arcbarOption.lineCap);\n context.beginPath();\n if (arcbarOption.type == 'default') {\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw');\n } else {\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw');\n }\n context.stroke();\n //进度条\n var fillColor = eachSeries.color;\n if (arcbarOption.linearType == 'custom') {\n var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);\n grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1));\n grd.addColorStop(0, hexToRgb(eachSeries.color, 1));\n fillColor = grd;\n }\n context.setLineWidth(arcbarOption.width * opts.pix);\n context.setStrokeStyle(fillColor);\n context.setLineCap(arcbarOption.lineCap);\n context.beginPath();\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw');\n context.stroke();\n }\n drawRingTitle(opts, config, context, centerPosition);\n return {\n center: centerPosition,\n radius: radius,\n series: series\n };\n}\nfunction drawGaugeDataPoints(categories, series, opts, config, context) {\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var gaugeOption = assign({}, {\n type: 'default',\n startAngle: 0.75,\n endAngle: 0.25,\n width: 15,\n labelOffset: 13,\n splitLine: {\n fixRadius: 0,\n splitNumber: 10,\n width: 15,\n color: '#FFFFFF',\n childNumber: 5,\n childWidth: 5\n },\n pointer: {\n width: 15,\n color: 'auto'\n }\n }, opts.extra.gauge);\n if (gaugeOption.oldAngle == undefined) {\n gaugeOption.oldAngle = gaugeOption.startAngle;\n }\n if (gaugeOption.oldData == undefined) {\n gaugeOption.oldData = 0;\n }\n categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);\n var centerPosition = {\n x: opts.width / 2,\n y: opts.height / 2\n };\n var radius = Math.min(centerPosition.x, centerPosition.y);\n radius -= 5 * opts.pix;\n radius -= gaugeOption.width / 2;\n radius = radius < 10 ? 10 : radius;\n var innerRadius = radius - gaugeOption.width;\n var totalAngle = 0;\n //判断仪表盘的样式:default百度样式,progress新样式\n if (gaugeOption.type == 'progress') {\n //## 第一步画中心圆形背景和进度条背景\n //中心圆形背景\n var pieRadius = radius - gaugeOption.width * 3;\n context.beginPath();\n var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);\n //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)\n gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n context.setFillStyle(gradient);\n context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);\n context.fill();\n //画进度条背景\n context.setLineWidth(gaugeOption.width);\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n context.setLineCap('round');\n context.beginPath();\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);\n context.stroke();\n //## 第二步画刻度线\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;\n var proc = series[0].data * process;\n for (var i = 0; i < len; i++) {\n context.beginPath();\n //刻度线随进度变色\n if (proc > i / len) {\n context.setStrokeStyle(hexToRgb(series[0].color, 1));\n } else {\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n }\n context.setLineWidth(3 * opts.pix);\n context.moveTo(startX, 0);\n context.lineTo(endX, 0);\n context.stroke();\n context.rotate(childAngle * Math.PI);\n }\n context.restore();\n //## 第三步画进度条\n series = getGaugeArcbarDataPoints(series, gaugeOption, process);\n context.setLineWidth(gaugeOption.width);\n context.setStrokeStyle(series[0].color);\n context.setLineCap('round');\n context.beginPath();\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);\n context.stroke();\n //## 第四步画指针\n var pointerRadius = radius - gaugeOption.width * 2.5;\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((series[0]._proportion_ - 1) * Math.PI);\n context.beginPath();\n context.setLineWidth(gaugeOption.width / 3);\n var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);\n gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));\n gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));\n gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));\n context.setStrokeStyle(gradient3);\n context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);\n context.stroke();\n context.beginPath();\n context.setLineWidth(1);\n context.setStrokeStyle(series[0].color);\n context.setFillStyle(series[0].color);\n context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n context.stroke();\n context.fill();\n context.restore();\n //default百度样式\n } else {\n //画背景\n context.setLineWidth(gaugeOption.width);\n context.setLineCap('butt');\n for (var _i26 = 0; _i26 < categories.length; _i26++) {\n var eachCategories = categories[_i26];\n context.beginPath();\n context.setStrokeStyle(eachCategories.color);\n context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);\n context.stroke();\n }\n context.save();\n //画刻度线\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n for (var _i27 = 0; _i27 < gaugeOption.splitLine.splitNumber + 1; _i27++) {\n context.beginPath();\n context.setStrokeStyle(gaugeOption.splitLine.color);\n context.setLineWidth(2 * opts.pix);\n context.moveTo(_startX2, 0);\n context.lineTo(_endX, 0);\n context.stroke();\n context.rotate(_splitAngle * Math.PI);\n }\n context.restore();\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n for (var _i28 = 0; _i28 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i28++) {\n context.beginPath();\n context.setStrokeStyle(gaugeOption.splitLine.color);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(_startX2, 0);\n context.lineTo(childendX, 0);\n context.stroke();\n context.rotate(_childAngle * Math.PI);\n }\n context.restore();\n //画指针\n series = getGaugeDataPoints(series, categories, gaugeOption, process);\n for (var _i29 = 0; _i29 < series.length; _i29++) {\n var eachSeries = series[_i29];\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((eachSeries._proportion_ - 1) * Math.PI);\n context.beginPath();\n context.setFillStyle(eachSeries.color);\n context.moveTo(gaugeOption.pointer.width, 0);\n context.lineTo(0, -gaugeOption.pointer.width / 2);\n context.lineTo(-innerRadius, 0);\n context.lineTo(0, gaugeOption.pointer.width / 2);\n context.lineTo(gaugeOption.pointer.width, 0);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFillStyle('#FFFFFF');\n context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);\n context.fill();\n context.restore();\n }\n if (opts.dataLabel !== false) {\n drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);\n }\n }\n //画仪表盘标题,副标题\n drawRingTitle(opts, config, context, centerPosition);\n if (process === 1 && opts.type === 'gauge') {\n opts.extra.gauge.oldAngle = series[0]._proportion_;\n opts.extra.gauge.oldData = series[0].data;\n }\n return {\n center: centerPosition,\n radius: radius,\n innerRadius: innerRadius,\n categories: categories,\n totalAngle: totalAngle\n };\n}\nfunction drawRadarDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var radarOption = assign({}, {\n gridColor: '#cccccc',\n gridType: 'radar',\n gridEval: 1,\n axisLabel: false,\n axisLabelTofix: 0,\n labelShow: true,\n labelColor: '#666666',\n labelPointShow: false,\n labelPointRadius: 3,\n labelPointColor: '#cccccc',\n opacity: 0.2,\n gridCount: 3,\n border: false,\n borderWidth: 2,\n linearType: 'none',\n customColor: []\n }, opts.extra.radar);\n var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n };\n var xr = (opts.width - opts.area[1] - opts.area[3]) / 2;\n var yr = (opts.height - opts.area[0] - opts.area[2]) / 2;\n var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);\n radius -= config.radarLabelTextMargin * opts.pix;\n radius = radius < 10 ? 10 : radius;\n radius = radarOption.radius ? radarOption.radius : radius;\n // 画分割线\n context.beginPath();\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(radarOption.gridColor);\n coordinateAngle.forEach(function (angle, index) {\n var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);\n context.moveTo(centerPosition.x, centerPosition.y);\n if (index % radarOption.gridEval == 0) {\n context.lineTo(pos.x, pos.y);\n }\n });\n context.stroke();\n context.closePath();\n\n // 画背景网格\n var _loop = function _loop(i) {\n var startPos = {};\n context.beginPath();\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(radarOption.gridColor);\n if (radarOption.gridType == 'radar') {\n coordinateAngle.forEach(function (angle, index) {\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);\n if (index === 0) {\n startPos = pos;\n context.moveTo(pos.x, pos.y);\n } else {\n context.lineTo(pos.x, pos.y);\n }\n });\n context.lineTo(startPos.x, startPos.y);\n } else {\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);\n context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);\n }\n context.stroke();\n context.closePath();\n };\n for (var i = 1; i <= radarOption.gridCount; i++) {\n _loop(i);\n }\n radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);\n var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);\n radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n // 绘制区域数据\n context.beginPath();\n context.setLineWidth(radarOption.borderWidth * opts.pix);\n context.setStrokeStyle(eachSeries.color);\n var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);\n if (radarOption.linearType == 'custom') {\n var grd;\n if (context.createCircularGradient) {\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius);\n } else {\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, radius);\n }\n grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity));\n grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity));\n fillcolor = grd;\n }\n context.setFillStyle(fillcolor);\n eachSeries.data.forEach(function (item, index) {\n if (index === 0) {\n context.moveTo(item.position.x, item.position.y);\n } else {\n context.lineTo(item.position.x, item.position.y);\n }\n });\n context.closePath();\n context.fill();\n if (radarOption.border === true) {\n context.stroke();\n }\n context.closePath();\n if (opts.dataPointShape !== false) {\n var points = eachSeries.data.map(function (item) {\n return item.position;\n });\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n });\n // 画刻度值\n if (radarOption.axisLabel === true) {\n var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\n var stepLength = radius / radarOption.gridCount;\n var fontSize = opts.fontSize * opts.pix;\n context.setFontSize(fontSize);\n context.setFillStyle(opts.fontColor);\n context.setTextAlign('left');\n for (var i = 0; i < radarOption.gridCount + 1; i++) {\n var label = i * maxData / radarOption.gridCount;\n label = label.toFixed(radarOption.axisLabelTofix);\n context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);\n }\n }\n\n // draw label text\n drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);\n\n // draw dataLabel\n if (opts.dataLabel !== false && process === 1) {\n radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n context.beginPath();\n var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(eachSeries.textColor || opts.fontColor);\n eachSeries.data.forEach(function (item, index) {\n //如果是中心点垂直的上下点位\n if (Math.abs(item.position.x - centerPosition.x) < 2) {\n //如果在上面\n if (item.position.y < centerPosition.y) {\n context.setTextAlign('center');\n context.fillText(item.value, item.position.x, item.position.y - 4);\n } else {\n context.setTextAlign('center');\n context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);\n }\n } else {\n //如果在左侧\n if (item.position.x < centerPosition.x) {\n context.setTextAlign('right');\n context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);\n } else {\n context.setTextAlign('left');\n context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);\n }\n }\n });\n context.closePath();\n context.stroke();\n });\n context.setTextAlign('left');\n }\n return {\n center: centerPosition,\n radius: radius,\n angleList: coordinateAngle\n };\n}\n\n// 经纬度转墨卡托\nfunction lonlat2mercator(longitude, latitude) {\n var mercator = Array(2);\n var x = longitude * 20037508.34 / 180;\n var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);\n y = y * 20037508.34 / 180;\n mercator[0] = x;\n mercator[1] = y;\n return mercator;\n}\n\n// 墨卡托转经纬度\nfunction mercator2lonlat(longitude, latitude) {\n var lonlat = Array(2);\n var x = longitude / 20037508.34 * 180;\n var y = latitude / 20037508.34 * 180;\n y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);\n lonlat[0] = x;\n lonlat[1] = y;\n return lonlat;\n}\nfunction getBoundingBox(data) {\n var bounds = {},\n coords;\n bounds.xMin = 180;\n bounds.xMax = 0;\n bounds.yMin = 90;\n bounds.yMax = 0;\n for (var i = 0; i < data.length; i++) {\n var coorda = data[i].geometry.coordinates;\n for (var k = 0; k < coorda.length; k++) {\n coords = coorda[k];\n if (coords.length == 1) {\n coords = coords[0];\n }\n for (var j = 0; j < coords.length; j++) {\n var longitude = coords[j][0];\n var latitude = coords[j][1];\n var point = {\n x: longitude,\n y: latitude\n };\n bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;\n bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;\n bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;\n bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;\n }\n }\n }\n return bounds;\n}\nfunction coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {\n return {\n x: (longitude - bounds.xMin) * scale + xoffset,\n y: (bounds.yMax - latitude) * scale + yoffset\n };\n}\nfunction pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {\n return {\n x: (pointX - xoffset) / scale + bounds.xMin,\n y: bounds.yMax - (pointY - yoffset) / scale\n };\n}\nfunction isRayIntersectsSegment(poi, s_poi, e_poi) {\n if (s_poi[1] == e_poi[1]) {\n return false;\n }\n if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {\n return false;\n }\n if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {\n return false;\n }\n if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {\n return false;\n }\n if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {\n return false;\n }\n if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {\n return false;\n }\n var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);\n if (xseg < poi[0]) {\n return false;\n } else {\n return true;\n }\n}\nfunction isPoiWithinPoly(poi, poly, mercator) {\n var sinsc = 0;\n for (var i = 0; i < poly.length; i++) {\n var epoly = poly[i][0];\n if (poly.length == 1) {\n epoly = poly[i][0];\n }\n for (var j = 0; j < epoly.length - 1; j++) {\n var s_poi = epoly[j];\n var e_poi = epoly[j + 1];\n if (mercator) {\n s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);\n e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);\n }\n if (isRayIntersectsSegment(poi, s_poi, e_poi)) {\n sinsc += 1;\n }\n }\n }\n if (sinsc % 2 == 1) {\n return true;\n } else {\n return false;\n }\n}\nfunction drawMapDataPoints(series, opts, config, context) {\n var mapOption = assign({}, {\n border: true,\n mercator: false,\n borderWidth: 1,\n active: true,\n borderColor: '#666666',\n fillOpacity: 0.6,\n activeBorderColor: '#f04864',\n activeFillColor: '#facc14',\n activeFillOpacity: 1\n }, opts.extra.map);\n var coords, point;\n var data = series;\n var bounds = getBoundingBox(data);\n if (mapOption.mercator) {\n var max = lonlat2mercator(bounds.xMax, bounds.yMax);\n var min = lonlat2mercator(bounds.xMin, bounds.yMin);\n bounds.xMax = max[0];\n bounds.yMax = max[1];\n bounds.xMin = min[0];\n bounds.yMin = min[1];\n }\n var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);\n var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);\n var scale = xScale < yScale ? xScale : yScale;\n var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;\n var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;\n for (var i = 0; i < data.length; i++) {\n context.beginPath();\n context.setLineWidth(mapOption.borderWidth * opts.pix);\n context.setStrokeStyle(mapOption.borderColor);\n context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity || mapOption.fillOpacity));\n if (mapOption.active == true && opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.setStrokeStyle(mapOption.activeBorderColor);\n context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));\n }\n }\n var coorda = data[i].geometry.coordinates;\n for (var k = 0; k < coorda.length; k++) {\n coords = coorda[k];\n if (coords.length == 1) {\n coords = coords[0];\n }\n for (var j = 0; j < coords.length; j++) {\n var gaosi = Array(2);\n if (mapOption.mercator) {\n gaosi = lonlat2mercator(coords[j][0], coords[j][1]);\n } else {\n gaosi = coords[j];\n }\n point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset);\n if (j === 0) {\n context.beginPath();\n context.moveTo(point.x, point.y);\n } else {\n context.lineTo(point.x, point.y);\n }\n }\n context.fill();\n if (mapOption.border == true) {\n context.stroke();\n }\n }\n }\n if (opts.dataLabel == true) {\n for (var i = 0; i < data.length; i++) {\n var centerPoint = data[i].properties.centroid;\n if (centerPoint) {\n if (mapOption.mercator) {\n centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]);\n }\n point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);\n var fontSize = data[i].textSize * opts.pix || config.fontSize;\n var fontColor = data[i].textColor || opts.fontColor;\n if (mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i) {\n fontColor = mapOption.activeTextColor;\n }\n var text = data[i].properties.name;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(fontColor);\n context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);\n context.closePath();\n context.stroke();\n }\n }\n }\n opts.chartData.mapData = {\n bounds: bounds,\n scale: scale,\n xoffset: xoffset,\n yoffset: yoffset,\n mercator: mapOption.mercator\n };\n drawToolTipBridge(opts, config, context, 1);\n context.draw();\n}\nfunction normalInt(min, max, iter) {\n iter = iter == 0 ? 1 : iter;\n var arr = [];\n for (var i = 0; i < iter; i++) {\n arr[i] = Math.random();\n }\n ;\n return Math.floor(arr.reduce(function (i, j) {\n return i + j;\n }) / iter * (max - min)) + min;\n}\n;\nfunction collisionNew(area, points, width, height) {\n var isIn = false;\n for (var i = 0; i < points.length; i++) {\n if (points[i].area) {\n if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {\n if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {\n isIn = true;\n break;\n } else {\n isIn = false;\n }\n } else {\n isIn = true;\n break;\n }\n }\n }\n return isIn;\n}\n;\nfunction getWordCloudPoint(opts, type, context) {\n var points = opts.series;\n switch (type) {\n case 'normal':\n for (var i = 0; i < points.length; i++) {\n var text = points[i].name;\n var tHeight = points[i].textSize * opts.pix;\n var tWidth = measureText(text, tHeight, context);\n var x = void 0,\n y = void 0;\n var area = void 0;\n var breaknum = 0;\n while (true) {\n breaknum++;\n x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;\n y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;\n area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2];\n var isCollision = collisionNew(area, points, opts.width, opts.height);\n if (!isCollision) break;\n if (breaknum == 1000) {\n area = [-100, -100, -100, -100];\n break;\n }\n }\n ;\n points[i].area = area;\n }\n break;\n case 'vertical':\n var Spin = function Spin() {\n //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)\n if (Math.random() > 0.7) {\n return true;\n } else {\n return false;\n }\n ;\n };\n ;\n for (var _i30 = 0; _i30 < points.length; _i30++) {\n var _text = points[_i30].name;\n var _tHeight = points[_i30].textSize * opts.pix;\n var _tWidth = measureText(_text, _tHeight, context);\n var isSpin = Spin();\n var _x = void 0,\n _y = void 0,\n _area = void 0,\n areav = void 0;\n var _breaknum = 0;\n while (true) {\n _breaknum++;\n var _isCollision = void 0;\n if (isSpin) {\n _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n _area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];\n areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];\n _isCollision = collisionNew(areav, points, opts.height, opts.width);\n } else {\n _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n _area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];\n _isCollision = collisionNew(_area, points, opts.width, opts.height);\n }\n if (!_isCollision) break;\n if (_breaknum == 1000) {\n _area = [-1000, -1000, -1000, -1000];\n break;\n }\n }\n ;\n if (isSpin) {\n points[_i30].area = areav;\n points[_i30].areav = _area;\n } else {\n points[_i30].area = _area;\n }\n points[_i30].rotate = isSpin;\n }\n ;\n break;\n }\n return points;\n}\nfunction drawWordCloudDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var wordOption = assign({}, {\n type: 'normal',\n autoColors: true\n }, opts.extra.word);\n if (!opts.chartData.wordCloudData) {\n opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);\n }\n context.beginPath();\n context.setFillStyle(opts.background);\n context.rect(0, 0, opts.width, opts.height);\n context.fill();\n context.save();\n var points = opts.chartData.wordCloudData;\n context.translate(opts.width / 2, opts.height / 2);\n for (var i = 0; i < points.length; i++) {\n context.save();\n if (points[i].rotate) {\n context.rotate(90 * Math.PI / 180);\n }\n var text = points[i].name;\n var tHeight = points[i].textSize * opts.pix;\n var tWidth = measureText(text, tHeight, context);\n context.beginPath();\n context.setStrokeStyle(points[i].color);\n context.setFillStyle(points[i].color);\n context.setFontSize(tHeight);\n if (points[i].rotate) {\n if (points[i].areav[0] > 0) {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n } else {\n context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n }\n } else {\n context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n }\n }\n } else {\n if (points[i].area[0] > 0) {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n } else {\n context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n }\n } else {\n context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n }\n }\n }\n context.stroke();\n context.restore();\n }\n context.restore();\n}\nfunction drawFunnelDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var funnelOption = assign({}, {\n type: 'funnel',\n activeWidth: 10,\n activeOpacity: 0.3,\n border: false,\n borderWidth: 2,\n borderColor: '#FFFFFF',\n fillOpacity: 1,\n minSize: 0,\n labelAlign: 'right',\n linearType: 'none',\n customColor: []\n }, opts.extra.funnel);\n var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.height - opts.area[2]\n };\n var activeWidth = funnelOption.activeWidth * opts.pix;\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);\n var seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process);\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);\n if (funnelOption.type == 'pyramid') {\n for (var i = 0; i < seriesNew.length; i++) {\n if (i == seriesNew.length - 1) {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));\n context.moveTo(-activeWidth, -eachSpacing);\n context.lineTo(-seriesNew[i].radius - activeWidth, 0);\n context.lineTo(seriesNew[i].radius + activeWidth, 0);\n context.lineTo(activeWidth, -eachSpacing);\n context.lineTo(-activeWidth, -eachSpacing);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, -eachSpacing);\n context.lineTo(-seriesNew[i].radius, 0);\n context.lineTo(seriesNew[i].radius, 0);\n context.lineTo(0, -eachSpacing);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n } else {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[i].radius - activeWidth, 0);\n context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing);\n context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing);\n context.lineTo(seriesNew[i].radius + activeWidth, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[i].radius, 0);\n context.lineTo(-seriesNew[i + 1].radius, -eachSpacing);\n context.lineTo(seriesNew[i + 1].radius, -eachSpacing);\n context.lineTo(seriesNew[i].radius, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n }\n context.translate(0, -eachSpacing);\n }\n } else {\n context.translate(0, -(seriesNew.length - 1) * eachSpacing);\n for (var _i31 = 0; _i31 < seriesNew.length; _i31++) {\n if (_i31 == seriesNew.length - 1) {\n if (opts.tooltip) {\n if (opts.tooltip.index == _i31) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));\n context.moveTo(-activeWidth - funnelOption.minSize / 2, 0);\n context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);\n context.lineTo(activeWidth + funnelOption.minSize / 2, 0);\n context.lineTo(-activeWidth - funnelOption.minSize / 2, 0);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[_i31].radius, centerPosition.y];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, 0);\n context.lineTo(-funnelOption.minSize / 2, 0);\n context.lineTo(-seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(funnelOption.minSize / 2, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n } else {\n if (opts.tooltip) {\n if (opts.tooltip.index == _i31) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[_i31 + 1].radius - activeWidth, 0);\n context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);\n context.lineTo(seriesNew[_i31 + 1].radius + activeWidth, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31), centerPosition.x + seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31 - 1)];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[_i31 + 1].radius, 0);\n context.lineTo(-seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(seriesNew[_i31 + 1].radius, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n }\n context.translate(0, eachSpacing);\n }\n }\n context.restore();\n if (opts.dataLabel !== false && process === 1) {\n drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\n }\n if (process === 1) {\n drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\n }\n return {\n center: centerPosition,\n radius: radius,\n series: seriesNew\n };\n}\nfunction drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n if (item.labelShow === false) {\n continue;\n }\n var startX = void 0,\n endX = void 0,\n startY = void 0,\n fontSize = void 0;\n var text = item.formatter ? item.formatter(item, i, series, opts) : util.toFixed(item._proportion_ * 100) + '%';\n text = item.labelText ? item.labelText : text;\n if (labelAlign == 'right') {\n if (i == series.length - 1) {\n startX = (item.funnelArea[2] + centerPosition.x) / 2;\n } else {\n startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;\n }\n endX = startX + activeWidth * 2;\n startY = item.funnelArea[1] + eachSpacing / 2;\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(item.color);\n context.setFillStyle(item.color);\n context.beginPath();\n context.moveTo(startX, startY);\n context.lineTo(endX, startY);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.moveTo(endX, startY);\n context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.textColor || opts.fontColor);\n context.fillText(text, endX + 5, startY + fontSize / 2 - 2);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n if (labelAlign == 'left') {\n if (i == series.length - 1) {\n startX = (item.funnelArea[0] + centerPosition.x) / 2;\n } else {\n startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;\n }\n endX = startX - activeWidth * 2;\n startY = item.funnelArea[1] + eachSpacing / 2;\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(item.color);\n context.setFillStyle(item.color);\n context.beginPath();\n context.moveTo(startX, startY);\n context.lineTo(endX, startY);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.moveTo(endX, startY);\n context.arc(endX, startY, 2, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.textColor || opts.fontColor);\n context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n }\n}\nfunction drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n var startY = void 0,\n fontSize = void 0;\n if (item.centerText) {\n startY = item.funnelArea[1] + eachSpacing / 2;\n fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.centerTextColor || \"#FFFFFF\");\n context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n }\n}\nfunction drawCanvas(opts, context) {\n context.save();\n context.translate(0, 0.5);\n context.restore();\n context.draw();\n}\nvar Timing = {\n easeIn: function easeIn(pos) {\n return Math.pow(pos, 3);\n },\n easeOut: function easeOut(pos) {\n return Math.pow(pos - 1, 3) + 1;\n },\n easeInOut: function easeInOut(pos) {\n if ((pos /= 0.5) < 1) {\n return 0.5 * Math.pow(pos, 3);\n } else {\n return 0.5 * (Math.pow(pos - 2, 3) + 2);\n }\n },\n linear: function linear(pos) {\n return pos;\n }\n};\nfunction Animation(opts) {\n this.isStop = false;\n opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;\n opts.timing = opts.timing || 'easeInOut';\n var delay = 17;\n function createAnimationFrame() {\n if (typeof setTimeout !== 'undefined') {\n return function (step, delay) {\n setTimeout(function () {\n var timeStamp = +new Date();\n step(timeStamp);\n }, delay);\n };\n } else if (typeof requestAnimationFrame !== 'undefined') {\n return requestAnimationFrame;\n } else {\n return function (step) {\n step(null);\n };\n }\n }\n ;\n var animationFrame = createAnimationFrame();\n var startTimeStamp = null;\n var _step = function step(timestamp) {\n if (timestamp === null || this.isStop === true) {\n opts.onProcess && opts.onProcess(1);\n opts.onAnimationFinish && opts.onAnimationFinish();\n return;\n }\n if (startTimeStamp === null) {\n startTimeStamp = timestamp;\n }\n if (timestamp - startTimeStamp < opts.duration) {\n var process = (timestamp - startTimeStamp) / opts.duration;\n var timingFunction = Timing[opts.timing];\n process = timingFunction(process);\n opts.onProcess && opts.onProcess(process);\n animationFrame(_step, delay);\n } else {\n opts.onProcess && opts.onProcess(1);\n opts.onAnimationFinish && opts.onAnimationFinish();\n }\n };\n _step = _step.bind(this);\n animationFrame(_step, delay);\n}\nAnimation.prototype.stop = function () {\n this.isStop = true;\n};\nfunction drawCharts(type, opts, config, context) {\n var _this2 = this;\n var _this = this;\n var series = opts.series;\n //兼容ECharts饼图类数据格式\n if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {\n series = fixPieSeries(series, opts, config);\n }\n var categories = opts.categories;\n if (type === 'mount') {\n categories = [];\n for (var j = 0; j < series.length; j++) {\n if (series[j].show !== false) categories.push(series[j].name);\n }\n opts.categories = categories;\n }\n series = fillSeries(series, opts, config);\n var duration = opts.animation ? opts.duration : 0;\n _this.animationInstance && _this.animationInstance.stop();\n var seriesMA = null;\n if (type == 'candle') {\n var average = assign({}, opts.extra.candle.average);\n if (average.show) {\n seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);\n seriesMA = fillSeries(seriesMA, opts, config);\n opts.seriesMA = seriesMA;\n } else if (opts.seriesMA) {\n seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);\n } else {\n seriesMA = series;\n }\n } else {\n seriesMA = series;\n }\n /* 过滤掉show=false的series */\n opts._series_ = series = filterSeries(series);\n //重新计算图表区域\n opts.area = new Array(4);\n //复位绘图区域\n for (var _j11 = 0; _j11 < 4; _j11++) {\n opts.area[_j11] = opts.padding[_j11] * opts.pix;\n }\n //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域\n var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),\n legendHeight = _calLegendData.area.wholeHeight,\n legendWidth = _calLegendData.area.wholeWidth;\n switch (opts.legend.position) {\n case 'top':\n opts.area[0] += legendHeight;\n break;\n case 'bottom':\n opts.area[2] += legendHeight;\n break;\n case 'left':\n opts.area[3] += legendWidth;\n break;\n case 'right':\n opts.area[1] += legendWidth;\n break;\n }\n var _calYAxisData = {},\n yAxisWidth = 0;\n if (opts.type === 'line' || opts.type === 'column' || opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n _calYAxisData = calYAxisData(series, opts, config, context);\n yAxisWidth = _calYAxisData.yAxisWidth;\n //如果显示Y轴标题\n if (opts.yAxis.showTitle) {\n var maxTitleHeight = 0;\n for (var i = 0; i < opts.yAxis.data.length; i++) {\n maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize);\n }\n opts.area[0] += maxTitleHeight;\n }\n var rightIndex = 0,\n leftIndex = 0;\n //计算主绘图区域左右位置\n for (var _i32 = 0; _i32 < yAxisWidth.length; _i32++) {\n if (yAxisWidth[_i32].position == 'left') {\n if (leftIndex > 0) {\n opts.area[3] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;\n } else {\n opts.area[3] += yAxisWidth[_i32].width;\n }\n leftIndex += 1;\n } else if (yAxisWidth[_i32].position == 'right') {\n if (rightIndex > 0) {\n opts.area[1] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;\n } else {\n opts.area[1] += yAxisWidth[_i32].width;\n }\n rightIndex += 1;\n }\n }\n } else {\n config.yAxisWidth = yAxisWidth;\n }\n opts.chartData.yAxisData = _calYAxisData;\n if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {\n opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);\n var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n xAxisHeight = _calCategoriesData.xAxisHeight,\n angle = _calCategoriesData.angle;\n config.xAxisHeight = xAxisHeight;\n config._xAxisTextAngle_ = angle;\n opts.area[2] += xAxisHeight;\n opts.chartData.categoriesData = _calCategoriesData;\n } else {\n if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n opts.chartData.xAxisData = calXAxisData(series, opts, config, context);\n categories = opts.chartData.xAxisData.rangesFormat;\n var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n _xAxisHeight = _calCategoriesData2.xAxisHeight,\n _angle = _calCategoriesData2.angle;\n config.xAxisHeight = _xAxisHeight;\n config._xAxisTextAngle_ = _angle;\n opts.area[2] += _xAxisHeight;\n opts.chartData.categoriesData = _calCategoriesData2;\n } else {\n opts.chartData.xAxisData = {\n xAxisPoints: []\n };\n }\n }\n\n //计算右对齐偏移距离\n if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {\n var offsetLeft = 0,\n xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n startX = opts.chartData.xAxisData.startX,\n endX = opts.chartData.xAxisData.endX,\n eachSpacing = opts.chartData.xAxisData.eachSpacing;\n var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n var screenWidth = endX - startX;\n offsetLeft = screenWidth - totalWidth;\n _this.scrollOption.currentOffset = offsetLeft;\n _this.scrollOption.startTouchX = offsetLeft;\n _this.scrollOption.distance = 0;\n _this.scrollOption.lastMoveTime = 0;\n opts._scrollDistance_ = offsetLeft;\n }\n if (type === 'pie' || type === 'ring' || type === 'rose') {\n config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);\n }\n switch (type) {\n case 'word':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawWordCloudDataPoints(series, opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'map':\n context.clearRect(0, 0, opts.width, opts.height);\n drawMapDataPoints(series, opts, config, context);\n setTimeout(function () {\n _this2.uevent.trigger('renderComplete');\n }, 50);\n break;\n case 'funnel':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'line':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawLineDataPoints.xAxisPoints,\n calPoints = _drawLineDataPoints.calPoints,\n eachSpacing = _drawLineDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'scatter':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawScatterDataPoints.xAxisPoints,\n calPoints = _drawScatterDataPoints.calPoints,\n eachSpacing = _drawScatterDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'bubble':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawBubbleDataPoints.xAxisPoints,\n calPoints = _drawBubbleDataPoints.calPoints,\n eachSpacing = _drawBubbleDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'mix':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawMixDataPoints.xAxisPoints,\n calPoints = _drawMixDataPoints.calPoints,\n eachSpacing = _drawMixDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'column':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawColumnDataPoints.xAxisPoints,\n calPoints = _drawColumnDataPoints.calPoints,\n eachSpacing = _drawColumnDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'mount':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawMountDataPoints.xAxisPoints,\n calPoints = _drawMountDataPoints.calPoints,\n eachSpacing = _drawMountDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'bar':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawXAxis(categories, opts, config, context);\n var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),\n yAxisPoints = _drawBarDataPoints.yAxisPoints,\n calPoints = _drawBarDataPoints.calPoints,\n eachSpacing = _drawBarDataPoints.eachSpacing;\n opts.chartData.yAxisPoints = yAxisPoints;\n opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'area':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawAreaDataPoints.xAxisPoints,\n calPoints = _drawAreaDataPoints.calPoints,\n eachSpacing = _drawAreaDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'ring':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'pie':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'rose':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'radar':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'arcbar':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'gauge':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'candle':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),\n xAxisPoints = _drawCandleDataPoints.xAxisPoints,\n calPoints = _drawCandleDataPoints.calPoints,\n eachSpacing = _drawCandleDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n if (seriesMA) {\n drawLegend(seriesMA, opts, config, context, opts.chartData);\n } else {\n drawLegend(opts.series, opts, config, context, opts.chartData);\n }\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n }\n}\nfunction uChartsEvent() {\n this.events = {};\n}\nuChartsEvent.prototype.addEventListener = function (type, listener) {\n this.events[type] = this.events[type] || [];\n this.events[type].push(listener);\n};\nuChartsEvent.prototype.delEventListener = function (type) {\n this.events[type] = [];\n};\nuChartsEvent.prototype.trigger = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var type = args[0];\n var params = args.slice(1);\n if (!!this.events[type]) {\n this.events[type].forEach(function (listener) {\n try {\n listener.apply(null, params);\n } catch (e) {\n //console.log('[uCharts] '+e);\n }\n });\n }\n};\nvar uCharts = function uCharts(opts) {\n opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;\n opts.fontSize = opts.fontSize ? opts.fontSize : 13;\n opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;\n if (opts.background == \"\" || opts.background == \"none\") {\n opts.background = \"#FFFFFF\";\n }\n opts.title = assign({}, opts.title);\n opts.subtitle = assign({}, opts.subtitle);\n opts.duration = opts.duration ? opts.duration : 1000;\n opts.yAxis = assign({}, {\n data: [],\n showTitle: false,\n disabled: false,\n disableGrid: false,\n gridSet: 'number',\n splitNumber: 5,\n gridType: 'solid',\n dashLength: 4 * opts.pix,\n gridColor: '#cccccc',\n padding: 10,\n fontColor: '#666666'\n }, opts.yAxis);\n opts.xAxis = assign({}, {\n rotateLabel: false,\n rotateAngle: 45,\n disabled: false,\n disableGrid: false,\n splitNumber: 5,\n calibration: false,\n fontColor: '#666666',\n fontSize: 13,\n lineHeight: 20,\n marginTop: 0,\n gridType: 'solid',\n dashLength: 4,\n scrollAlign: 'left',\n boundaryGap: 'center',\n axisLine: true,\n axisLineColor: '#cccccc',\n titleFontSize: 13,\n titleOffsetY: 0,\n titleOffsetX: 0,\n titleFontColor: '#666666'\n }, opts.xAxis);\n opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;\n opts.legend = assign({}, {\n show: true,\n position: 'bottom',\n float: 'center',\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n padding: 5,\n margin: 5,\n itemGap: 10,\n fontSize: opts.fontSize,\n lineHeight: opts.fontSize,\n fontColor: opts.fontColor,\n formatter: {},\n hiddenColor: '#CECECE'\n }, opts.legend);\n opts.extra = assign({\n tooltip: {\n legendShape: 'auto'\n }\n }, opts.extra);\n opts.rotate = opts.rotate ? true : false;\n opts.animation = opts.animation ? true : false;\n opts.rotate = opts.rotate ? true : false;\n opts.canvas2d = opts.canvas2d ? true : false;\n var config$$1 = assign({}, config);\n config$$1.color = opts.color ? opts.color : config$$1.color;\n if (opts.type == 'pie') {\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n }\n if (opts.type == 'ring') {\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n }\n if (opts.type == 'rose') {\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n }\n config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;\n\n //屏幕旋转\n config$$1.rotate = opts.rotate;\n if (opts.rotate) {\n var tempWidth = opts.width;\n var tempHeight = opts.height;\n opts.width = tempHeight;\n opts.height = tempWidth;\n }\n\n //适配高分屏\n opts.padding = opts.padding ? opts.padding : config$$1.padding;\n config$$1.yAxisWidth = config.yAxisWidth * opts.pix;\n config$$1.fontSize = opts.fontSize * opts.pix;\n config$$1.titleFontSize = config.titleFontSize * opts.pix;\n config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;\n if (!opts.context) {\n throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');\n }\n this.context = opts.context;\n if (!this.context.setTextAlign) {\n this.context.setStrokeStyle = function (e) {\n return this.strokeStyle = e;\n };\n this.context.setLineWidth = function (e) {\n return this.lineWidth = e;\n };\n this.context.setLineCap = function (e) {\n return this.lineCap = e;\n };\n this.context.setFontSize = function (e) {\n return this.font = e + \"px sans-serif\";\n };\n this.context.setFillStyle = function (e) {\n return this.fillStyle = e;\n };\n this.context.setTextAlign = function (e) {\n return this.textAlign = e;\n };\n this.context.setTextBaseline = function (e) {\n return this.textBaseline = e;\n };\n this.context.setShadow = function (offsetX, offsetY, blur, color) {\n this.shadowColor = color;\n this.shadowOffsetX = offsetX;\n this.shadowOffsetY = offsetY;\n this.shadowBlur = blur;\n };\n this.context.draw = function () {};\n }\n //兼容NVUEsetLineDash\n if (!this.context.setLineDash) {\n this.context.setLineDash = function (e) {};\n }\n opts.chartData = {};\n this.uevent = new uChartsEvent();\n this.scrollOption = {\n currentOffset: 0,\n startTouchX: 0,\n distance: 0,\n lastMoveTime: 0\n };\n this.opts = opts;\n this.config = config$$1;\n drawCharts.call(this, opts.type, opts, config$$1, this.context);\n};\nuCharts.prototype.updateData = function () {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.opts = assign({}, this.opts, data);\n this.opts.updateData = true;\n var scrollPosition = data.scrollPosition || 'current';\n switch (scrollPosition) {\n case 'current':\n this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n break;\n case 'left':\n this.opts._scrollDistance_ = 0;\n this.scrollOption = {\n currentOffset: 0,\n startTouchX: 0,\n distance: 0,\n lastMoveTime: 0\n };\n break;\n case 'right':\n var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\n yAxisWidth = _calYAxisData.yAxisWidth;\n this.config.yAxisWidth = yAxisWidth;\n var offsetLeft = 0;\n var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\n startX = _getXAxisPoints0.startX,\n endX = _getXAxisPoints0.endX,\n eachSpacing = _getXAxisPoints0.eachSpacing;\n var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n var screenWidth = endX - startX;\n offsetLeft = screenWidth - totalWidth;\n this.scrollOption = {\n currentOffset: offsetLeft,\n startTouchX: offsetLeft,\n distance: 0,\n lastMoveTime: 0\n };\n this.opts._scrollDistance_ = offsetLeft;\n break;\n }\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.zoom = function () {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;\n if (this.opts.enableScroll !== true) {\n __f__(\"log\", '[uCharts] 请启用滚动条后使用', \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:7193\");\n return;\n }\n //当前屏幕中间点\n var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);\n this.opts.animation = false;\n this.opts.xAxis.itemCount = val.itemCount;\n //重新计算x轴偏移距离\n var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\n yAxisWidth = _calYAxisData.yAxisWidth;\n this.config.yAxisWidth = yAxisWidth;\n var offsetLeft = 0;\n var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\n startX = _getXAxisPoints0.startX,\n endX = _getXAxisPoints0.endX,\n eachSpacing = _getXAxisPoints0.eachSpacing;\n var centerLeft = eachSpacing * centerPoint;\n var screenWidth = endX - startX;\n var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\n offsetLeft = screenWidth / 2 - centerLeft;\n if (offsetLeft > 0) {\n offsetLeft = 0;\n }\n if (offsetLeft < MaxLeft) {\n offsetLeft = MaxLeft;\n }\n this.scrollOption = {\n currentOffset: offsetLeft,\n startTouchX: 0,\n distance: 0,\n lastMoveTime: 0\n };\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\n this.opts._scrollDistance_ = offsetLeft;\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.dobuleZoom = function (e) {\n if (this.opts.enableScroll !== true) {\n __f__(\"log\", '[uCharts] 请启用滚动条后使用', \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:7233\");\n return;\n }\n var tcs = e.changedTouches;\n if (tcs.length < 2) {\n return;\n }\n for (var i = 0; i < tcs.length; i++) {\n tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;\n tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;\n }\n var ntcs = [getTouches(tcs[0], this.opts, e), getTouches(tcs[1], this.opts, e)];\n var xlength = Math.abs(ntcs[0].x - ntcs[1].x);\n // 记录初始的两指之间的数据\n if (!this.scrollOption.moveCount) {\n var cts0 = {\n changedTouches: [{\n x: tcs[0].x,\n y: this.opts.area[0] / this.opts.pix + 2\n }]\n };\n var cts1 = {\n changedTouches: [{\n x: tcs[1].x,\n y: this.opts.area[0] / this.opts.pix + 2\n }]\n };\n if (this.opts.rotate) {\n cts0 = {\n changedTouches: [{\n x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,\n y: tcs[0].y\n }]\n };\n cts1 = {\n changedTouches: [{\n x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,\n y: tcs[1].y\n }]\n };\n }\n var moveCurrent1 = this.getCurrentDataIndex(cts0).index;\n var moveCurrent2 = this.getCurrentDataIndex(cts1).index;\n var moveCount = Math.abs(moveCurrent1 - moveCurrent2);\n this.scrollOption.moveCount = moveCount;\n this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);\n this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);\n return;\n }\n var currentEachSpacing = xlength / this.scrollOption.moveCount;\n var itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;\n itemCount = itemCount <= 2 ? 2 : itemCount;\n itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;\n this.opts.animation = false;\n this.opts.xAxis.itemCount = itemCount;\n // 重新计算滚动条偏移距离\n var offsetLeft = 0;\n var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\n startX = _getXAxisPoints0.startX,\n endX = _getXAxisPoints0.endX,\n eachSpacing = _getXAxisPoints0.eachSpacing;\n var currentLeft = eachSpacing * this.scrollOption.moveCurrent1;\n var screenWidth = endX - startX;\n var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\n offsetLeft = -currentLeft + Math.min(ntcs[0].x, ntcs[1].x) - this.opts.area[3] - eachSpacing;\n if (offsetLeft > 0) {\n offsetLeft = 0;\n }\n if (offsetLeft < MaxLeft) {\n offsetLeft = MaxLeft;\n }\n this.scrollOption.currentOffset = offsetLeft;\n this.scrollOption.startTouchX = 0;\n this.scrollOption.distance = 0;\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\n this.opts._scrollDistance_ = offsetLeft;\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.stopAnimation = function () {\n this.animationInstance && this.animationInstance.stop();\n};\nuCharts.prototype.addEventListener = function (type, listener) {\n this.uevent.addEventListener(type, listener);\n};\nuCharts.prototype.delEventListener = function (type) {\n this.uevent.delEventListener(type);\n};\nuCharts.prototype.getCurrentDataIndex = function (e) {\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches) {\n var _touches$ = getTouches(touches, this.opts, e);\n if (this.opts.type === 'pie' || this.opts.type === 'ring') {\n return findPieChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.pieData, this.opts);\n } else if (this.opts.type === 'rose') {\n return findRoseChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.pieData, this.opts);\n } else if (this.opts.type === 'radar') {\n return findRadarChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.radarData, this.opts.categories.length);\n } else if (this.opts.type === 'funnel') {\n return findFunnelChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.funnelData);\n } else if (this.opts.type === 'map') {\n return findMapChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts);\n } else if (this.opts.type === 'word') {\n return findWordChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.wordCloudData);\n } else if (this.opts.type === 'bar') {\n return findBarChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n } else {\n return findCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n }\n }\n return -1;\n};\nuCharts.prototype.getLegendDataIndex = function (e) {\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches) {\n var _touches$ = getTouches(touches, this.opts, e);\n return findLegendIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.legendData);\n }\n return -1;\n};\nuCharts.prototype.touchLegend = function (e) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches) {\n var _touches$ = getTouches(touches, this.opts, e);\n var index = this.getLegendDataIndex(e);\n if (index >= 0) {\n if (this.opts.type == 'candle') {\n this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;\n } else {\n this.opts.series[index].show = !this.opts.series[index].show;\n }\n this.opts.animation = option.animation ? true : false;\n this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n }\n }\n};\nuCharts.prototype.showToolTip = function (e) {\n var _this3 = this;\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (!touches) {\n __f__(\"log\", \"[uCharts] 未获取到event坐标信息\", \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:7411\");\n }\n var _touches$ = getTouches(touches, this.opts, e);\n var currentOffset = this.scrollOption.currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset,\n animation: false\n });\n if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1 || index.length > 0) {\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n if (seriesData.length !== 0) {\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n textList = _getToolTipData.textList,\n offset = _getToolTipData.offset;\n offset.y = _touches$.y;\n opts.tooltip = {\n textList: option.textList !== undefined ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index,\n group: current.group\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'mount') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, opts._series_[index]);\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: opts.chartData.calPoints[index].x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'bar') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1 || index.length > 0) {\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n if (seriesData.length !== 0) {\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n textList = _getToolTipData.textList,\n offset = _getToolTipData.offset;\n offset.x = _touches$.x;\n opts.tooltip = {\n textList: option.textList !== undefined ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'mix') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1) {\n var currentOffset = this.scrollOption.currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset,\n animation: false\n });\n var seriesData = getSeriesDataItem(this.opts.series, index);\n if (seriesData.length !== 0) {\n var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),\n textList = _getMixToolTipData.textList,\n offset = _getMixToolTipData.offset;\n offset.y = _touches$.y;\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'candle') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1) {\n var currentOffset = this.scrollOption.currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset,\n animation: false\n });\n var seriesData = getSeriesDataItem(this.opts.series, index);\n if (seriesData.length !== 0) {\n var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),\n textList = _getToolTipData.textList,\n offset = _getToolTipData.offset;\n offset.y = _touches$.y;\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, opts._series_[index]);\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'map') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, this.opts.series[index]);\n seriesData.name = seriesData.properties.name;\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n opts.updateData = false;\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'word') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, this.opts.series[index]);\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n opts.updateData = false;\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'radar') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = getSeriesDataItem(this.opts.series, index);\n if (seriesData.length !== 0) {\n var textList = seriesData.map(function (item) {\n return {\n text: option.formatter ? option.formatter(item, _this3.opts.categories[index], index, _this3.opts) : item.name + ': ' + item.data,\n color: item.color,\n legendShape: _this3.opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : _this3.opts.extra.tooltip.legendShape\n };\n });\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n};\nuCharts.prototype.translate = function (distance) {\n this.scrollOption = {\n currentOffset: distance,\n startTouchX: distance,\n distance: 0,\n lastMoveTime: 0\n };\n var opts = assign({}, this.opts, {\n _scrollDistance_: distance,\n animation: false\n });\n drawCharts.call(this, this.opts.type, opts, this.config, this.context);\n};\nuCharts.prototype.scrollStart = function (e) {\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n var _touches$ = getTouches(touches, this.opts, e);\n if (touches && this.opts.enableScroll === true) {\n this.scrollOption.startTouchX = _touches$.x;\n }\n};\nuCharts.prototype.scroll = function (e) {\n if (this.scrollOption.lastMoveTime === 0) {\n this.scrollOption.lastMoveTime = Date.now();\n }\n var Limit = this.opts.touchMoveLimit || 60;\n var currMoveTime = Date.now();\n var duration = currMoveTime - this.scrollOption.lastMoveTime;\n if (duration < Math.floor(1000 / Limit)) return;\n if (this.scrollOption.startTouchX == 0) return;\n this.scrollOption.lastMoveTime = currMoveTime;\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches && this.opts.enableScroll === true) {\n var _touches$ = getTouches(touches, this.opts, e);\n var _distance;\n _distance = _touches$.x - this.scrollOption.startTouchX;\n var currentOffset = this.scrollOption.currentOffset;\n var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);\n this.scrollOption.distance = _distance = validDistance - currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset + _distance,\n animation: false\n });\n this.opts = opts;\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n return currentOffset + _distance;\n }\n};\nuCharts.prototype.scrollEnd = function (e) {\n if (this.opts.enableScroll === true) {\n var _scrollOption = this.scrollOption,\n currentOffset = _scrollOption.currentOffset,\n distance = _scrollOption.distance;\n this.scrollOption.currentOffset = currentOffset + distance;\n this.scrollOption.distance = 0;\n this.scrollOption.moveCount = 0;\n }\n};\nvar _default = uCharts;\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 121)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvdS1jaGFydHMuanMiXSwibmFtZXMiOlsiY29uZmlnIiwidmVyc2lvbiIsInlBeGlzV2lkdGgiLCJ4QXhpc0hlaWdodCIsInBhZGRpbmciLCJyb3RhdGUiLCJmb250U2l6ZSIsImZvbnRDb2xvciIsImRhdGFQb2ludFNoYXBlIiwiY29sb3IiLCJsaW5lYXJDb2xvciIsInBpZUNoYXJ0TGluZVBhZGRpbmciLCJwaWVDaGFydFRleHRQYWRkaW5nIiwidGl0bGVGb250U2l6ZSIsInN1YnRpdGxlRm9udFNpemUiLCJyYWRhckxhYmVsVGV4dE1hcmdpbiIsImFzc2lnbiIsInRhcmdldCIsInZhckFyZ3MiLCJUeXBlRXJyb3IiLCJsZW5ndGgiLCJkZWVwQXNzaWduIiwib2JqMSIsIm9iajIiLCJrZXkiLCJ0b1N0cmluZyIsImZvckVhY2giLCJ2YWwiLCJ1dGlsIiwidG9GaXhlZCIsIm51bSIsImxpbWl0IiwiaXNGbG9hdCIsImFwcHJveGltYXRlbHlFcXVhbCIsIm51bTEiLCJudW0yIiwiTWF0aCIsImFicyIsImlzU2FtZVNpZ24iLCJpc1NhbWVYQ29vcmRpbmF0ZUFyZWEiLCJwMSIsInAyIiwieCIsImlzQ29sbGlzaW9uIiwiZW5kIiwic3RhcnQiLCJ3aWR0aCIsInkiLCJoZWlnaHQiLCJmbGFnIiwiZ2V0SDVPZmZzZXQiLCJlIiwibXAiLCJjaGFuZ2VkVG91Y2hlcyIsInB1c2giLCJvZmZzZXRYIiwib2Zmc2V0WSIsImhleFRvUmdiIiwiaGV4VmFsdWUiLCJvcGMiLCJyZ3giLCJoZXgiLCJyZXBsYWNlIiwibSIsInIiLCJnIiwiYiIsInJnYiIsImV4ZWMiLCJwYXJzZUludCIsImZpbmRSYW5nZSIsInR5cGUiLCJpc05hTiIsIkVycm9yIiwibXVsdGlwbGUiLCJjZWlsIiwiZmxvb3IiLCJjYWxDYW5kbGVNQSIsImRheUFyciIsIm5hbWVBcnIiLCJjb2xvckFyciIsImtkYXRhIiwic2VyaWVzVGVtcCIsImsiLCJzZXJpZXNJdGVtIiwiZGF0YSIsIm5hbWUiLCJpIiwibGVuIiwic3VtIiwiaiIsImNhbFZhbGlkRGlzdGFuY2UiLCJzZWxmIiwiZGlzdGFuY2UiLCJjaGFydERhdGEiLCJvcHRzIiwiZGF0YUNoYXJ0QXJlYVdpZHRoIiwiYXJlYSIsImRhdGFDaGFydFdpZHRoIiwiZWFjaFNwYWNpbmciLCJ4QXhpc0RhdGEiLCJ4QXhpc1BvaW50cyIsImV4dHJhIiwibW91bnQiLCJ3aWR0aFJhdGlvIiwidmFsaWREaXN0YW5jZSIsInVldmVudCIsInRyaWdnZXIiLCJzY3JvbGxPcHRpb24iLCJwb3NpdGlvbiIsInhBeGlzIiwic2Nyb2xsUG9zaXRpb24iLCJpc0luQW5nbGVSYW5nZSIsImFuZ2xlIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwiYWRqdXN0IiwiUEkiLCJjcmVhdGVDdXJ2ZUNvbnRyb2xQb2ludHMiLCJwb2ludHMiLCJpc05vdE1pZGRsZVBvaW50IiwibWF4IiwibWluIiwiaXNOb3RNaWRkbGVQb2ludFgiLCJhIiwicEF4IiwicEF5IiwicEJ4IiwicEJ5IiwibGFzdCIsImN0ckEiLCJjdHJCIiwiY29udmVydENvb3JkaW5hdGVPcmlnaW4iLCJjZW50ZXIiLCJhdm9pZENvbGxpc2lvbiIsIm9iaiIsImZpeFBpZVNlcmllcyIsInNlcmllcyIsInBpZVNlcmllc0FyciIsImNvbnN0cnVjdG9yIiwiaW5kZXhPZiIsIl9waWVTZXJpZXNfIiwib2xkc2VyaWVzIiwiZm9ybWF0dGVyIiwidmFsdWUiLCJmaWxsU2VyaWVzIiwiaW5kZXgiLCJpdGVtIiwibGluZWFySW5kZXgiLCJzaG93IiwicG9pbnRTaGFwZSIsImxlZ2VuZFNoYXBlIiwiZmlsbEN1c3RvbUNvbG9yIiwibGluZWFyVHlwZSIsImN1c3RvbUNvbG9yIiwibmV3Y29sb3IiLCJjaGF6aGkiLCJnZXREYXRhUmFuZ2UiLCJtaW5EYXRhIiwibWF4RGF0YSIsInJhbmdlIiwibWluUmFuZ2UiLCJtYXhSYW5nZSIsIm1lYXN1cmVUZXh0IiwidGV4dCIsImNvbnRleHQiLCJTdHJpbmciLCJ1bmRlZmluZWQiLCJzZXRGb250U2l6ZSIsInNwbGl0IiwidGVzdCIsImRhdGFDb21iaW5lIiwicmVkdWNlIiwiY29uY2F0IiwiZGF0YUNvbWJpbmVTdGFjayIsIkFycmF5IiwiZ2V0VG91Y2hlcyIsInRvdWNoZXMiLCJjbGllbnRYIiwicGl4IiwicGFnZVkiLCJjdXJyZW50VGFyZ2V0Iiwib2Zmc2V0VG9wIiwiZ2V0U2VyaWVzRGF0YUl0ZW0iLCJncm91cCIsIm5ld1NlcmllcyIsImluZGV4SXNBcnIiLCJ0ZW1wU2VyaWVzIiwiZmlsdGVyU2VyaWVzIiwidG1waW5kZXgiLCJzdHlsZSIsImRpc2FibGVMZWdlbmQiLCJnZXRNYXhUZXh0TGlzdExlbmd0aCIsImxpc3QiLCJsZW5ndGhMaXN0IiwibWFwIiwiYXBwbHkiLCJnZXRSYWRhckNvb3JkaW5hdGVTZXJpZXMiLCJlYWNoQW5nbGUiLCJDb29yZGluYXRlU2VyaWVzIiwiZ2V0VG9vbFRpcERhdGEiLCJzZXJpZXNEYXRhIiwiY2F0ZWdvcmllcyIsIm9wdGlvbiIsImFyZ3VtZW50cyIsImNhbFBvaW50cyIsImZpbHRlclBvaW50cyIsInRleHRMaXN0IiwidGl0bGVUZXh0IiwidG9vbHRpcCIsIm9mZnNldCIsInJvdW5kIiwiZ2V0TWl4VG9vbFRpcERhdGEiLCJmaWx0ZXIiLCJnZXRDYW5kbGVUb29sVGlwRGF0YSIsInVwQ29sb3IiLCJ1cEZpbGwiLCJkb3duQ29sb3IiLCJkb3duRmlsbCIsInRleHQxIiwidGV4dDIiLCJ0ZXh0MyIsInRleHQ0IiwidmFsaWRDYWxQb2ludHMiLCJmaW5kQ3VycmVudEluZGV4IiwiY3VycmVudFBvaW50cyIsImN1cnJlbnQiLCJzcGFjaW5nIiwiYm91bmRhcnlHYXAiLCJpc0luRXhhY3RDaGFydEFyZWEiLCJ0aW1lUG9pbnRzIiwicG9pbnRWYWx1ZSIsInBvaW50SW5kZXgiLCJtaW5WYWx1ZSIsImZpbmRCYXJDaGFydEN1cnJlbnRJbmRleCIsInlBeGlzUG9pbnRzIiwiZmluZExlZ2VuZEluZGV4IiwibGVnZW5kRGF0YSIsImN1cnJlbnRJbmRleCIsImdhcCIsImlzSW5FeGFjdExlZ2VuZEFyZWEiLCJmaW5kUmFkYXJDaGFydEN1cnJlbnRJbmRleCIsInJhZGFyRGF0YSIsImNvdW50IiwiZWFjaEFuZ2xlQXJlYSIsImlzSW5FeGFjdFBpZUNoYXJ0QXJlYSIsInJhZGl1cyIsImZpeEFuZ2xlIiwiYXRhbjIiLCJhbmdsZUxpc3QiLCJyYW5nZVN0YXJ0IiwicmFuZ2VFbmQiLCJmaW5kRnVubmVsQ2hhcnRDdXJyZW50SW5kZXgiLCJmdW5uZWxEYXRhIiwiZnVubmVsQXJlYSIsImZpbmRXb3JkQ2hhcnRDdXJyZW50SW5kZXgiLCJ3b3JkRGF0YSIsImZpbmRNYXBDaGFydEN1cnJlbnRJbmRleCIsImNEYXRhIiwibWFwRGF0YSIsInRtcCIsInBvaW50VG9Db29yZGluYXRlIiwiYm91bmRzIiwic2NhbGUiLCJ4b2Zmc2V0IiwieW9mZnNldCIsInBvaSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJpc1BvaVdpdGhpblBvbHkiLCJtZXJjYXRvciIsImZpbmRSb3NlQ2hhcnRDdXJyZW50SW5kZXgiLCJwaWVEYXRhIiwiZ2V0Um9zZURhdGFQb2ludHMiLCJfc2VyaWVzXyIsInJvc2UiLCJvZmZzZXRBbmdsZSIsIl9zdGFydF8iLCJfcm9zZV9wcm9wb3J0aW9uXyIsImZpbmRQaWVDaGFydEN1cnJlbnRJbmRleCIsImdldFBpZURhdGFQb2ludHMiLCJwaWUiLCJyaW5nIiwiX3Byb3BvcnRpb25fIiwicG93Iiwic3BsaXRQb2ludHMiLCJlYWNoU2VyaWVzIiwibmV3UG9pbnRzIiwiaXRlbXMiLCJjb25uZWN0TnVsbHMiLCJjYWxMZWdlbmREYXRhIiwid2hvbGVXaWR0aCIsIndob2xlSGVpZ2h0Iiwid2lkdGhBcnIiLCJoZWlnaHRBcnIiLCJsZWdlbmQiLCJtYXJnaW4iLCJzaGFwZVdpZHRoIiwic2hhcGVSaWdodCIsImxpbmVIZWlnaHQiLCJsZWdlbmRMaXN0Iiwid2lkdGhDb3VudCIsIndpZHRoQ291bnRBcnIiLCJjdXJyZW50Um93IiwibGVnZW5kVGV4dCIsIml0ZW1XaWR0aCIsIml0ZW1HYXAiLCJsZWdlbmRXaWR0aCIsImZsb2F0IiwibWF4SGVpZ2h0IiwibWF4TGVuZ3RoIiwibGluZU51bSIsInRlbXAiLCJzbGljZSIsIm1heFdpZHRoIiwiY2FsQ2F0ZWdvcmllc0RhdGEiLCJyZXN1bHQiLCJtYXJnaW5Ub3AiLCJjYXRlZ29yaWVzVGV4dExlbnRoIiwieGl0ZW0iLCJtYXhUZXh0TGVuZ3RoIiwicm90YXRlTGFiZWwiLCJyb3RhdGVBbmdsZSIsInRlbXBIZWlnaHQiLCJzaW4iLCJlbmFibGVTY3JvbGwiLCJzY3JvbGxTaG93IiwiZGlzYWJsZWQiLCJnZXRYQXhpc1RleHRMaXN0Iiwic3RhY2siLCJzb3J0ZWQiLCJzdWJpdGVtIiwicmFuZ2VTcGFuIiwiZWFjaFJhbmdlIiwic3BsaXROdW1iZXIiLCJjYWxYQXhpc0RhdGEiLCJjb2x1bW5zdHlsZSIsImJhciIsInJhbmdlcyIsInJhbmdlc0Zvcm1hdCIsInhBeGlzU2NhbGVWYWx1ZXMiLCJPYmplY3QiLCJnZXRYQXhpc1BvaW50cyIsInRleHRMZW5ndGgiLCJnZXRSYWRhckRhdGFQb2ludHMiLCJwcm9jZXNzIiwicmFkYXJPcHRpb24iLCJyYWRhciIsImVhY2giLCJsaXN0SXRlbSIsInByb3BvcnRpb24iLCJjb3MiLCJfcmFkaXVzXyIsImdldEZ1bm5lbERhdGFQb2ludHMiLCJtaW5SYWRpdXMiLCJkYXRhQXJyIiwicmFkaXVzTGVuZ3RoIiwiZ2V0QXJjYmFyRGF0YVBvaW50cyIsImFyY2Jhck9wdGlvbiIsInRvdGFsQW5nbGUiLCJkaXJlY3Rpb24iLCJnZXRHYXVnZUFyY2JhckRhdGFQb2ludHMiLCJnZXRHYXVnZUF4aXNQb2ludHMiLCJ0ZW1wU3RhcnRBbmdsZSIsIl9zdGFydEFuZ2xlXyIsIl9lbmRBbmdsZV8iLCJnZXRHYXVnZURhdGFQb2ludHMiLCJnYXVnZU9wdGlvbiIsInBvaW50ZXIiLCJfb2xkQW5nbGVfIiwib2xkQW5nbGUiLCJvbGREYXRhIiwiZ2V0UGllVGV4dE1heExlbmd0aCIsInRleHRTaXplIiwiZml4Q29sdW1lRGF0YSIsImNvbHVtbkxlbiIsInNlcmllc0dhcCIsImNhdGVnb3J5R2FwIiwibWl4IiwiY29sdW1uIiwiZml4QmFyRGF0YSIsImZpeENvbHVtZU1ldGVyRGF0YSIsImJvcmRlciIsImZpeENvbHVtZVN0YWNrRGF0YSIsImluZGV4biIsImZpeEJhclN0YWNrRGF0YSIsInNwYWNpbmdWYWxpZCIsImRhdGFDb3VudCIsIml0ZW1Db3VudCIsInN0YXJ0WCIsImVuZFgiLCJnZXRDYW5kbGVEYXRhUG9pbnRzIiwidmFsaWRIZWlnaHQiLCJjUG9pbnRzIiwiaW5kZXhzIiwicG9pbnQiLCJnZXREYXRhUG9pbnRzIiwidmFsaWRXaWR0aCIsInhyYW5nZXMiLCJ4bWluUmFuZ2UiLCJ4bWF4UmFuZ2UiLCJzaGlmdCIsInBvcCIsInQiLCJnZXRMaW5lRGF0YVBvaW50cyIsImxpbmVPcHRpb24iLCJhbmltYXRpb24iLCJnZXRDb2x1bW5EYXRhUG9pbnRzIiwiemVyb1BvaW50cyIsImdldE1vdW50RGF0YVBvaW50cyIsIm1vdW50T3B0aW9uIiwibW91bnRXaWR0aCIsImdldEJhckRhdGFQb2ludHMiLCJnZXRTdGFja0RhdGFQb2ludHMiLCJzZXJpZXNJbmRleCIsInN0YWNrU2VyaWVzIiwidmFsdWUwIiwiaGVpZ2h0MCIsImhlaWdodGMiLCJ5MCIsImdldEJhclN0YWNrRGF0YVBvaW50cyIsIngwIiwiZ2V0WUF4aXNUZXh0TGlzdCIsInlEYXRhIiwiZGF0YVJhbmdlIiwieUF4aXMiLCJyZXZlcnNlIiwiY2FsWUF4aXNEYXRhIiwiWUxlbmd0aCIsInJhbmdlc0FyciIsInJhbmdlc0Zvcm1hdEFyciIsInlBeGlzV2lkdGhBcnIiLCJ1bml0IiwidG9maXgiLCJ5QXhpc0ZvbnRTaXplcyIsImNhbGlicmF0aW9uIiwieUF4aXNGb250U2l6ZSIsImNhbFRvb2x0aXBZQXhpc0RhdGEiLCJ5QXhpc0RhdGEiLCJtaW5BeGlzIiwibWF4VmFsIiwibWluVmFsIiwiY2FsTWFya0xpbmVEYXRhIiwieUF4aXNJbmRleCIsImNvbnRleHRSb3RhdGUiLCJyb3RhdGVMb2NrIiwidHJhbnNsYXRlIiwiX3JvdGF0ZV8iLCJkcmF3UG9pbnRTaGFwZSIsInNoYXBlIiwiYmVnaW5QYXRoIiwiZGF0YVBvaW50U2hhcGVUeXBlIiwic2V0U3Ryb2tlU3R5bGUiLCJzZXRGaWxsU3R5bGUiLCJiYWNrZ3JvdW5kIiwic2V0TGluZVdpZHRoIiwibW92ZVRvIiwibGluZVRvIiwiYXJjIiwicmVjdCIsImNsb3NlUGF0aCIsImZpbGwiLCJzdHJva2UiLCJkcmF3QWN0aXZlUG9pbnQiLCJpbmNsdWRlcyIsImFjdGl2ZVR5cGUiLCJkcmF3UmluZ1RpdGxlIiwidGl0bGVmb250U2l6ZSIsInRpdGxlIiwic3VidGl0bGVmb250U2l6ZSIsInN1YnRpdGxlIiwidGl0bGVGb250Q29sb3IiLCJzdWJ0aXRsZUZvbnRDb2xvciIsInRpdGxlSGVpZ2h0Iiwic3VidGl0bGVIZWlnaHQiLCJ0ZXh0V2lkdGgiLCJzdGFydFkiLCJmaWxsVGV4dCIsIl90ZXh0V2lkdGgiLCJfc3RhcnRYIiwiX3N0YXJ0WSIsImRyYXdQb2ludFRleHQiLCJ0ZXh0T2Zmc2V0IiwidGV4dENvbG9yIiwiZm9ybWF0VmFsIiwic2V0VGV4dEFsaWduIiwiZHJhd0NvbHVtZVBvaW50VGV4dCIsIlBvc2l0aW9uIiwibGFiZWxQb3NpdGlvbiIsImRyYXdNb3VudFBvaW50VGV4dCIsImRyYXdCYXJQb2ludFRleHQiLCJkcmF3R2F1Z2VMYWJlbCIsImNlbnRlclBvc2l0aW9uIiwibGFiZWxPZmZzZXQiLCJzcGxpdEFuZ2xlIiwic3BsaXRMaW5lIiwidG90YWxOdW1iZXIiLCJlbmROdW1iZXIiLCJzdGFydE51bWJlciIsIm5vd0FuZ2xlIiwibm93TnVtYmVyIiwicG9zIiwibGFiZWxUZXh0IiwibGFiZWxDb2xvciIsImRyYXdSYWRhckxhYmVsIiwibGFiZWxQb2ludFNob3ciLCJwb3NQb2ludCIsInBvc1BvaW50QXhpcyIsImxhYmVsUG9pbnRDb2xvciIsImxhYmVsUG9pbnRSYWRpdXMiLCJsYWJlbFNob3ciLCJwb3NSZWxhdGl2ZUNhbnZhcyIsImRyYXdQaWVUZXh0IiwibGluZVJhZGl1cyIsInRleHRPYmplY3RDb2xsZWN0aW9uIiwibGFzdFRleHRPYmplY3QiLCJzZXJpZXNDb252ZXJ0Iiwib3JnaW5YMSIsIm9yZ2luWTEiLCJvcmdpblgyIiwib3JnaW5ZMiIsIm9yZ2luWDMiLCJvcmdpblkzIiwidGV4dE9iamVjdCIsImxpbmVTdGFydCIsImxpbmVFbmQiLCJsaW5lU3RhcnRQb2lzdGlvbiIsImxpbmVFbmRQb2lzdGlvbiIsInRleHRQb3NpdGlvbiIsImN1cnZlU3RhcnRYIiwidGV4dFN0YXJ0WCIsInF1YWRyYXRpY0N1cnZlVG8iLCJkcmF3VG9vbFRpcFNwbGl0TGluZSIsInRvb2xUaXBPcHRpb24iLCJncmlkVHlwZSIsImRhc2hMZW5ndGgiLCJlbmRZIiwic2V0TGluZURhc2giLCJncmlkQ29sb3IiLCJ4QXhpc0xhYmVsIiwidGV4dFgiLCJ0ZXh0WSIsImxhYmVsQmdDb2xvciIsInRvb2xUaXBCYWNrZ3JvdW5kIiwibGFiZWxCZ09wYWNpdHkiLCJ0b29sVGlwT3BhY2l0eSIsImJveFBhZGRpbmciLCJsYWJlbEZvbnRDb2xvciIsImRyYXdNYXJrTGluZSIsIm1hcmtMaW5lT3B0aW9uIiwibWFya0xpbmUiLCJsaW5lQ29sb3IiLCJzaG93TGFiZWwiLCJsYWJlbEZvbnRTaXplIiwibGFiZWxQYWRkaW5nIiwibGFiZWxBbGlnbiIsImxhYmVsT2Zmc2V0WCIsImxhYmVsT2Zmc2V0WSIsImJnV2lkdGgiLCJiZ1N0YXJ0WCIsImJnU3RhcnRZIiwiZHJhd1Rvb2xUaXBIb3JpemVudGFsTGluZSIsInlBeGlzTGFiZWwiLCJ0U3RhcnRMZWZ0IiwidFN0YXJ0UmlnaHQiLCJiZ0VuZFgiLCJkcmF3VG9vbFRpcFNwbGl0QXJlYSIsImFjdGl2ZUJnQ29sb3IiLCJhY3RpdmVCZ09wYWNpdHkiLCJhY3RpdmVXaWR0aCIsImRyYXdCYXJUb29sVGlwU3BsaXRBcmVhIiwiZHJhd1Rvb2xUaXAiLCJzaG93Qm94Iiwic2hvd0Fycm93Iiwic2hvd0NhdGVnb3J5IiwiYmdDb2xvciIsImJnT3BhY2l0eSIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJPcGFjaXR5IiwibGVnZW5kU2hvdyIsInVuc2hpZnQiLCJsZWdlbmRNYXJnaW5SaWdodCIsImFycm93V2lkdGgiLCJpc092ZXJSaWdodEJvcmRlciIsInRvb2xUaXBXaWR0aCIsInRvb2xUaXBIZWlnaHQiLCJfc2Nyb2xsRGlzdGFuY2VfIiwiZmlsbFJlY3QiLCJzZXRUZXh0QmFzZWxpbmUiLCJkcmF3Q29sdW1uRGF0YVBvaW50cyIsImNvbHVtbk9wdGlvbiIsIm1ldGVyQm9yZGVyIiwibWV0ZXJGaWxsQ29sb3IiLCJiYXJCb3JkZXJDaXJjbGUiLCJiYXJCb3JkZXJSYWRpdXMiLCJsaW5lYXJPcGFjaXR5IiwiY29sb3JTdG9wIiwic2F2ZSIsImxlZnROdW0iLCJyaWdodE51bSIsInplcm9IZWlnaHQiLCJ0b29sdGlwUG9pbnRzIiwiZmlsbENvbG9yIiwic3Ryb2tlQ29sb3IiLCJncmQiLCJjcmVhdGVMaW5lYXJHcmFkaWVudCIsImFkZENvbG9yU3RvcCIsImxlZnQiLCJ0b3AiLCJyMCIsInIxIiwicjIiLCJyMyIsImRhdGFMYWJlbCIsInJlc3RvcmUiLCJkcmF3TW91bnREYXRhUG9pbnRzIiwiYmV6aWVyQ3VydmVUbyIsImRyYXdCYXJEYXRhUG9pbnRzIiwiZHJhd0NhbmRsZURhdGFQb2ludHMiLCJzZXJpZXNNQSIsImNhbmRsZU9wdGlvbiIsImF2ZXJhZ2UiLCJjYW5kbGUiLCJ1cExpbmUiLCJkb3duTGluZSIsImRheSIsImxlZnRTcGFjZSIsInJpZ2h0U3BhY2UiLCJzcGxpdFBvaW50TGlzdCIsInN0YXJ0UG9pbnQiLCJjdHJsUG9pbnQiLCJkcmF3QXJlYURhdGFQb2ludHMiLCJhcmVhT3B0aW9uIiwib3BhY2l0eSIsImFkZExpbmUiLCJncmFkaWVudCIsImZpcnN0UG9pbnQiLCJsYXN0UG9pbnQiLCJsaW5lVHlwZSIsImRyYXdTY2F0dGVyRGF0YVBvaW50cyIsInNjYXR0ZXJPcHRpb24iLCJzY2F0dGVyIiwiZHJhd0J1YmJsZURhdGFQb2ludHMiLCJidWJibGVPcHRpb24iLCJidWJibGUiLCJkcmF3TGluZURhdGFQb2ludHMiLCJvblNoYWRvdyIsImxpbmUiLCJzZXRTaGFkb3ciLCJkcmF3TWl4RGF0YVBvaW50cyIsImNvbHVtbkluZGV4IiwiY29sdW1uTGVuZ3RoIiwiYWRkUG9pbnQiLCJkcmF3VG9vbFRpcEJyaWRnZSIsImhvcml6ZW50YWxMaW5lIiwiZHJhd1hBeGlzIiwic2Nyb2xsWSIsInNjcm9sbFNjcmVlbldpZHRoIiwic2Nyb2xsVG90YWxXaWR0aCIsInNjcm9sbFdpZHRoIiwic2Nyb2xsTGVmdCIsInNldExpbmVDYXAiLCJzY3JvbGxCYWNrZ3JvdW5kQ29sb3IiLCJzY3JvbGxDb2xvciIsImRpc2FibGVHcmlkIiwiZ3JpZEV2YWwiLCJtYXhYQXhpc0xpc3RMZW5ndGgiLCJsYWJlbENvdW50IiwicmF0aW8iLCJuZXdDYXRlZ29yaWVzIiwiY2dMZW5ndGgiLCJ4QXhpc0ZvbnRTaXplIiwiX3hBeGlzVGV4dEFuZ2xlXyIsInNjcm9sbEhlaWdodCIsInRydWVQb2ludHMiLCJ0aXRsZU9mZnNldFgiLCJ0aXRsZU9mZnNldFkiLCJheGlzTGluZSIsImF4aXNMaW5lQ29sb3IiLCJkcmF3WUF4aXNHcmlkIiwieEF4aXNlYWNoU3BhY2luZyIsIlRvdGFsV2lkdGgiLCJkcmF3WUF4aXMiLCJ0U3RhcnRDZW50ZXIiLCJ0ZXh0QWxpZ24iLCJ0bXBzdHJhdCIsImdhcHdpZHRoIiwic2hvd1RpdGxlIiwiZHJhd0xlZ2VuZCIsImxlZ2VuZEFyZWEiLCJiYWNrZ3JvdW5kQ29sb3IiLCJpdGVtTGlzdCIsImxpc3RJbmRleCIsImhpZGRlbkNvbG9yIiwiZm9udFRyYW5zIiwiZHJhd1BpZURhdGFQb2ludHMiLCJwaWVPcHRpb24iLCJhY3RpdmVPcGFjaXR5IiwiYWN0aXZlUmFkaXVzIiwibGFiZWxXaWR0aCIsInJpbmdXaWR0aCIsImN1c3RvbVJhZGl1cyIsImNlbnRlckNvbG9yIiwiX3BpZVRleHRNYXhMZW5ndGhfIiwibGluZUpvaW4iLCJmaWxsY29sb3IiLCJjcmVhdGVDaXJjdWxhckdyYWRpZW50IiwiY3JlYXRlUmFkaWFsR3JhZGllbnQiLCJpbm5lclBpZVdpZHRoIiwiZHJhd1Jvc2VEYXRhUG9pbnRzIiwicm9zZU9wdGlvbiIsImRyYXdBcmNiYXJEYXRhUG9pbnRzIiwibGluZUNhcCIsImFyY2JhciIsImNlbnRlclgiLCJjZW50ZXJZIiwiZHJhd0dhdWdlRGF0YVBvaW50cyIsImZpeFJhZGl1cyIsImNoaWxkTnVtYmVyIiwiY2hpbGRXaWR0aCIsImdhdWdlIiwiaW5uZXJSYWRpdXMiLCJwaWVSYWRpdXMiLCJjaGlsZEFuZ2xlIiwicHJvYyIsInBvaW50ZXJSYWRpdXMiLCJncmFkaWVudDMiLCJlYWNoQ2F0ZWdvcmllcyIsImNoaWxkZW5kWCIsImRyYXdSYWRhckRhdGFQb2ludHMiLCJheGlzTGFiZWwiLCJheGlzTGFiZWxUb2ZpeCIsImdyaWRDb3VudCIsImNvb3JkaW5hdGVBbmdsZSIsInhyIiwieXIiLCJfbG9vcCIsInN0YXJ0UG9zIiwicmFkYXJEYXRhUG9pbnRzIiwic3RlcExlbmd0aCIsImxhYmVsIiwibG9ubGF0Mm1lcmNhdG9yIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJsb2ciLCJ0YW4iLCJtZXJjYXRvcjJsb25sYXQiLCJsb25sYXQiLCJhdGFuIiwiZXhwIiwiZ2V0Qm91bmRpbmdCb3giLCJjb29yZHMiLCJ4TWluIiwieE1heCIsInlNaW4iLCJ5TWF4IiwiY29vcmRhIiwiY29vcmRpbmF0ZVRvUG9pbnQiLCJwb2ludFkiLCJwb2ludFgiLCJpc1JheUludGVyc2VjdHNTZWdtZW50Iiwic19wb2kiLCJlX3BvaSIsInhzZWciLCJwb2x5Iiwic2luc2MiLCJlcG9seSIsImRyYXdNYXBEYXRhUG9pbnRzIiwibWFwT3B0aW9uIiwiYWN0aXZlIiwiZmlsbE9wYWNpdHkiLCJhY3RpdmVCb3JkZXJDb2xvciIsImFjdGl2ZUZpbGxDb2xvciIsImFjdGl2ZUZpbGxPcGFjaXR5IiwieFNjYWxlIiwieVNjYWxlIiwiZ2Fvc2kiLCJjZW50ZXJQb2ludCIsInByb3BlcnRpZXMiLCJjZW50cm9pZCIsImFjdGl2ZVRleHRDb2xvciIsImRyYXciLCJub3JtYWxJbnQiLCJpdGVyIiwiYXJyIiwicmFuZG9tIiwiY29sbGlzaW9uTmV3IiwiaXNJbiIsImdldFdvcmRDbG91ZFBvaW50IiwidEhlaWdodCIsInRXaWR0aCIsImJyZWFrbnVtIiwiU3BpbiIsImlzU3BpbiIsImFyZWF2IiwiZHJhd1dvcmRDbG91ZERhdGFQb2ludHMiLCJ3b3JkT3B0aW9uIiwiYXV0b0NvbG9ycyIsIndvcmQiLCJ3b3JkQ2xvdWREYXRhIiwic3Ryb2tlVGV4dCIsImRyYXdGdW5uZWxEYXRhUG9pbnRzIiwiZnVubmVsT3B0aW9uIiwibWluU2l6ZSIsImZ1bm5lbCIsInNlcmllc05ldyIsImRyYXdGdW5uZWxUZXh0IiwiZHJhd0Z1bm5lbENlbnRlclRleHQiLCJjZW50ZXJUZXh0IiwiY2VudGVyVGV4dFNpemUiLCJjZW50ZXJUZXh0Q29sb3IiLCJkcmF3Q2FudmFzIiwiVGltaW5nIiwiZWFzZUluIiwiZWFzZU91dCIsImVhc2VJbk91dCIsImxpbmVhciIsIkFuaW1hdGlvbiIsImlzU3RvcCIsImR1cmF0aW9uIiwidGltaW5nIiwiZGVsYXkiLCJjcmVhdGVBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJzdGVwIiwidGltZVN0YW1wIiwiRGF0ZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImFuaW1hdGlvbkZyYW1lIiwic3RhcnRUaW1lU3RhbXAiLCJfc3RlcCIsInRpbWVzdGFtcCIsIm9uUHJvY2VzcyIsIm9uQW5pbWF0aW9uRmluaXNoIiwidGltaW5nRnVuY3Rpb24iLCJiaW5kIiwicHJvdG90eXBlIiwic3RvcCIsImRyYXdDaGFydHMiLCJfdGhpcyIsImFuaW1hdGlvbkluc3RhbmNlIiwiX2NhbExlZ2VuZERhdGEiLCJsZWdlbmRIZWlnaHQiLCJfY2FsWUF4aXNEYXRhIiwibWF4VGl0bGVIZWlnaHQiLCJyaWdodEluZGV4IiwibGVmdEluZGV4IiwiX2NhbENhdGVnb3JpZXNEYXRhIiwiY2F0ZWdvcmllc0RhdGEiLCJzY3JvbGxBbGlnbiIsIm9mZnNldExlZnQiLCJ0b3RhbFdpZHRoIiwic2NyZWVuV2lkdGgiLCJjdXJyZW50T2Zmc2V0Iiwic3RhcnRUb3VjaFgiLCJsYXN0TW92ZVRpbWUiLCJjbGVhclJlY3QiLCJfZHJhd0xpbmVEYXRhUG9pbnRzIiwiZW5hYmxlTWFya0xpbmUiLCJfZHJhd1NjYXR0ZXJEYXRhUG9pbnRzIiwiX2RyYXdCdWJibGVEYXRhUG9pbnRzIiwiX2RyYXdNaXhEYXRhUG9pbnRzIiwiX2RyYXdDb2x1bW5EYXRhUG9pbnRzIiwiX2RyYXdNb3VudERhdGFQb2ludHMiLCJfZHJhd0JhckRhdGFQb2ludHMiLCJfZHJhd0FyZWFEYXRhUG9pbnRzIiwiYXJjYmFyRGF0YSIsImdhdWdlRGF0YSIsIl9kcmF3Q2FuZGxlRGF0YVBvaW50cyIsInVDaGFydHNFdmVudCIsImV2ZW50cyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5lciIsImRlbEV2ZW50TGlzdGVuZXIiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJwYXJhbXMiLCJ1Q2hhcnRzIiwicGl4ZWxSYXRpbyIsImdyaWRTZXQiLCJjYW52YXMyZCIsImNvbmZpZyQkMSIsInRlbXBXaWR0aCIsInN0cm9rZVN0eWxlIiwibGluZVdpZHRoIiwiZm9udCIsImZpbGxTdHlsZSIsInRleHRCYXNlbGluZSIsImJsdXIiLCJzaGFkb3dDb2xvciIsInNoYWRvd09mZnNldFgiLCJzaGFkb3dPZmZzZXRZIiwic2hhZG93Qmx1ciIsImNhbGwiLCJ1cGRhdGVEYXRhIiwiX2dldFhBeGlzUG9pbnRzMCIsInpvb20iLCJjZW50ZXJMZWZ0IiwiTWF4TGVmdCIsImRvYnVsZVpvb20iLCJ0Y3MiLCJjbGllbnRZIiwibnRjcyIsInhsZW5ndGgiLCJtb3ZlQ291bnQiLCJjdHMwIiwiY3RzMSIsIm1vdmVDdXJyZW50MSIsImdldEN1cnJlbnREYXRhSW5kZXgiLCJtb3ZlQ3VycmVudDIiLCJjdXJyZW50RWFjaFNwYWNpbmciLCJjdXJyZW50TGVmdCIsInN0b3BBbmltYXRpb24iLCJfdG91Y2hlcyQiLCJnZXRMZWdlbmREYXRhSW5kZXgiLCJ0b3VjaExlZ2VuZCIsInNob3dUb29sVGlwIiwiX2dldFRvb2xUaXBEYXRhIiwiX2dldE1peFRvb2xUaXBEYXRhIiwic2Nyb2xsU3RhcnQiLCJzY3JvbGwiLCJub3ciLCJMaW1pdCIsInRvdWNoTW92ZUxpbWl0IiwiY3Vyck1vdmVUaW1lIiwiX2Rpc3RhbmNlIiwic2Nyb2xsRW5kIiwiX3Njcm9sbE9wdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTs7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUViLElBQUlBLE1BQU0sR0FBRztFQUNYQyxPQUFPLEVBQUUsaUJBQWlCO0VBQzFCQyxVQUFVLEVBQUUsRUFBRTtFQUNkQyxXQUFXLEVBQUUsRUFBRTtFQUNmQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDekJDLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLFFBQVEsRUFBRSxFQUFFO0VBQ1pDLFNBQVMsRUFBRSxTQUFTO0VBQ3BCQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7RUFDeERDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0VBQzFHQyxXQUFXLEVBQUUs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LEVBQUU7TUFDL0I2ZSxnQkFBZ0IsRUFBRTJRLGFBQWEsR0FBR3lFLFNBQVM7TUFDM0MxZ0IsU0FBUyxFQUFFO0lBQ2IsQ0FBQyxDQUFDO0lBQ0osSUFBSSxDQUFDdlQsSUFBSSxHQUFHQSxJQUFJO0lBQ2R5dUIsVUFBVSxDQUFDd0QsSUFBSSxDQUFDLElBQUksRUFBRWp5QixJQUFJLENBQUN4QixJQUFJLEVBQUV3QixJQUFJLEVBQUUsSUFBSSxDQUFDL0YsTUFBTSxFQUFFLElBQUksQ0FBQ3FLLE9BQU8sQ0FBQztJQUNqRSxPQUFPa3JCLGFBQWEsR0FBR3lFLFNBQVM7RUFDbEM7QUFDRixDQUFDO0FBRURoRCxPQUFPLENBQUMxQyxTQUFTLENBQUMyRixTQUFTLEdBQUcsVUFBUzkyQixDQUFDLEVBQUU7RUFDeEMsSUFBSSxJQUFJLENBQUM0QyxJQUFJLENBQUNzTyxZQUFZLEtBQUssSUFBSSxFQUFFO0lBQ25DLElBQUk2bEIsYUFBYSxHQUFHLElBQUksQ0FBQ3R6QixZQUFZO01BQ25DMnVCLGFBQWEsR0FBRzJFLGFBQWEsQ0FBQzNFLGFBQWE7TUFDM0MxdkIsUUFBUSxHQUFHcTBCLGFBQWEsQ0FBQ3IwQixRQUFRO0lBQ25DLElBQUksQ0FBQ2UsWUFBWSxDQUFDMnVCLGFBQWEsR0FBR0EsYUFBYSxHQUFHMXZCLFFBQVE7SUFDMUQsSUFBSSxDQUFDZSxZQUFZLENBQUNmLFFBQVEsR0FBRyxDQUFDO0lBQzlCLElBQUksQ0FBQ2UsWUFBWSxDQUFDK3hCLFNBQVMsR0FBRyxDQUFDO0VBQ2pDO0FBQ0YsQ0FBQztBQUFDLGVBRWEzQixPQUFPO0FBQUEsMkIiLCJmaWxlIjoiMTIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogdUNoYXJ0cyAoUilcclxuICog6auY5oCn6IO96Leo5bmz5Y+w5Zu+6KGo5bqT77yM5pSv5oyBSDXjgIFBUFDjgIHlsI/nqIvluo/vvIjlvq7kv6Ev5pSv5LuY5a6dL+eZvuW6pi/lpLTmnaEvUVEvMzYwL+W/q+aJi++8ieOAgVZ1ZeOAgVRhcm/nrYnmlK/mjIFjYW52YXPnmoTmoYbmnrblubPlj7BcclxuICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgUUlVTiAoUikg56eL5LqRIGh0dHBzOi8vd3d3LnVjaGFydHMuY24gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgKCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgKVxyXG4gKiDlpI3liLbkvb/nlKjor7fkv53nlZnmnKzmrrXms6jph4rvvIzmhJ/osKLmlK/mjIHlvIDmupDvvIFcclxuICogXHJcbiAqIHVDaGFydHMgKFIpIOWumOaWuee9keermVxyXG4gKiBodHRwczovL3d3dy51Q2hhcnRzLmNuXHJcbiAqIFxyXG4gKiDlvIDmupDlnLDlnYA6XHJcbiAqIGh0dHBzOi8vZ2l0ZWUuY29tL3VDaGFydHMvdUNoYXJ0c1xyXG4gKiBcclxuICogdW5pLWFwcOaPkuS7tuW4guWcuuWcsOWdgO+8mlxyXG4gKiBodHRwOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI3MVxyXG4gKiBcclxuICovXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG52YXIgY29uZmlnID0ge1xyXG4gIHZlcnNpb246ICd2Mi41LjAtMjAyMzAxMDEnLFxyXG4gIHlBeGlzV2lkdGg6IDE1LFxyXG4gIHhBeGlzSGVpZ2h0OiAyMixcclxuICBwYWRkaW5nOiBbMTAsIDEwLCAxMCwgMTBdLFxyXG4gIHJvdGF0ZTogZmFsc2UsXHJcbiAgZm9udFNpemU6IDEzLFxyXG4gIGZvbnRDb2xvcjogJyM2NjY2NjYnLFxyXG4gIGRhdGFQb2ludFNoYXBlOiBbJ2NpcmNsZScsICdjaXJjbGUnLCAnY2lyY2xlJywgJ2NpcmNsZSddLFxyXG4gIGNvbG9yOiBbJyMxODkwRkYnLCAnIzkxQ0I3NCcsICcjRkFDODU4JywgJyNFRTY2NjYnLCAnIzczQzBERScsICcjM0NBMjcyJywgJyNGQzg0NTInLCAnIzlBNjBCNCcsICcjZWE3Y2NjJ10sXHJcbiAgbGluZWFyQ29sb3I6IFsnIzBFRTJGOCcsICcjMkJEQ0E4JywgJyNGQTdEOEQnLCAnI0VCODhFMicsICcjMkFFM0EwJywgJyMwRUUyRjgnLCAnI0VCODhFMicsICcjNjc3M0UzJywgJyNGNzhBODUnXSxcclxuICBwaWVDaGFydExpbmVQYWRkaW5nOiAxNSxcclxuICBwaWVDaGFydFRleHRQYWRkaW5nOiA1LFxyXG4gIHRpdGxlRm9udFNpemU6IDIwLFxyXG4gIHN1YnRpdGxlRm9udFNpemU6IDE1LFxyXG4gIHJhZGFyTGFiZWxUZXh0TWFyZ2luOiAxMyxcclxufTtcclxuXHJcbnZhciBhc3NpZ24gPSBmdW5jdGlvbih0YXJnZXQsIC4uLnZhckFyZ3MpIHtcclxuICBpZiAodGFyZ2V0ID09IG51bGwpIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1t1Q2hhcnRzXSBDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcclxuICB9XHJcbiAgaWYgKCF2YXJBcmdzIHx8IHZhckFyZ3MubGVuZ3RoIDw9IDApIHtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgfVxyXG4gIC8vIOa3seW6puWQiOW5tuWvueixoVxyXG4gIGZ1bmN0aW9uIGRlZXBBc3NpZ24ob2JqMSwgb2JqMikge1xyXG4gICAgZm9yIChsZXQga2V5IGluIG9iajIpIHtcclxuICAgICAgb2JqMVtrZXldID0gb2JqMVtrZXldICYmIG9iajFba2V5XS50b1N0cmluZygpID09PSBcIltvYmplY3QgT2JqZWN0XVwiID9cclxuICAgICAgICBkZWVwQXNzaWduKG9iajFba2V5XSwgb2JqMltrZXldKSA6IG9iajFba2V5XSA9IG9iajJba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmoxO1xyXG4gIH1cclxuICB2YXJBcmdzLmZvckVhY2godmFsID0+IHtcclxuICAgIHRhcmdldCA9IGRlZXBBc3NpZ24odGFyZ2V0LCB2YWwpO1xyXG4gIH0pO1xyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn07XHJcblxyXG52YXIgdXRpbCA9IHtcclxuICB0b0ZpeGVkOiBmdW5jdGlvbiB0b0ZpeGVkKG51bSwgbGltaXQpIHtcclxuICAgIGxpbWl0ID0gbGltaXQgfHwgMjtcclxuICAgIGlmICh0aGlzLmlzRmxvYXQobnVtKSkge1xyXG4gICAgICBudW0gPSBudW0udG9GaXhlZChsaW1pdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtO1xyXG4gIH0sXHJcbiAgaXNGbG9hdDogZnVuY3Rpb24gaXNGbG9hdChudW0pIHtcclxuICAgIHJldHVybiBudW0gJSAxICE9PSAwO1xyXG4gIH0sXHJcbiAgYXBwcm94aW1hdGVseUVxdWFsOiBmdW5jdGlvbiBhcHByb3hpbWF0ZWx5RXF1YWwobnVtMSwgbnVtMikge1xyXG4gICAgcmV0dXJuIE1hdGguYWJzKG51bTEgLSBudW0yKSA8IDFlLTEwO1xyXG4gIH0sXHJcbiAgaXNTYW1lU2lnbjogZnVuY3Rpb24gaXNTYW1lU2lnbihudW0xLCBudW0yKSB7XHJcbiAgICByZXR1cm4gTWF0aC5hYnMobnVtMSkgPT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgPT09IG51bTIgfHwgTWF0aC5hYnMobnVtMSkgIT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgIT09IG51bTI7XHJcbiAgfSxcclxuICBpc1NhbWVYQ29vcmRpbmF0ZUFyZWE6IGZ1bmN0aW9uIGlzU2FtZVhDb29yZGluYXRlQXJlYShwMSwgcDIpIHtcclxuICAgIHJldHVybiB0aGlzLmlzU2FtZVNpZ24ocDEueCwgcDIueCk7XHJcbiAgfSxcclxuICBpc0NvbGxpc2lvbjogZnVuY3Rpb24gaXNDb2xsaXNpb24ob2JqMSwgb2JqMikge1xyXG4gICAgb2JqMS5lbmQgPSB7fTtcclxuICAgIG9iajEuZW5kLnggPSBvYmoxLnN0YXJ0LnggKyBvYmoxLndpZHRoO1xyXG4gICAgb2JqMS5lbmQueSA9IG9iajEuc3RhcnQueSAtIG9iajEuaGVpZ2h0O1xyXG4gICAgb2JqMi5lbmQgPSB7fTtcclxuICAgIG9iajIuZW5kLnggPSBvYmoyLnN0YXJ0LnggKyBvYmoyLndpZHRoO1xyXG4gICAgb2JqMi5lbmQueSA9IG9iajIuc3RhcnQueSAtIG9iajIuaGVpZ2h0O1xyXG4gICAgdmFyIGZsYWcgPSBvYmoyLnN0YXJ0LnggPiBvYmoxLmVuZC54IHx8IG9iajIuZW5kLnggPCBvYmoxLnN0YXJ0LnggfHwgb2JqMi5lbmQueSA+IG9iajEuc3RhcnQueSB8fCBvYmoyLnN0YXJ0LnkgPCBvYmoxLmVuZC55O1xyXG4gICAgcmV0dXJuICFmbGFnO1xyXG4gIH1cclxufTtcclxuXHJcbi8v5YW85a65SDXngrnlh7vkuovku7ZcclxuZnVuY3Rpb24gZ2V0SDVPZmZzZXQoZSkge1xyXG4gIGUubXAgPSB7XHJcbiAgICBjaGFuZ2VkVG91Y2hlczogW11cclxuICB9O1xyXG4gIGUubXAuY2hhbmdlZFRvdWNoZXMucHVzaCh7XHJcbiAgICB4OiBlLm9mZnNldFgsXHJcbiAgICB5OiBlLm9mZnNldFlcclxuICB9KTtcclxuICByZXR1cm4gZTtcclxufVxyXG5cclxuLy8gaGV4IOi9rCByZ2JhXHJcbmZ1bmN0aW9uIGhleFRvUmdiKGhleFZhbHVlLCBvcGMpIHtcclxuICB2YXIgcmd4ID0gL14jPyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaTtcclxuICB2YXIgaGV4ID0gaGV4VmFsdWUucmVwbGFjZShyZ3gsIGZ1bmN0aW9uKG0sIHIsIGcsIGIpIHtcclxuICAgIHJldHVybiByICsgciArIGcgKyBnICsgYiArIGI7XHJcbiAgfSk7XHJcbiAgdmFyIHJnYiA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xyXG4gIHZhciByID0gcGFyc2VJbnQocmdiWzFdLCAxNik7XHJcbiAgdmFyIGcgPSBwYXJzZUludChyZ2JbMl0sIDE2KTtcclxuICB2YXIgYiA9IHBhcnNlSW50KHJnYlszXSwgMTYpO1xyXG4gIHJldHVybiAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgb3BjICsgJyknO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kUmFuZ2UobnVtLCB0eXBlLCBsaW1pdCkge1xyXG4gIGlmIChpc05hTihudW0pKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1t1Q2hhcnRzXSBzZXJpZXPmlbDmja7pnIDkuLpOdW1iZXLmoLzlvI8nKTtcclxuICB9XHJcbiAgbGltaXQgPSBsaW1pdCB8fCAxMDtcclxuICB0eXBlID0gdHlwZSA/IHR5cGUgOiAndXBwZXInO1xyXG4gIHZhciBtdWx0aXBsZSA9IDE7XHJcbiAgd2hpbGUgKGxpbWl0IDwgMSkge1xyXG4gICAgbGltaXQgKj0gMTA7XHJcbiAgICBtdWx0aXBsZSAqPSAxMDtcclxuICB9XHJcbiAgaWYgKHR5cGUgPT09ICd1cHBlcicpIHtcclxuICAgIG51bSA9IE1hdGguY2VpbChudW0gKiBtdWx0aXBsZSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIG51bSA9IE1hdGguZmxvb3IobnVtICogbXVsdGlwbGUpO1xyXG4gIH1cclxuICB3aGlsZSAobnVtICUgbGltaXQgIT09IDApIHtcclxuICAgIGlmICh0eXBlID09PSAndXBwZXInKSB7XHJcbiAgICAgIGlmIChudW0gPT0gbnVtICsgMSkgeyAvL+S/ruWkjeaVsOaNruWAvOi/h+Wkp251bSsr5peg5pWI55qEYnVnIGJ5IOWQkeaXpeiRtSBAeHJrX2p5XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgbnVtKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBudW0tLTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG51bSAvIG11bHRpcGxlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxDYW5kbGVNQShkYXlBcnIsIG5hbWVBcnIsIGNvbG9yQXJyLCBrZGF0YSkge1xyXG4gIGxldCBzZXJpZXNUZW1wID0gW107XHJcbiAgZm9yIChsZXQgayA9IDA7IGsgPCBkYXlBcnIubGVuZ3RoOyBrKyspIHtcclxuICAgIGxldCBzZXJpZXNJdGVtID0ge1xyXG4gICAgICBkYXRhOiBbXSxcclxuICAgICAgbmFtZTogbmFtZUFycltrXSxcclxuICAgICAgY29sb3I6IGNvbG9yQXJyW2tdXHJcbiAgICB9O1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGtkYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGlmIChpIDwgZGF5QXJyW2tdKSB7XHJcbiAgICAgICAgc2VyaWVzSXRlbS5kYXRhLnB1c2gobnVsbCk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHN1bSA9IDA7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGF5QXJyW2tdOyBqKyspIHtcclxuICAgICAgICBzdW0gKz0ga2RhdGFbaSAtIGpdWzFdO1xyXG4gICAgICB9XHJcbiAgICAgIHNlcmllc0l0ZW0uZGF0YS5wdXNoKCsoc3VtIC8gZGF5QXJyW2tdKS50b0ZpeGVkKDMpKTtcclxuICAgIH1cclxuICAgIHNlcmllc1RlbXAucHVzaChzZXJpZXNJdGVtKTtcclxuICB9XHJcbiAgcmV0dXJuIHNlcmllc1RlbXA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFZhbGlkRGlzdGFuY2Uoc2VsZiwgZGlzdGFuY2UsIGNoYXJ0RGF0YSwgY29uZmlnLCBvcHRzKSB7XHJcbiAgdmFyIGRhdGFDaGFydEFyZWFXaWR0aCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM107XHJcbiAgdmFyIGRhdGFDaGFydFdpZHRoID0gY2hhcnREYXRhLmVhY2hTcGFjaW5nICogKG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEpe1xyXG4gICAgaWYob3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvPjIpIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA9IDJcclxuICAgIGRhdGFDaGFydFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSpjaGFydERhdGEuZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHZhciB2YWxpZERpc3RhbmNlID0gZGlzdGFuY2U7XHJcbiAgaWYgKGRpc3RhbmNlID49IDApIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSAwO1xyXG4gICAgc2VsZi51ZXZlbnQudHJpZ2dlcignc2Nyb2xsTGVmdCcpO1xyXG4gICAgc2VsZi5zY3JvbGxPcHRpb24ucG9zaXRpb24gPSAnbGVmdCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAnbGVmdCc7XHJcbiAgfSBlbHNlIGlmIChNYXRoLmFicyhkaXN0YW5jZSkgPj0gZGF0YUNoYXJ0V2lkdGggLSBkYXRhQ2hhcnRBcmVhV2lkdGgpIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSBkYXRhQ2hhcnRBcmVhV2lkdGggLSBkYXRhQ2hhcnRXaWR0aDtcclxuICAgIHNlbGYudWV2ZW50LnRyaWdnZXIoJ3Njcm9sbFJpZ2h0Jyk7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9ICdyaWdodCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAncmlnaHQnO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9IGRpc3RhbmNlXHJcbiAgICBvcHRzLnhBeGlzLnNjcm9sbFBvc2l0aW9uID0gZGlzdGFuY2U7XHJcbiAgfVxyXG4gIHJldHVybiB2YWxpZERpc3RhbmNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luQW5nbGVSYW5nZShhbmdsZSwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcclxuICBmdW5jdGlvbiBhZGp1c3QoYW5nbGUpIHtcclxuICAgIHdoaWxlIChhbmdsZSA8IDApIHtcclxuICAgICAgYW5nbGUgKz0gMiAqIE1hdGguUEk7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoYW5nbGUgPiAyICogTWF0aC5QSSkge1xyXG4gICAgICBhbmdsZSAtPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICAgIHJldHVybiBhbmdsZTtcclxuICB9XHJcbiAgYW5nbGUgPSBhZGp1c3QoYW5nbGUpO1xyXG4gIHN0YXJ0QW5nbGUgPSBhZGp1c3Qoc3RhcnRBbmdsZSk7XHJcbiAgZW5kQW5nbGUgPSBhZGp1c3QoZW5kQW5nbGUpO1xyXG4gIGlmIChzdGFydEFuZ2xlID4gZW5kQW5nbGUpIHtcclxuICAgIGVuZEFuZ2xlICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgaWYgKGFuZ2xlIDwgc3RhcnRBbmdsZSkge1xyXG4gICAgICBhbmdsZSArPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFuZ2xlID49IHN0YXJ0QW5nbGUgJiYgYW5nbGUgPD0gZW5kQW5nbGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGkpIHtcclxuICBmdW5jdGlvbiBpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSkge1xyXG4gICAgaWYgKHBvaW50c1tpIC0gMV0gJiYgcG9pbnRzW2kgKyAxXSkge1xyXG4gICAgICByZXR1cm4gcG9pbnRzW2ldLnkgPj0gTWF0aC5tYXgocG9pbnRzW2kgLSAxXS55LCBwb2ludHNbaSArIDFdLnkpIHx8IHBvaW50c1tpXS55IDw9IE1hdGgubWluKHBvaW50c1tpIC0gMV0ueSxcclxuICAgICAgICBwb2ludHNbaSArIDFdLnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc05vdE1pZGRsZVBvaW50WChwb2ludHMsIGkpIHtcclxuICAgIGlmIChwb2ludHNbaSAtIDFdICYmIHBvaW50c1tpICsgMV0pIHtcclxuICAgICAgcmV0dXJuIHBvaW50c1tpXS54ID49IE1hdGgubWF4KHBvaW50c1tpIC0gMV0ueCwgcG9pbnRzW2kgKyAxXS54KSB8fCBwb2ludHNbaV0ueCA8PSBNYXRoLm1pbihwb2ludHNbaSAtIDFdLngsXHJcbiAgICAgICAgcG9pbnRzW2kgKyAxXS54KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgdmFyIGEgPSAwLjI7XHJcbiAgdmFyIGIgPSAwLjI7XHJcbiAgdmFyIHBBeCA9IG51bGw7XHJcbiAgdmFyIHBBeSA9IG51bGw7XHJcbiAgdmFyIHBCeCA9IG51bGw7XHJcbiAgdmFyIHBCeSA9IG51bGw7XHJcbiAgaWYgKGkgPCAxKSB7XHJcbiAgICBwQXggPSBwb2ludHNbMF0ueCArIChwb2ludHNbMV0ueCAtIHBvaW50c1swXS54KSAqIGE7XHJcbiAgICBwQXkgPSBwb2ludHNbMF0ueSArIChwb2ludHNbMV0ueSAtIHBvaW50c1swXS55KSAqIGE7XHJcbiAgfSBlbHNlIHtcclxuICAgIHBBeCA9IHBvaW50c1tpXS54ICsgKHBvaW50c1tpICsgMV0ueCAtIHBvaW50c1tpIC0gMV0ueCkgKiBhO1xyXG4gICAgcEF5ID0gcG9pbnRzW2ldLnkgKyAocG9pbnRzW2kgKyAxXS55IC0gcG9pbnRzW2kgLSAxXS55KSAqIGE7XHJcbiAgfVxyXG5cclxuICBpZiAoaSA+IHBvaW50cy5sZW5ndGggLSAzKSB7XHJcbiAgICB2YXIgbGFzdCA9IHBvaW50cy5sZW5ndGggLSAxO1xyXG4gICAgcEJ4ID0gcG9pbnRzW2xhc3RdLnggLSAocG9pbnRzW2xhc3RdLnggLSBwb2ludHNbbGFzdCAtIDFdLngpICogYjtcclxuICAgIHBCeSA9IHBvaW50c1tsYXN0XS55IC0gKHBvaW50c1tsYXN0XS55IC0gcG9pbnRzW2xhc3QgLSAxXS55KSAqIGI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueCAtIChwb2ludHNbaSArIDJdLnggLSBwb2ludHNbaV0ueCkgKiBiO1xyXG4gICAgcEJ5ID0gcG9pbnRzW2kgKyAxXS55IC0gKHBvaW50c1tpICsgMl0ueSAtIHBvaW50c1tpXS55KSAqIGI7XHJcbiAgfVxyXG4gIGlmIChpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSArIDEpKSB7XHJcbiAgICBwQnkgPSBwb2ludHNbaSArIDFdLnk7XHJcbiAgfVxyXG4gIGlmIChpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSkpIHtcclxuICAgIHBBeSA9IHBvaW50c1tpXS55O1xyXG4gIH1cclxuICBpZiAoaXNOb3RNaWRkbGVQb2ludFgocG9pbnRzLCBpICsgMSkpIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueDtcclxuICB9XHJcbiAgaWYgKGlzTm90TWlkZGxlUG9pbnRYKHBvaW50cywgaSkpIHtcclxuICAgIHBBeCA9IHBvaW50c1tpXS54O1xyXG4gIH1cclxuICBpZiAocEF5ID49IE1hdGgubWF4KHBvaW50c1tpXS55LCBwb2ludHNbaSArIDFdLnkpIHx8IHBBeSA8PSBNYXRoLm1pbihwb2ludHNbaV0ueSwgcG9pbnRzW2kgKyAxXS55KSkge1xyXG4gICAgcEF5ID0gcG9pbnRzW2ldLnk7XHJcbiAgfVxyXG4gIGlmIChwQnkgPj0gTWF0aC5tYXgocG9pbnRzW2ldLnksIHBvaW50c1tpICsgMV0ueSkgfHwgcEJ5IDw9IE1hdGgubWluKHBvaW50c1tpXS55LCBwb2ludHNbaSArIDFdLnkpKSB7XHJcbiAgICBwQnkgPSBwb2ludHNbaSArIDFdLnk7XHJcbiAgfVxyXG4gIGlmIChwQXggPj0gTWF0aC5tYXgocG9pbnRzW2ldLngsIHBvaW50c1tpICsgMV0ueCkgfHwgcEF4IDw9IE1hdGgubWluKHBvaW50c1tpXS54LCBwb2ludHNbaSArIDFdLngpKSB7XHJcbiAgICBwQXggPSBwb2ludHNbaV0ueDtcclxuICB9XHJcbiAgaWYgKHBCeCA+PSBNYXRoLm1heChwb2ludHNbaV0ueCwgcG9pbnRzW2kgKyAxXS54KSB8fCBwQnggPD0gTWF0aC5taW4ocG9pbnRzW2ldLngsIHBvaW50c1tpICsgMV0ueCkpIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueDtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGN0ckE6IHtcclxuICAgICAgeDogcEF4LFxyXG4gICAgICB5OiBwQXlcclxuICAgIH0sXHJcbiAgICBjdHJCOiB7XHJcbiAgICAgIHg6IHBCeCxcclxuICAgICAgeTogcEJ5XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKHgsIHksIGNlbnRlcikge1xyXG4gIHJldHVybiB7XHJcbiAgICB4OiBjZW50ZXIueCArIHgsXHJcbiAgICB5OiBjZW50ZXIueSAtIHlcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBhdm9pZENvbGxpc2lvbihvYmosIHRhcmdldCkge1xyXG4gIGlmICh0YXJnZXQpIHtcclxuICAgIC8vIGlzIGNvbGxpc2lvbiB0ZXN0XHJcbiAgICB3aGlsZSAodXRpbC5pc0NvbGxpc2lvbihvYmosIHRhcmdldCkpIHtcclxuICAgICAgaWYgKG9iai5zdGFydC54ID4gMCkge1xyXG4gICAgICAgIG9iai5zdGFydC55LS07XHJcbiAgICAgIH0gZWxzZSBpZiAob2JqLnN0YXJ0LnggPCAwKSB7XHJcbiAgICAgICAgb2JqLnN0YXJ0LnkrKztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob2JqLnN0YXJ0LnkgPiAwKSB7XHJcbiAgICAgICAgICBvYmouc3RhcnQueSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYmouc3RhcnQueS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gb2JqO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhQaWVTZXJpZXMoc2VyaWVzLCBvcHRzLCBjb25maWcpe1xyXG4gIGxldCBwaWVTZXJpZXNBcnIgPSBbXTtcclxuICBpZihzZXJpZXMubGVuZ3RoPjAgJiYgc2VyaWVzWzBdLmRhdGEuY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpe1xyXG4gICAgb3B0cy5fcGllU2VyaWVzXyA9IHNlcmllcztcclxuICAgIGxldCBvbGRzZXJpZXMgPSBzZXJpZXNbMF0uZGF0YTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2xkc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG9sZHNlcmllc1tpXS5mb3JtYXR0ZXIgPSBzZXJpZXNbMF0uZm9ybWF0dGVyO1xyXG4gICAgICBvbGRzZXJpZXNbaV0uZGF0YSA9IG9sZHNlcmllc1tpXS52YWx1ZTtcclxuICAgICAgcGllU2VyaWVzQXJyLnB1c2gob2xkc2VyaWVzW2ldKTtcclxuICAgIH1cclxuICAgIG9wdHMuc2VyaWVzID0gcGllU2VyaWVzQXJyO1xyXG4gIH1lbHNle1xyXG4gICAgcGllU2VyaWVzQXJyID0gc2VyaWVzO1xyXG4gIH1cclxuICByZXR1cm4gcGllU2VyaWVzQXJyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxsU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIGluZGV4ID0gMDtcclxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpZiAoIWl0ZW0uY29sb3IpIHtcclxuICAgICAgaXRlbS5jb2xvciA9IGNvbmZpZy5jb2xvcltpbmRleF07XHJcbiAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJSBjb25maWcuY29sb3IubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLmxpbmVhckluZGV4KSB7XHJcbiAgICAgIGl0ZW0ubGluZWFySW5kZXggPSBpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLmluZGV4KSB7XHJcbiAgICAgIGl0ZW0uaW5kZXggPSAwO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnR5cGUpIHtcclxuICAgICAgaXRlbS50eXBlID0gb3B0cy50eXBlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBpdGVtLnNob3cgPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBpdGVtLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnR5cGUpIHtcclxuICAgICAgaXRlbS50eXBlID0gb3B0cy50eXBlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnBvaW50U2hhcGUpIHtcclxuICAgICAgaXRlbS5wb2ludFNoYXBlID0gXCJjaXJjbGVcIjtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS5sZWdlbmRTaGFwZSkge1xyXG4gICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2xpbmUnOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwibGluZVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY29sdW1uJzpcclxuICAgICAgICBjYXNlICdiYXInOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwicmVjdFwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnYXJlYSc6XHJcbiAgICAgICAgY2FzZSAnbW91bnQnOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwidHJpYW5nbGVcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpdGVtLmxlZ2VuZFNoYXBlID0gXCJjaXJjbGVcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxsQ3VzdG9tQ29sb3IobGluZWFyVHlwZSwgY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKSB7XHJcbiAgdmFyIG5ld2NvbG9yID0gY3VzdG9tQ29sb3IgfHwgW107XHJcbiAgaWYgKGxpbmVhclR5cGUgPT0gJ2N1c3RvbScgJiYgbmV3Y29sb3IubGVuZ3RoID09IDAgKSB7XHJcbiAgICBuZXdjb2xvciA9IGNvbmZpZy5saW5lYXJDb2xvcjtcclxuICB9XHJcbiAgaWYgKGxpbmVhclR5cGUgPT0gJ2N1c3RvbScgJiYgbmV3Y29sb3IubGVuZ3RoIDwgc2VyaWVzLmxlbmd0aCkge1xyXG4gICAgbGV0IGNoYXpoaSA9IHNlcmllcy5sZW5ndGggLSBuZXdjb2xvci5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXpoaTsgaSsrKSB7XHJcbiAgICAgIG5ld2NvbG9yLnB1c2goY29uZmlnLmxpbmVhckNvbG9yWyhpICsgMSkgJSBjb25maWcubGluZWFyQ29sb3IubGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBuZXdjb2xvcjtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGF0YVJhbmdlKG1pbkRhdGEsIG1heERhdGEpIHtcclxuICB2YXIgbGltaXQgPSAwO1xyXG4gIHZhciByYW5nZSA9IG1heERhdGEgLSBtaW5EYXRhO1xyXG4gIGlmIChyYW5nZSA+PSAxMDAwMCkge1xyXG4gICAgbGltaXQgPSAxMDAwO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMTAwMCkge1xyXG4gICAgbGltaXQgPSAxMDA7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAxMDApIHtcclxuICAgIGxpbWl0ID0gMTA7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAxMCkge1xyXG4gICAgbGltaXQgPSA1O1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMSkge1xyXG4gICAgbGltaXQgPSAxO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMC4xKSB7XHJcbiAgICBsaW1pdCA9IDAuMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDEpIHtcclxuICAgIGxpbWl0ID0gMC4wMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDAxO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMC4wMDAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDAwMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDAwMDEpIHtcclxuICAgIGxpbWl0ID0gMC4wMDAwMTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGltaXQgPSAwLjAwMDAwMTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIG1pblJhbmdlOiBmaW5kUmFuZ2UobWluRGF0YSwgJ2xvd2VyJywgbGltaXQpLFxyXG4gICAgbWF4UmFuZ2U6IGZpbmRSYW5nZShtYXhEYXRhLCAndXBwZXInLCBsaW1pdClcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZWFzdXJlVGV4dCh0ZXh0LCBmb250U2l6ZSwgY29udGV4dCkge1xyXG4gIHZhciB3aWR0aCA9IDA7XHJcbiAgdGV4dCA9IFN0cmluZyh0ZXh0KTtcclxuXHJcblxyXG5cclxuICBpZiAoY29udGV4dCAhPT0gZmFsc2UgJiYgY29udGV4dCAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQuc2V0Rm9udFNpemUgJiYgY29udGV4dC5tZWFzdXJlVGV4dCkge1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICByZXR1cm4gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcclxuICB9IGVsc2Uge1xyXG4gICAgdmFyIHRleHQgPSB0ZXh0LnNwbGl0KCcnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IHRleHRbaV07XHJcbiAgICAgIGlmICgvW2EtekEtWl0vLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSA3O1xyXG4gICAgICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDUuNTtcclxuICAgICAgfSBlbHNlIGlmICgvXFwuLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gMi43O1xyXG4gICAgICB9IGVsc2UgaWYgKC8tLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gMy4yNTtcclxuICAgICAgfSBlbHNlIGlmICgvOi8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDIuNTtcclxuICAgICAgfSBlbHNlIGlmICgvW1xcdTRlMDAtXFx1OWZhNV0vLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSAxMDtcclxuICAgICAgfSBlbHNlIGlmICgvXFwofFxcKS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDMuNzM7XHJcbiAgICAgIH0gZWxzZSBpZiAoL1xccy8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDIuNTtcclxuICAgICAgfSBlbHNlIGlmICgvJS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2lkdGggKz0gMTA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB3aWR0aCAqIGZvbnRTaXplIC8gMTA7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkYXRhQ29tYmluZShzZXJpZXMpIHtcclxuICByZXR1cm4gc2VyaWVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7XHJcbiAgICByZXR1cm4gKGEuZGF0YSA/IGEuZGF0YSA6IGEpLmNvbmNhdChiLmRhdGEpO1xyXG4gIH0sIFtdKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGF0YUNvbWJpbmVTdGFjayhzZXJpZXMsIGxlbikge1xyXG4gIHZhciBzdW0gPSBuZXcgQXJyYXkobGVuKTtcclxuICBmb3IgKHZhciBqID0gMDsgaiA8IHN1bS5sZW5ndGg7IGorKykge1xyXG4gICAgc3VtW2pdID0gMDtcclxuICB9XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3VtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIHN1bVtqXSArPSBzZXJpZXNbaV0uZGF0YVtqXTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgcmV0dXJuIChhLmRhdGEgPyBhLmRhdGEgOiBhKS5jb25jYXQoYi5kYXRhKS5jb25jYXQoc3VtKTtcclxuICB9LCBbXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFRvdWNoZXModG91Y2hlcywgb3B0cywgZSkge1xyXG4gIGxldCB4LCB5O1xyXG4gIGlmICh0b3VjaGVzLmNsaWVudFgpIHtcclxuICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICB5ID0gb3B0cy5oZWlnaHQgLSB0b3VjaGVzLmNsaWVudFggKiBvcHRzLnBpeDtcclxuICAgICAgeCA9ICh0b3VjaGVzLnBhZ2VZIC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCAtIChvcHRzLmhlaWdodCAvIG9wdHMucGl4IC8gMikgKiAob3B0cy5waXggLSAxKSkgKiBvcHRzLnBpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHggPSB0b3VjaGVzLmNsaWVudFggKiBvcHRzLnBpeDtcclxuICAgICAgeSA9ICh0b3VjaGVzLnBhZ2VZIC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCAtIChvcHRzLmhlaWdodCAvIG9wdHMucGl4IC8gMikgKiAob3B0cy5waXggLSAxKSkgKiBvcHRzLnBpeDtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgIHkgPSBvcHRzLmhlaWdodCAtIHRvdWNoZXMueCAqIG9wdHMucGl4O1xyXG4gICAgICB4ID0gdG91Y2hlcy55ICogb3B0cy5waXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB4ID0gdG91Y2hlcy54ICogb3B0cy5waXg7XHJcbiAgICAgIHkgPSB0b3VjaGVzLnkgKiBvcHRzLnBpeDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHg6IHgsXHJcbiAgICB5OiB5XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTZXJpZXNEYXRhSXRlbShzZXJpZXMsIGluZGV4LCBncm91cCkge1xyXG4gIHZhciBkYXRhID0gW107XHJcbiAgdmFyIG5ld1NlcmllcyA9IFtdO1xyXG4gIHZhciBpbmRleElzQXJyID0gaW5kZXguY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTE7XHJcbiAgaWYoaW5kZXhJc0Fycil7XHJcbiAgICBsZXQgdGVtcFNlcmllcyA9IGZpbHRlclNlcmllcyhzZXJpZXMpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBuZXdTZXJpZXMucHVzaCh0ZW1wU2VyaWVzW2dyb3VwW2ldXSk7XHJcbiAgICB9XHJcbiAgfWVsc2V7XHJcbiAgICBuZXdTZXJpZXMgPSBzZXJpZXM7XHJcbiAgfTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld1Nlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBuZXdTZXJpZXNbaV07XHJcbiAgICBsZXQgdG1waW5kZXggPSAtMTtcclxuICAgIGlmKGluZGV4SXNBcnIpe1xyXG4gICAgICB0bXBpbmRleCA9IGluZGV4W2ldO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRtcGluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS5kYXRhW3RtcGluZGV4XSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbS5kYXRhW3RtcGluZGV4XSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbS5zaG93KSB7XHJcbiAgICAgIGxldCBzZXJpZXNJdGVtID0ge307XHJcbiAgICAgIHNlcmllc0l0ZW0uY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgICBzZXJpZXNJdGVtLnR5cGUgPSBpdGVtLnR5cGU7XHJcbiAgICAgIHNlcmllc0l0ZW0uc3R5bGUgPSBpdGVtLnN0eWxlO1xyXG4gICAgICBzZXJpZXNJdGVtLnBvaW50U2hhcGUgPSBpdGVtLnBvaW50U2hhcGU7XHJcbiAgICAgIHNlcmllc0l0ZW0uZGlzYWJsZUxlZ2VuZCA9IGl0ZW0uZGlzYWJsZUxlZ2VuZDtcclxuICAgICAgc2VyaWVzSXRlbS5sZWdlbmRTaGFwZSA9IGl0ZW0ubGVnZW5kU2hhcGU7XHJcbiAgICAgIHNlcmllc0l0ZW0ubmFtZSA9IGl0ZW0ubmFtZTtcclxuICAgICAgc2VyaWVzSXRlbS5zaG93ID0gaXRlbS5zaG93O1xyXG4gICAgICBzZXJpZXNJdGVtLmRhdGEgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKGl0ZW0uZGF0YVt0bXBpbmRleF0pIDogaXRlbS5kYXRhW3RtcGluZGV4XTtcclxuICAgICAgZGF0YS5wdXNoKHNlcmllc0l0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWF4VGV4dExpc3RMZW5ndGgobGlzdCwgZm9udFNpemUsIGNvbnRleHQpIHtcclxuICB2YXIgbGVuZ3RoTGlzdCA9IGxpc3QubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiBtZWFzdXJlVGV4dChpdGVtLCBmb250U2l6ZSwgY29udGV4dCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGxlbmd0aExpc3QpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSYWRhckNvb3JkaW5hdGVTZXJpZXMobGVuZ3RoKSB7XHJcbiAgdmFyIGVhY2hBbmdsZSA9IDIgKiBNYXRoLlBJIC8gbGVuZ3RoO1xyXG4gIHZhciBDb29yZGluYXRlU2VyaWVzID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgQ29vcmRpbmF0ZVNlcmllcy5wdXNoKGVhY2hBbmdsZSAqIGkpO1xyXG4gIH1cclxuICByZXR1cm4gQ29vcmRpbmF0ZVNlcmllcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgcmV0dXJuIC0xICogaXRlbSArIE1hdGguUEkgLyAyO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRUb29sVGlwRGF0YShzZXJpZXNEYXRhLCBvcHRzLCBpbmRleCwgZ3JvdXAsIGNhdGVnb3JpZXMpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB7fTtcclxuICB2YXIgY2FsUG9pbnRzID0gb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzP29wdHMuY2hhcnREYXRhLmNhbFBvaW50czpbXTtcclxuICBsZXQgcG9pbnRzID0ge307XHJcbiAgaWYoZ3JvdXAubGVuZ3RoID4gMCl7XHJcbiAgICBsZXQgZmlsdGVyUG9pbnRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZpbHRlclBvaW50cy5wdXNoKGNhbFBvaW50c1tncm91cFtpXV0pXHJcbiAgICB9XHJcbiAgICBwb2ludHMgPSBmaWx0ZXJQb2ludHNbMF1baW5kZXhbMF1dO1xyXG4gIH1lbHNle1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYoY2FsUG9pbnRzW2ldW2luZGV4XSl7XHJcbiAgICAgICAgcG9pbnRzID0gY2FsUG9pbnRzW2ldW2luZGV4XTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdmFyIHRleHRMaXN0ID0gc2VyaWVzRGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgbGV0IHRpdGxlVGV4dCA9IG51bGw7XHJcbiAgICBpZiAob3B0cy5jYXRlZ29yaWVzICYmIG9wdHMuY2F0ZWdvcmllcy5sZW5ndGg+MCkge1xyXG4gICAgICB0aXRsZVRleHQgPSBjYXRlZ29yaWVzW2luZGV4XTtcclxuICAgIH07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0ZXh0OiBvcHRpb24uZm9ybWF0dGVyID8gb3B0aW9uLmZvcm1hdHRlcihpdGVtLCB0aXRsZVRleHQsIGluZGV4LCBvcHRzKSA6IGl0ZW0ubmFtZSArICc6ICcgKyBpdGVtLmRhdGEsXHJcbiAgICAgIGNvbG9yOiBpdGVtLmNvbG9yLFxyXG4gICAgICBsZWdlbmRTaGFwZTogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJz8gaXRlbS5sZWdlbmRTaGFwZSA6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgfTtcclxuICB9KTtcclxuICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgeDogTWF0aC5yb3VuZChwb2ludHMueCksXHJcbiAgICB5OiBNYXRoLnJvdW5kKHBvaW50cy55KVxyXG4gIH07XHJcbiAgcmV0dXJuIHtcclxuICAgIHRleHRMaXN0OiB0ZXh0TGlzdCxcclxuICAgIG9mZnNldDogb2Zmc2V0XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWl4VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgb3B0cywgaW5kZXgsIGNhdGVnb3JpZXMpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB7fTtcclxuICB2YXIgcG9pbnRzID0gb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHNbaW5kZXhdICsgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgLyAyO1xyXG4gIHZhciB0ZXh0TGlzdCA9IHNlcmllc0RhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKGl0ZW0sIGNhdGVnb3JpZXNbaW5kZXhdLCBpbmRleCwgb3B0cykgOiBpdGVtLm5hbWUgKyAnOiAnICsgaXRlbS5kYXRhLFxyXG4gICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgZGlzYWJsZUxlZ2VuZDogaXRlbS5kaXNhYmxlTGVnZW5kID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICBsZWdlbmRTaGFwZTogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJz8gaXRlbS5sZWdlbmRTaGFwZSA6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgfTtcclxuICB9KTtcclxuICB0ZXh0TGlzdCA9IHRleHRMaXN0LmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAoaXRlbS5kaXNhYmxlTGVnZW5kICE9PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHZhciBvZmZzZXQgPSB7XHJcbiAgICB4OiBNYXRoLnJvdW5kKHBvaW50cyksXHJcbiAgICB5OiAwXHJcbiAgfTtcclxuICByZXR1cm4ge1xyXG4gICAgdGV4dExpc3Q6IHRleHRMaXN0LFxyXG4gICAgb2Zmc2V0OiBvZmZzZXRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDYW5kbGVUb29sVGlwRGF0YShzZXJpZXMsIHNlcmllc0RhdGEsIG9wdHMsIGluZGV4LCBjYXRlZ29yaWVzLCBleHRyYSkge1xyXG4gIHZhciBvcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gNiAmJiBhcmd1bWVudHNbNl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s2XSA6IHt9O1xyXG4gIHZhciBjYWxQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHM7XHJcbiAgbGV0IHVwQ29sb3IgPSBleHRyYS5jb2xvci51cEZpbGw7XHJcbiAgbGV0IGRvd25Db2xvciA9IGV4dHJhLmNvbG9yLmRvd25GaWxsO1xyXG4gIC8v6aKc6Imy6aG65bqP5Li65byA55uY77yM5pS255uY77yM5pyA5L2O77yM5pyA6auYXHJcbiAgbGV0IGNvbG9yID0gW3VwQ29sb3IsIHVwQ29sb3IsIGRvd25Db2xvciwgdXBDb2xvcl07XHJcbiAgdmFyIHRleHRMaXN0ID0gW107XHJcbiAgc2VyaWVzRGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGluZGV4ID09IDApIHtcclxuICAgICAgaWYgKGl0ZW0uZGF0YVsxXSAtIGl0ZW0uZGF0YVswXSA8IDApIHtcclxuICAgICAgICBjb2xvclsxXSA9IGRvd25Db2xvcjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2xvclsxXSA9IHVwQ29sb3I7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpdGVtLmRhdGFbMF0gPCBzZXJpZXNbaW5kZXggLSAxXVsxXSkge1xyXG4gICAgICAgIGNvbG9yWzBdID0gZG93bkNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLmRhdGFbMV0gPCBpdGVtLmRhdGFbMF0pIHtcclxuICAgICAgICBjb2xvclsxXSA9IGRvd25Db2xvcjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5kYXRhWzJdID4gc2VyaWVzW2luZGV4IC0gMV1bMV0pIHtcclxuICAgICAgICBjb2xvclsyXSA9IHVwQ29sb3I7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uZGF0YVszXSA8IHNlcmllc1tpbmRleCAtIDFdWzFdKSB7XHJcbiAgICAgICAgY29sb3JbM10gPSBkb3duQ29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCB0ZXh0MSA9IHtcclxuICAgICAgdGV4dDogJ+W8gOebmO+8micgKyBpdGVtLmRhdGFbMF0sXHJcbiAgICAgIGNvbG9yOiBjb2xvclswXSxcclxuICAgICAgbGVnZW5kU2hhcGU6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0byc/IGl0ZW0ubGVnZW5kU2hhcGUgOiBvcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgIH07XHJcbiAgICBsZXQgdGV4dDIgPSB7XHJcbiAgICAgIHRleHQ6ICfmlLbnm5jvvJonICsgaXRlbS5kYXRhWzFdLFxyXG4gICAgICBjb2xvcjogY29sb3JbMV0sXHJcbiAgICAgIGxlZ2VuZFNoYXBlOiBvcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGUgPT0gJ2F1dG8nPyBpdGVtLmxlZ2VuZFNoYXBlIDogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlXHJcbiAgICB9O1xyXG4gICAgbGV0IHRleHQzID0ge1xyXG4gICAgICB0ZXh0OiAn5pyA5L2O77yaJyArIGl0ZW0uZGF0YVsyXSxcclxuICAgICAgY29sb3I6IGNvbG9yWzJdLFxyXG4gICAgICBsZWdlbmRTaGFwZTogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJz8gaXRlbS5sZWdlbmRTaGFwZSA6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgfTtcclxuICAgIGxldCB0ZXh0NCA9IHtcclxuICAgICAgdGV4dDogJ+acgOmrmO+8micgKyBpdGVtLmRhdGFbM10sXHJcbiAgICAgIGNvbG9yOiBjb2xvclszXSxcclxuICAgICAgbGVnZW5kU2hhcGU6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0byc/IGl0ZW0ubGVnZW5kU2hhcGUgOiBvcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgIH07XHJcbiAgICB0ZXh0TGlzdC5wdXNoKHRleHQxLCB0ZXh0MiwgdGV4dDMsIHRleHQ0KTtcclxuICB9KTtcclxuICB2YXIgdmFsaWRDYWxQb2ludHMgPSBbXTtcclxuICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgeDogMCxcclxuICAgIHk6IDBcclxuICB9O1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgcG9pbnRzID0gY2FsUG9pbnRzW2ldO1xyXG4gICAgaWYgKHR5cGVvZiBwb2ludHNbaW5kZXhdICE9PSAndW5kZWZpbmVkJyAmJiBwb2ludHNbaW5kZXhdICE9PSBudWxsKSB7XHJcbiAgICAgIHZhbGlkQ2FsUG9pbnRzLnB1c2gocG9pbnRzW2luZGV4XSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9mZnNldC54ID0gTWF0aC5yb3VuZCh2YWxpZENhbFBvaW50c1swXVswXS54KTtcclxuICByZXR1cm4ge1xyXG4gICAgdGV4dExpc3Q6IHRleHRMaXN0LFxyXG4gICAgb2Zmc2V0OiBvZmZzZXRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWx0ZXJTZXJpZXMoc2VyaWVzKSB7XHJcbiAgbGV0IHRlbXBTZXJpZXMgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHNlcmllc1tpXS5zaG93ID09IHRydWUpIHtcclxuICAgICAgdGVtcFNlcmllcy5wdXNoKHNlcmllc1tpXSlcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHRlbXBTZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgY2FsUG9pbnRzLCBvcHRzLCBjb25maWcpIHtcclxuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAwO1xyXG4gIHZhciBjdXJyZW50PXsgaW5kZXg6LTEsIGdyb3VwOltdIH07XHJcbiAgdmFyIHNwYWNpbmcgPSBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyAvIDI7XHJcbiAgbGV0IHhBeGlzUG9pbnRzID0gW107XHJcbiAgaWYgKGNhbFBvaW50cyAmJiBjYWxQb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKCFvcHRzLmNhdGVnb3JpZXMpIHtcclxuICAgICAgc3BhY2luZyA9IDA7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHhBeGlzUG9pbnRzLnB1c2gob3B0cy5jaGFydERhdGEueEF4aXNQb2ludHNbaV0gLSBzcGFjaW5nKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoKG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJykgJiYgb3B0cy54QXhpcy5ib3VuZGFyeUdhcCA9PSAnanVzdGlmeScpIHtcclxuICAgICAgICB4QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaXNJbkV4YWN0Q2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIG9wdHMsIGNvbmZpZykpIHtcclxuICAgICAgaWYgKCFvcHRzLmNhdGVnb3JpZXMpIHtcclxuICAgICAgICBsZXQgdGltZVBvaW50cyA9IEFycmF5KGNhbFBvaW50cy5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aW1lUG9pbnRzW2ldID0gQXJyYXkoY2FsUG9pbnRzW2ldLmxlbmd0aClcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2FsUG9pbnRzW2ldLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIHRpbWVQb2ludHNbaV1bal0gPSAoTWF0aC5hYnMoY2FsUG9pbnRzW2ldW2pdLnggLSBjdXJyZW50UG9pbnRzLngpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBwb2ludFZhbHVlID0gIEFycmF5KHRpbWVQb2ludHMubGVuZ3RoKTtcclxuICAgICAgICBsZXQgcG9pbnRJbmRleCA9ICBBcnJheSh0aW1lUG9pbnRzLmxlbmd0aCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBwb2ludFZhbHVlW2ldID0gTWF0aC5taW4uYXBwbHkobnVsbCwgdGltZVBvaW50c1tpXSk7XHJcbiAgICAgICAgICBwb2ludEluZGV4W2ldID0gdGltZVBvaW50c1tpXS5pbmRleE9mKHBvaW50VmFsdWVbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWluVmFsdWUgPSBNYXRoLm1pbi5hcHBseShudWxsLCBwb2ludFZhbHVlKTtcclxuICAgICAgICBjdXJyZW50LmluZGV4ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludFZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZihwb2ludFZhbHVlW2ldID09IG1pblZhbHVlKXtcclxuICAgICAgICAgICAgY3VycmVudC5ncm91cC5wdXNoKGkpO1xyXG4gICAgICAgICAgICBjdXJyZW50LmluZGV4LnB1c2gocG9pbnRJbmRleFtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgeEF4aXNQb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgaWYgKGN1cnJlbnRQb2ludHMueCArIG9mZnNldCArIHNwYWNpbmcgPiBpdGVtKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnQuaW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZEJhckNoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIGNhbFBvaW50cywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMDtcclxuICB2YXIgY3VycmVudD17IGluZGV4Oi0xLCBncm91cDpbXSB9O1xyXG4gIHZhciBzcGFjaW5nID0gb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgLyAyO1xyXG4gIGxldCB5QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnlBeGlzUG9pbnRzO1xyXG4gIGlmIChjYWxQb2ludHMgJiYgY2FsUG9pbnRzLmxlbmd0aCA+IDApIHtcclxuICAgIGlmIChpc0luRXhhY3RDaGFydEFyZWEoY3VycmVudFBvaW50cywgb3B0cywgY29uZmlnKSkge1xyXG4gICAgICB5QXhpc1BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRQb2ludHMueSArIG9mZnNldCArIHNwYWNpbmcgPiBpdGVtKSB7XHJcbiAgICAgICAgICBjdXJyZW50LmluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRMZWdlbmRJbmRleChjdXJyZW50UG9pbnRzLCBsZWdlbmREYXRhLCBvcHRzKSB7XHJcbiAgbGV0IGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIGxldCBnYXAgPSAwO1xyXG4gIGlmIChpc0luRXhhY3RMZWdlbmRBcmVhKGN1cnJlbnRQb2ludHMsIGxlZ2VuZERhdGEuYXJlYSkpIHtcclxuICAgIGxldCBwb2ludHMgPSBsZWdlbmREYXRhLnBvaW50cztcclxuICAgIGxldCBpbmRleCA9IC0xO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpdGVtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaW5kZXggKz0gMTtcclxuICAgICAgICBsZXQgYXJlYSA9IGl0ZW1bal1bJ2FyZWEnXTtcclxuICAgICAgICBpZiAoYXJlYSAmJiBjdXJyZW50UG9pbnRzLnggPiBhcmVhWzBdIC0gZ2FwICYmIGN1cnJlbnRQb2ludHMueCA8IGFyZWFbMl0gKyBnYXAgJiYgY3VycmVudFBvaW50cy55ID4gYXJlYVsxXSAtIGdhcCAmJiBjdXJyZW50UG9pbnRzLnkgPCBhcmVhWzNdICsgZ2FwKSB7XHJcbiAgICAgICAgICBjdXJyZW50SW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNJbkV4YWN0TGVnZW5kQXJlYShjdXJyZW50UG9pbnRzLCBhcmVhKSB7XHJcbiAgcmV0dXJuIGN1cnJlbnRQb2ludHMueCA+IGFyZWEuc3RhcnQueCAmJiBjdXJyZW50UG9pbnRzLnggPCBhcmVhLmVuZC54ICYmIGN1cnJlbnRQb2ludHMueSA+IGFyZWEuc3RhcnQueSAmJiBjdXJyZW50UG9pbnRzLnkgPCBhcmVhLmVuZC55O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luRXhhY3RDaGFydEFyZWEoY3VycmVudFBvaW50cywgb3B0cywgY29uZmlnKSB7XHJcbiAgcmV0dXJuIGN1cnJlbnRQb2ludHMueCA8PSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdICsgMTAgJiYgY3VycmVudFBvaW50cy54ID49IG9wdHMuYXJlYVszXSAtIDEwICYmIGN1cnJlbnRQb2ludHMueSA+PSBvcHRzLmFyZWFbMF0gJiYgY3VycmVudFBvaW50cy55IDw9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kUmFkYXJDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCByYWRhckRhdGEsIGNvdW50KSB7XHJcbiAgdmFyIGVhY2hBbmdsZUFyZWEgPSAyICogTWF0aC5QSSAvIGNvdW50O1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICBpZiAoaXNJbkV4YWN0UGllQ2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIHJhZGFyRGF0YS5jZW50ZXIsIHJhZGFyRGF0YS5yYWRpdXMpKSB7XHJcbiAgICB2YXIgZml4QW5nbGUgPSBmdW5jdGlvbiBmaXhBbmdsZShhbmdsZSkge1xyXG4gICAgICBpZiAoYW5nbGUgPCAwKSB7XHJcbiAgICAgICAgYW5nbGUgKz0gMiAqIE1hdGguUEk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFuZ2xlID4gMiAqIE1hdGguUEkpIHtcclxuICAgICAgICBhbmdsZSAtPSAyICogTWF0aC5QSTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYW5nbGU7XHJcbiAgICB9O1xyXG4gICAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihyYWRhckRhdGEuY2VudGVyLnkgLSBjdXJyZW50UG9pbnRzLnksIGN1cnJlbnRQb2ludHMueCAtIHJhZGFyRGF0YS5jZW50ZXIueCk7XHJcbiAgICBhbmdsZSA9IC0xICogYW5nbGU7XHJcbiAgICBpZiAoYW5nbGUgPCAwKSB7XHJcbiAgICAgIGFuZ2xlICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgfVxyXG4gICAgdmFyIGFuZ2xlTGlzdCA9IHJhZGFyRGF0YS5hbmdsZUxpc3QubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgICAgaXRlbSA9IGZpeEFuZ2xlKC0xICogaXRlbSk7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfSk7XHJcbiAgICBhbmdsZUxpc3QuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICB2YXIgcmFuZ2VTdGFydCA9IGZpeEFuZ2xlKGl0ZW0gLSBlYWNoQW5nbGVBcmVhIC8gMik7XHJcbiAgICAgIHZhciByYW5nZUVuZCA9IGZpeEFuZ2xlKGl0ZW0gKyBlYWNoQW5nbGVBcmVhIC8gMik7XHJcbiAgICAgIGlmIChyYW5nZUVuZCA8IHJhbmdlU3RhcnQpIHtcclxuICAgICAgICByYW5nZUVuZCArPSAyICogTWF0aC5QSTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYW5nbGUgPj0gcmFuZ2VTdGFydCAmJiBhbmdsZSA8PSByYW5nZUVuZCB8fCBhbmdsZSArIDIgKiBNYXRoLlBJID49IHJhbmdlU3RhcnQgJiYgYW5nbGUgKyAyICogTWF0aC5QSSA8PSByYW5nZUVuZCkge1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZEZ1bm5lbENoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIGZ1bm5lbERhdGEpIHtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZ1bm5lbERhdGEuc2VyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICB2YXIgaXRlbSA9IGZ1bm5lbERhdGEuc2VyaWVzW2ldO1xyXG4gICAgaWYgKGN1cnJlbnRQb2ludHMueCA+IGl0ZW0uZnVubmVsQXJlYVswXSAmJiBjdXJyZW50UG9pbnRzLnggPCBpdGVtLmZ1bm5lbEFyZWFbMl0gJiYgY3VycmVudFBvaW50cy55ID4gaXRlbS5mdW5uZWxBcmVhWzFdICYmIGN1cnJlbnRQb2ludHMueSA8IGl0ZW0uZnVubmVsQXJlYVszXSkge1xyXG4gICAgICBjdXJyZW50SW5kZXggPSBpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFdvcmRDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCB3b3JkRGF0YSkge1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gd29yZERhdGEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgIHZhciBpdGVtID0gd29yZERhdGFbaV07XHJcbiAgICBpZiAoY3VycmVudFBvaW50cy54ID4gaXRlbS5hcmVhWzBdICYmIGN1cnJlbnRQb2ludHMueCA8IGl0ZW0uYXJlYVsyXSAmJiBjdXJyZW50UG9pbnRzLnkgPiBpdGVtLmFyZWFbMV0gJiYgY3VycmVudFBvaW50cy55IDwgaXRlbS5hcmVhWzNdKSB7XHJcbiAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kTWFwQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgb3B0cykge1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICB2YXIgY0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS5tYXBEYXRhO1xyXG4gIHZhciBkYXRhID0gb3B0cy5zZXJpZXM7XHJcbiAgdmFyIHRtcCA9IHBvaW50VG9Db29yZGluYXRlKGN1cnJlbnRQb2ludHMueSwgY3VycmVudFBvaW50cy54LCBjRGF0YS5ib3VuZHMsIGNEYXRhLnNjYWxlLCBjRGF0YS54b2Zmc2V0LCBjRGF0YS55b2Zmc2V0KTtcclxuICB2YXIgcG9pID0gW3RtcC54LCB0bXAueV07XHJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGRhdGEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgIHZhciBpdGVtID0gZGF0YVtpXS5nZW9tZXRyeS5jb29yZGluYXRlcztcclxuICAgIGlmIChpc1BvaVdpdGhpblBvbHkocG9pLCBpdGVtLCBvcHRzLmNoYXJ0RGF0YS5tYXBEYXRhLm1lcmNhdG9yKSkge1xyXG4gICAgICBjdXJyZW50SW5kZXggPSBpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFJvc2VDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCBwaWVEYXRhLCBvcHRzKSB7XHJcbiAgdmFyIGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIHZhciBzZXJpZXMgPSBnZXRSb3NlRGF0YVBvaW50cyhvcHRzLl9zZXJpZXNfLCBvcHRzLmV4dHJhLnJvc2UudHlwZSwgcGllRGF0YS5yYWRpdXMsIHBpZURhdGEucmFkaXVzKTtcclxuICBpZiAocGllRGF0YSAmJiBwaWVEYXRhLmNlbnRlciAmJiBpc0luRXhhY3RQaWVDaGFydEFyZWEoY3VycmVudFBvaW50cywgcGllRGF0YS5jZW50ZXIsIHBpZURhdGEucmFkaXVzKSkge1xyXG4gICAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihwaWVEYXRhLmNlbnRlci55IC0gY3VycmVudFBvaW50cy55LCBjdXJyZW50UG9pbnRzLnggLSBwaWVEYXRhLmNlbnRlci54KTtcclxuICAgIGFuZ2xlID0gLWFuZ2xlO1xyXG4gICAgaWYob3B0cy5leHRyYS5yb3NlICYmIG9wdHMuZXh0cmEucm9zZS5vZmZzZXRBbmdsZSl7XHJcbiAgICAgIGFuZ2xlID0gYW5nbGUgLSBvcHRzLmV4dHJhLnJvc2Uub2Zmc2V0QW5nbGUgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlcmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBpZiAoaXNJbkFuZ2xlUmFuZ2UoYW5nbGUsIHNlcmllc1tpXS5fc3RhcnRfLCBzZXJpZXNbaV0uX3N0YXJ0XyArIHNlcmllc1tpXS5fcm9zZV9wcm9wb3J0aW9uXyAqIDIgKiBNYXRoLlBJKSkge1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFBpZUNoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIHBpZURhdGEsIG9wdHMpIHtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgdmFyIHNlcmllcyA9IGdldFBpZURhdGFQb2ludHMocGllRGF0YS5zZXJpZXMpO1xyXG4gIGlmIChwaWVEYXRhICYmIHBpZURhdGEuY2VudGVyICYmIGlzSW5FeGFjdFBpZUNoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCBwaWVEYXRhLmNlbnRlciwgcGllRGF0YS5yYWRpdXMpKSB7XHJcbiAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHBpZURhdGEuY2VudGVyLnkgLSBjdXJyZW50UG9pbnRzLnksIGN1cnJlbnRQb2ludHMueCAtIHBpZURhdGEuY2VudGVyLngpO1xyXG4gICAgYW5nbGUgPSAtYW5nbGU7XHJcbiAgICBpZihvcHRzLmV4dHJhLnBpZSAmJiBvcHRzLmV4dHJhLnBpZS5vZmZzZXRBbmdsZSl7XHJcbiAgICAgIGFuZ2xlID0gYW5nbGUgLSBvcHRzLmV4dHJhLnBpZS5vZmZzZXRBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICB9XHJcbiAgICBpZihvcHRzLmV4dHJhLnJpbmcgJiYgb3B0cy5leHRyYS5yaW5nLm9mZnNldEFuZ2xlKXtcclxuICAgICAgYW5nbGUgPSBhbmdsZSAtIG9wdHMuZXh0cmEucmluZy5vZmZzZXRBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc2VyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGlmIChpc0luQW5nbGVSYW5nZShhbmdsZSwgc2VyaWVzW2ldLl9zdGFydF8sIHNlcmllc1tpXS5fc3RhcnRfICsgc2VyaWVzW2ldLl9wcm9wb3J0aW9uXyAqIDIgKiBNYXRoLlBJKSkge1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNJbkV4YWN0UGllQ2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIGNlbnRlciwgcmFkaXVzKSB7XHJcbiAgcmV0dXJuIE1hdGgucG93KGN1cnJlbnRQb2ludHMueCAtIGNlbnRlci54LCAyKSArIE1hdGgucG93KGN1cnJlbnRQb2ludHMueSAtIGNlbnRlci55LCAyKSA8PSBNYXRoLnBvdyhyYWRpdXMsIDIpO1xyXG59XHJcblxyXG5cclxuZnVuY3Rpb24gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpIHtcclxuICB2YXIgbmV3UG9pbnRzID0gW107XHJcbiAgdmFyIGl0ZW1zID0gW107XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmKGVhY2hTZXJpZXMuY29ubmVjdE51bGxzKXtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIG5ld1BvaW50cy5wdXNoKGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgfSk7XHJcbiAgaWYgKGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgbmV3UG9pbnRzLnB1c2goaXRlbXMpO1xyXG4gIH1cclxuICByZXR1cm4gbmV3UG9pbnRzO1xyXG59XHJcblxyXG5cclxuZnVuY3Rpb24gY2FsTGVnZW5kRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY2hhcnREYXRhLCBjb250ZXh0KSB7XHJcbiAgbGV0IGxlZ2VuZERhdGEgPSB7XHJcbiAgICBhcmVhOiB7XHJcbiAgICAgIHN0YXJ0OiB7XHJcbiAgICAgICAgeDogMCxcclxuICAgICAgICB5OiAwXHJcbiAgICAgIH0sXHJcbiAgICAgIGVuZDoge1xyXG4gICAgICAgIHg6IDAsXHJcbiAgICAgICAgeTogMFxyXG4gICAgICB9LFxyXG4gICAgICB3aWR0aDogMCxcclxuICAgICAgaGVpZ2h0OiAwLFxyXG4gICAgICB3aG9sZVdpZHRoOiAwLFxyXG4gICAgICB3aG9sZUhlaWdodDogMFxyXG4gICAgfSxcclxuICAgIHBvaW50czogW10sXHJcbiAgICB3aWR0aEFycjogW10sXHJcbiAgICBoZWlnaHRBcnI6IFtdXHJcbiAgfTtcclxuICBpZiAob3B0cy5sZWdlbmQuc2hvdyA9PT0gZmFsc2UpIHtcclxuICAgIGNoYXJ0RGF0YS5sZWdlbmREYXRhID0gbGVnZW5kRGF0YTtcclxuICAgIHJldHVybiBsZWdlbmREYXRhO1xyXG4gIH1cclxuICBsZXQgcGFkZGluZyA9IG9wdHMubGVnZW5kLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICBsZXQgbWFyZ2luID0gb3B0cy5sZWdlbmQubWFyZ2luICogb3B0cy5waXg7XHJcbiAgbGV0IGZvbnRTaXplID0gb3B0cy5sZWdlbmQuZm9udFNpemUgPyBvcHRzLmxlZ2VuZC5mb250U2l6ZSAqIG9wdHMucGl4IDogY29uZmlnLmZvbnRTaXplO1xyXG4gIGxldCBzaGFwZVdpZHRoID0gMTUgKiBvcHRzLnBpeDtcclxuICBsZXQgc2hhcGVSaWdodCA9IDUgKiBvcHRzLnBpeDtcclxuICBsZXQgbGluZUhlaWdodCA9IE1hdGgubWF4KG9wdHMubGVnZW5kLmxpbmVIZWlnaHQgKiBvcHRzLnBpeCwgZm9udFNpemUpO1xyXG4gIGlmIChvcHRzLmxlZ2VuZC5wb3NpdGlvbiA9PSAndG9wJyB8fCBvcHRzLmxlZ2VuZC5wb3NpdGlvbiA9PSAnYm90dG9tJykge1xyXG4gICAgbGV0IGxlZ2VuZExpc3QgPSBbXTtcclxuICAgIGxldCB3aWR0aENvdW50ID0gMDtcclxuICAgIGxldCB3aWR0aENvdW50QXJyID0gW107XHJcbiAgICBsZXQgY3VycmVudFJvdyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICAgIGNvbnN0IGxlZ2VuZFRleHQgPSBpdGVtLmxlZ2VuZFRleHQgPyBpdGVtLmxlZ2VuZFRleHQgOiBpdGVtLm5hbWU7XHJcbiAgICAgIGxldCBpdGVtV2lkdGggPSBzaGFwZVdpZHRoICsgc2hhcGVSaWdodCArIG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQgfHwgJ3VuZGVmaW5lZCcsIGZvbnRTaXplLCBjb250ZXh0KSArIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeDtcclxuICAgICAgaWYgKHdpZHRoQ291bnQgKyBpdGVtV2lkdGggPiBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSB7XHJcbiAgICAgICAgbGVnZW5kTGlzdC5wdXNoKGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIHdpZHRoQ291bnRBcnIucHVzaCh3aWR0aENvdW50IC0gb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4KTtcclxuICAgICAgICB3aWR0aENvdW50ID0gaXRlbVdpZHRoO1xyXG4gICAgICAgIGN1cnJlbnRSb3cgPSBbaXRlbV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2lkdGhDb3VudCArPSBpdGVtV2lkdGg7XHJcbiAgICAgICAgY3VycmVudFJvdy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY3VycmVudFJvdy5sZW5ndGgpIHtcclxuICAgICAgbGVnZW5kTGlzdC5wdXNoKGN1cnJlbnRSb3cpO1xyXG4gICAgICB3aWR0aENvdW50QXJyLnB1c2god2lkdGhDb3VudCAtIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGxlZ2VuZERhdGEud2lkdGhBcnIgPSB3aWR0aENvdW50QXJyO1xyXG4gICAgICBsZXQgbGVnZW5kV2lkdGggPSBNYXRoLm1heC5hcHBseShudWxsLCB3aWR0aENvdW50QXJyKTtcclxuICAgICAgc3dpdGNoIChvcHRzLmxlZ2VuZC5mbG9hdCkge1xyXG4gICAgICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSBvcHRzLmFyZWFbM107XHJcbiAgICAgICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnggPSBvcHRzLmFyZWFbM10gKyBsZWdlbmRXaWR0aCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gbGVnZW5kV2lkdGggLSAyICogcGFkZGluZztcclxuICAgICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSAob3B0cy53aWR0aCAtIGxlZ2VuZFdpZHRoKSAvIDIgLSBwYWRkaW5nO1xyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC54ID0gKG9wdHMud2lkdGggKyBsZWdlbmRXaWR0aCkgLyAyICsgcGFkZGluZztcclxuICAgICAgfVxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2lkdGggPSBsZWdlbmRXaWR0aCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2hvbGVXaWR0aCA9IGxlZ2VuZFdpZHRoICsgMiAqIHBhZGRpbmc7XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQgPSBsZWdlbmRMaXN0Lmxlbmd0aCAqIGxpbmVIZWlnaHQgKyAyICogcGFkZGluZztcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLndob2xlSGVpZ2h0ID0gbGVnZW5kTGlzdC5sZW5ndGggKiBsaW5lSGVpZ2h0ICsgMiAqIHBhZGRpbmcgKyAyICogbWFyZ2luO1xyXG4gICAgICBsZWdlbmREYXRhLnBvaW50cyA9IGxlZ2VuZExpc3Q7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGxldCBsZW4gPSBzZXJpZXMubGVuZ3RoO1xyXG4gICAgbGV0IG1heEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdIC0gMiAqIG1hcmdpbiAtIDIgKiBwYWRkaW5nO1xyXG4gICAgbGV0IG1heExlbmd0aCA9IE1hdGgubWluKE1hdGguZmxvb3IobWF4SGVpZ2h0IC8gbGluZUhlaWdodCksIGxlbik7XHJcbiAgICBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0ID0gbWF4TGVuZ3RoICogbGluZUhlaWdodCArIHBhZGRpbmcgKiAyO1xyXG4gICAgbGVnZW5kRGF0YS5hcmVhLndob2xlSGVpZ2h0ID0gbWF4TGVuZ3RoICogbGluZUhlaWdodCArIHBhZGRpbmcgKiAyO1xyXG4gICAgc3dpdGNoIChvcHRzLmxlZ2VuZC5mbG9hdCkge1xyXG4gICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gb3B0cy5hcmVhWzBdICsgbWFyZ2luO1xyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueSA9IG9wdHMuYXJlYVswXSArIG1hcmdpbiArIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIG1hcmdpbiAtIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQ7XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC55ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBtYXJnaW47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnkgPSAob3B0cy5oZWlnaHQgLSBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0KSAvIDI7XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC55ID0gKG9wdHMuaGVpZ2h0ICsgbGVnZW5kRGF0YS5hcmVhLmhlaWdodCkgLyAyO1xyXG4gICAgfVxyXG4gICAgbGV0IGxpbmVOdW0gPSBsZW4gJSBtYXhMZW5ndGggPT09IDAgPyBsZW4gLyBtYXhMZW5ndGggOiBNYXRoLmZsb29yKChsZW4gLyBtYXhMZW5ndGgpICsgMSk7XHJcbiAgICBsZXQgY3VycmVudFJvdyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lTnVtOyBpKyspIHtcclxuICAgICAgbGV0IHRlbXAgPSBzZXJpZXMuc2xpY2UoaSAqIG1heExlbmd0aCwgaSAqIG1heExlbmd0aCArIG1heExlbmd0aCk7XHJcbiAgICAgIGN1cnJlbnRSb3cucHVzaCh0ZW1wKTtcclxuICAgIH1cclxuICAgIGxlZ2VuZERhdGEucG9pbnRzID0gY3VycmVudFJvdztcclxuICAgIGlmIChjdXJyZW50Um93Lmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbnRSb3cubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgaXRlbSA9IGN1cnJlbnRSb3dbaV07XHJcbiAgICAgICAgbGV0IG1heFdpZHRoID0gMDtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtV2lkdGggPSBzaGFwZVdpZHRoICsgc2hhcGVSaWdodCArIG1lYXN1cmVUZXh0KGl0ZW1bal0ubmFtZSB8fCAndW5kZWZpbmVkJywgZm9udFNpemUsIGNvbnRleHQpICsgb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgaWYgKGl0ZW1XaWR0aCA+IG1heFdpZHRoKSB7XHJcbiAgICAgICAgICAgIG1heFdpZHRoID0gaXRlbVdpZHRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZWdlbmREYXRhLndpZHRoQXJyLnB1c2gobWF4V2lkdGgpO1xyXG4gICAgICAgIGxlZ2VuZERhdGEuaGVpZ2h0QXJyLnB1c2goaXRlbS5sZW5ndGggKiBsaW5lSGVpZ2h0ICsgcGFkZGluZyAqIDIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBsZWdlbmRXaWR0aCA9IDBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZWdlbmREYXRhLndpZHRoQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGVnZW5kV2lkdGggKz0gbGVnZW5kRGF0YS53aWR0aEFycltpXTtcclxuICAgICAgfVxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2lkdGggPSBsZWdlbmRXaWR0aCAtIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2hvbGVXaWR0aCA9IGxlZ2VuZERhdGEuYXJlYS53aWR0aCArIHBhZGRpbmc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN3aXRjaCAob3B0cy5sZWdlbmQucG9zaXRpb24pIHtcclxuICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gb3B0cy5hcmVhWzBdICsgbWFyZ2luO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnkgPSBvcHRzLmFyZWFbMF0gKyBtYXJnaW4gKyBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0IC0gbWFyZ2luO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIG1hcmdpbjtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSBvcHRzLmFyZWFbM107XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueCA9IG9wdHMuYXJlYVszXSArIGxlZ2VuZERhdGEuYXJlYS53aWR0aDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC54ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIGxlZ2VuZERhdGEuYXJlYS53aWR0aDtcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC54ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG4gIGNoYXJ0RGF0YS5sZWdlbmREYXRhID0gbGVnZW5kRGF0YTtcclxuICByZXR1cm4gbGVnZW5kRGF0YTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsQ2F0ZWdvcmllc0RhdGEoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBlYWNoU3BhY2luZywgY29udGV4dCkge1xyXG4gIHZhciByZXN1bHQgPSB7XHJcbiAgICBhbmdsZTogMCxcclxuICAgIHhBeGlzSGVpZ2h0OiBvcHRzLnhBeGlzLmxpbmVIZWlnaHQgKiBvcHRzLnBpeCArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXhcclxuICB9O1xyXG4gIHZhciBmb250U2l6ZSA9IG9wdHMueEF4aXMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICB2YXIgY2F0ZWdvcmllc1RleHRMZW50aCA9IGNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKGl0ZW0saW5kZXgpIHtcclxuICAgIHZhciB4aXRlbSA9IG9wdHMueEF4aXMuZm9ybWF0dGVyID8gb3B0cy54QXhpcy5mb3JtYXR0ZXIoaXRlbSxpbmRleCxvcHRzKSA6IGl0ZW07XHJcbiAgICByZXR1cm4gbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgZm9udFNpemUsIGNvbnRleHQpO1xyXG4gIH0pO1xyXG4gIHZhciBtYXhUZXh0TGVuZ3RoID0gTWF0aC5tYXguYXBwbHkodGhpcywgY2F0ZWdvcmllc1RleHRMZW50aCk7XHJcbiAgaWYgKG9wdHMueEF4aXMucm90YXRlTGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgcmVzdWx0LmFuZ2xlID0gb3B0cy54QXhpcy5yb3RhdGVBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICBsZXQgdGVtcEhlaWdodCA9IG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXggKiAyICsgIE1hdGguYWJzKG1heFRleHRMZW5ndGggKiBNYXRoLnNpbihyZXN1bHQuYW5nbGUpKVxyXG4gICAgdGVtcEhlaWdodCA9IHRlbXBIZWlnaHQgPCBmb250U2l6ZSArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXggKiAyID8gdGVtcEhlaWdodCArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXggKiAyIDogdGVtcEhlaWdodDtcclxuICAgIHJlc3VsdC54QXhpc0hlaWdodCA9IHRlbXBIZWlnaHQ7XHJcbiAgfVxyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCAmJiBvcHRzLnhBeGlzLnNjcm9sbFNob3cpIHtcclxuICAgIHJlc3VsdC54QXhpc0hlaWdodCArPSA2ICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVkKXtcclxuICAgIHJlc3VsdC54QXhpc0hlaWdodCA9IDA7XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFhBeGlzVGV4dExpc3Qoc2VyaWVzLCBvcHRzLCBjb25maWcsIHN0YWNrKSB7XHJcbiAgdmFyIGluZGV4ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAtMTtcclxuICB2YXIgZGF0YTtcclxuICBpZiAoc3RhY2sgPT0gJ3N0YWNrJykge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lU3RhY2soc2VyaWVzLCBvcHRzLmNhdGVnb3JpZXMubGVuZ3RoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lKHNlcmllcyk7XHJcbiAgfVxyXG4gIHZhciBzb3J0ZWQgPSBbXTtcclxuICAvLyByZW1vdmUgbnVsbCBmcm9tIGRhdGFcclxuICBkYXRhID0gZGF0YS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgLy9yZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoaXRlbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5JykgPiAtMSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlICE9PSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIH1cclxuICB9KTtcclxuICBkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgICAgICAgaXRlbS5tYXAoZnVuY3Rpb24oc3ViaXRlbSkge1xyXG4gICAgICAgICAgICBzb3J0ZWQucHVzaChzdWJpdGVtKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvcnRlZC5wdXNoKGl0ZW1bMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3J0ZWQucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc29ydGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgdmFyIG1pbkRhdGEgPSAwO1xyXG4gIHZhciBtYXhEYXRhID0gMDtcclxuICBpZiAoc29ydGVkLmxlbmd0aCA+IDApIHtcclxuICAgIG1pbkRhdGEgPSBNYXRoLm1pbi5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gICAgbWF4RGF0YSA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHNvcnRlZCk7XHJcbiAgfVxyXG4gIC8v5Li65LqG5YW85a65djEuOS4w5LmL5YmN55qE6aG555uuXHJcbiAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgIGlmICh0eXBlb2Ygb3B0cy54QXhpcy5kYXRhW2luZGV4XS5taW4gPT09ICdudW1iZXInKSB7XHJcbiAgICAgIG1pbkRhdGEgPSBNYXRoLm1pbihvcHRzLnhBeGlzLmRhdGFbaW5kZXhdLm1pbiwgbWluRGF0YSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIG9wdHMueEF4aXMuZGF0YVtpbmRleF0ubWF4ID09PSAnbnVtYmVyJykge1xyXG4gICAgICBtYXhEYXRhID0gTWF0aC5tYXgob3B0cy54QXhpcy5kYXRhW2luZGV4XS5tYXgsIG1heERhdGEpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdHMueEF4aXMubWluID09PSAnbnVtYmVyJykge1xyXG4gICAgICBtaW5EYXRhID0gTWF0aC5taW4ob3B0cy54QXhpcy5taW4sIG1pbkRhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvcHRzLnhBeGlzLm1heCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgbWF4RGF0YSA9IE1hdGgubWF4KG9wdHMueEF4aXMubWF4LCBtYXhEYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKG1pbkRhdGEgPT09IG1heERhdGEpIHtcclxuICAgIHZhciByYW5nZVNwYW4gPSBtYXhEYXRhIHx8IDEwO1xyXG4gICAgbWF4RGF0YSArPSByYW5nZVNwYW47XHJcbiAgfVxyXG4gIC8vdmFyIGRhdGFSYW5nZSA9IGdldERhdGFSYW5nZShtaW5EYXRhLCBtYXhEYXRhKTtcclxuICB2YXIgbWluUmFuZ2UgPSBtaW5EYXRhO1xyXG4gIHZhciBtYXhSYW5nZSA9IG1heERhdGE7XHJcbiAgdmFyIHJhbmdlID0gW107XHJcbiAgdmFyIGVhY2hSYW5nZSA9IChtYXhSYW5nZSAtIG1pblJhbmdlKSAvIG9wdHMueEF4aXMuc3BsaXROdW1iZXI7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gb3B0cy54QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICByYW5nZS5wdXNoKG1pblJhbmdlICsgZWFjaFJhbmdlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiByYW5nZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsWEF4aXNEYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgLy/loIblj6Dlm77ph43nrpdZ6L20XHJcbiAgdmFyIGNvbHVtbnN0eWxlID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiBcIlwiXHJcbiAgfSwgb3B0cy5leHRyYS5iYXIpO1xyXG4gIHZhciByZXN1bHQgPSB7XHJcbiAgICBhbmdsZTogMCxcclxuICAgIHhBeGlzSGVpZ2h0OiBvcHRzLnhBeGlzLmxpbmVIZWlnaHQgKiBvcHRzLnBpeCArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXhcclxuICB9O1xyXG4gIHJlc3VsdC5yYW5nZXMgPSBnZXRYQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb2x1bW5zdHlsZS50eXBlKTtcclxuICByZXN1bHQucmFuZ2VzRm9ybWF0ID0gcmVzdWx0LnJhbmdlcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgLy9pdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IHV0aWwudG9GaXhlZChpdGVtLCAyKTtcclxuICAgIGl0ZW0gPSB1dGlsLnRvRml4ZWQoaXRlbSwgMik7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxuICB2YXIgeEF4aXNTY2FsZVZhbHVlcyA9IHJlc3VsdC5yYW5nZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIC8vIOWmguaenOWIu+W6puWAvOaYr+a1rueCueaVsCzliJnkv53nlZnkuKTkvY3lsI/mlbBcclxuICAgIGl0ZW0gPSB1dGlsLnRvRml4ZWQoaXRlbSwgMik7XHJcbiAgICAvLyDoi6XmnInoh6rlrprkuYnmoLzlvI/liJnosIPnlKjoh6rlrprkuYnnmoTmoLzlvI/ljJblh73mlbBcclxuICAgIC8vaXRlbSA9IG9wdHMueEF4aXMuZm9ybWF0dGVyID8gb3B0cy54QXhpcy5mb3JtYXR0ZXIoTnVtYmVyKGl0ZW0pKSA6IGl0ZW07XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxuICByZXN1bHQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwgZ2V0WEF4aXNQb2ludHMoeEF4aXNTY2FsZVZhbHVlcywgb3B0cywgY29uZmlnKSk7XHJcbiAgLy8g6K6h566XWOi9tOWIu+W6pueahOWxnuaAp+itrOWmguavj+S4quWIu+W6pueahOmXtOmalCzliLvluqbnmoTotbflp4vngrlcXOe7k+adn+eCueS7peWPiuaAu+mVv1xyXG4gIHZhciBlYWNoU3BhY2luZyA9IHJlc3VsdC5lYWNoU3BhY2luZztcclxuICB2YXIgdGV4dExlbmd0aCA9IHhBeGlzU2NhbGVWYWx1ZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiBtZWFzdXJlVGV4dChpdGVtLCBvcHRzLnhBeGlzLmZvbnRTaXplICogb3B0cy5waXgsIGNvbnRleHQpO1xyXG4gIH0pO1xyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVkID09PSB0cnVlKSB7XHJcbiAgICByZXN1bHQueEF4aXNIZWlnaHQgPSAwO1xyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSYWRhckRhdGFQb2ludHMoYW5nbGVMaXN0LCBjZW50ZXIsIHJhZGl1cywgc2VyaWVzLCBvcHRzKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IDE7XHJcbiAgdmFyIHJhZGFyT3B0aW9uID0gb3B0cy5leHRyYS5yYWRhciB8fCB7fTtcclxuICByYWRhck9wdGlvbi5tYXggPSByYWRhck9wdGlvbi5tYXggfHwgMDtcclxuICB2YXIgbWF4RGF0YSA9IE1hdGgubWF4KHJhZGFyT3B0aW9uLm1heCwgTWF0aC5tYXguYXBwbHkobnVsbCwgZGF0YUNvbWJpbmUoc2VyaWVzKSkpO1xyXG4gIHZhciBkYXRhID0gW107XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBlYWNoID0gc2VyaWVzW2ldO1xyXG4gICAgbGV0IGxpc3RJdGVtID0ge307XHJcbiAgICBsaXN0SXRlbS5jb2xvciA9IGVhY2guY29sb3I7XHJcbiAgICBsaXN0SXRlbS5sZWdlbmRTaGFwZSA9IGVhY2gubGVnZW5kU2hhcGU7XHJcbiAgICBsaXN0SXRlbS5wb2ludFNoYXBlID0gZWFjaC5wb2ludFNoYXBlO1xyXG4gICAgbGlzdEl0ZW0uZGF0YSA9IFtdO1xyXG4gICAgZWFjaC5kYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgbGV0IHRtcCA9IHt9O1xyXG4gICAgICB0bXAuYW5nbGUgPSBhbmdsZUxpc3RbaW5kZXhdO1xyXG4gICAgICB0bXAucHJvcG9ydGlvbiA9IGl0ZW0gLyBtYXhEYXRhO1xyXG4gICAgICB0bXAudmFsdWUgPSBpdGVtO1xyXG4gICAgICB0bXAucG9zaXRpb24gPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgKiB0bXAucHJvcG9ydGlvbiAqIHByb2Nlc3MgKiBNYXRoLmNvcyh0bXAuYW5nbGUpLCByYWRpdXMgKiB0bXAucHJvcG9ydGlvbiAqIHByb2Nlc3MgKiBNYXRoLnNpbih0bXAuYW5nbGUpLCBjZW50ZXIpO1xyXG4gICAgICBsaXN0SXRlbS5kYXRhLnB1c2godG1wKTtcclxuICAgIH0pO1xyXG4gICAgZGF0YS5wdXNoKGxpc3RJdGVtKTtcclxuICB9XHJcbiAgcmV0dXJuIGRhdGE7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFBpZURhdGFQb2ludHMoc2VyaWVzLCByYWRpdXMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICB2YXIgY291bnQgPSAwO1xyXG4gIHZhciBfc3RhcnRfID0gMDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgY291bnQgKz0gaXRlbS5kYXRhO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgaWYgKGNvdW50ID09PSAwKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gMSAvIHNlcmllcy5sZW5ndGggKiBwcm9jZXNzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBpdGVtLmRhdGEgLyBjb3VudCAqIHByb2Nlc3M7XHJcbiAgICB9XHJcbiAgICBpdGVtLl9yYWRpdXNfID0gcmFkaXVzO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLl9zdGFydF8gPSBfc3RhcnRfO1xyXG4gICAgX3N0YXJ0XyArPSAyICogaXRlbS5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJO1xyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGdW5uZWxEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzLCBvcHRpb24sIGVhY2hTcGFjaW5nKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmKG9wdGlvbi50eXBlID09ICdmdW5uZWwnKXtcclxuICAgICAgc2VyaWVzW2ldLnJhZGl1cyA9IHNlcmllc1tpXS5kYXRhIC8gc2VyaWVzWzBdLmRhdGEgKiByYWRpdXMgKiBwcm9jZXNzO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHNlcmllc1tpXS5yYWRpdXMgPSAgKGVhY2hTcGFjaW5nICogKHNlcmllcy5sZW5ndGggLSBpKSkgLyAoZWFjaFNwYWNpbmcgKiBzZXJpZXMubGVuZ3RoKSAqIHJhZGl1cyAqIHByb2Nlc3M7XHJcbiAgICB9XHJcbiAgICBzZXJpZXNbaV0uX3Byb3BvcnRpb25fID0gc2VyaWVzW2ldLmRhdGEgLyBzZXJpZXNbMF0uZGF0YTtcclxuICB9XHJcbiAgLy8gaWYob3B0aW9uLnR5cGUgIT09ICdweXJhbWlkJyl7XHJcbiAgLy8gICBzZXJpZXMucmV2ZXJzZSgpO1xyXG4gIC8vIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSb3NlRGF0YVBvaW50cyhzZXJpZXMsIHR5cGUsIG1pblJhZGl1cywgcmFkaXVzKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIGNvdW50ID0gMDtcclxuICB2YXIgX3N0YXJ0XyA9IDA7XHJcbiAgdmFyIGRhdGFBcnIgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgY291bnQgKz0gaXRlbS5kYXRhO1xyXG4gICAgZGF0YUFyci5wdXNoKGl0ZW0uZGF0YSk7XHJcbiAgfVxyXG4gIHZhciBtaW5EYXRhID0gTWF0aC5taW4uYXBwbHkobnVsbCwgZGF0YUFycik7XHJcbiAgdmFyIG1heERhdGEgPSBNYXRoLm1heC5hcHBseShudWxsLCBkYXRhQXJyKTtcclxuICB2YXIgcmFkaXVzTGVuZ3RoID0gcmFkaXVzIC0gbWluUmFkaXVzO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBpZiAoY291bnQgPT09IDApIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uZGF0YSAvIGNvdW50ICogcHJvY2VzcztcclxuICAgICAgaWYodHlwZSA9PSAnYXJlYScpe1xyXG4gICAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSBpdGVtLmRhdGEgLyBjb3VudCAqIHByb2Nlc3M7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGl0ZW0uX3JhZGl1c18gPSBtaW5SYWRpdXMgKyByYWRpdXNMZW5ndGggKiAoKGl0ZW0uZGF0YSAtIG1pbkRhdGEpIC8gKG1heERhdGEgLSBtaW5EYXRhKSkgfHwgcmFkaXVzO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLl9zdGFydF8gPSBfc3RhcnRfO1xyXG4gICAgX3N0YXJ0XyArPSAyICogaXRlbS5fcm9zZV9wcm9wb3J0aW9uXyAqIE1hdGguUEk7XHJcbiAgfVxyXG4gIHJldHVybiBzZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBhcmNiYXJPcHRpb24pIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICBpZiAocHJvY2VzcyA9PSAxKSB7XHJcbiAgICBwcm9jZXNzID0gMC45OTk5OTk7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBsZXQgdG90YWxBbmdsZTtcclxuICAgIGlmIChhcmNiYXJPcHRpb24udHlwZSA9PSAnY2lyY2xlJykge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKGFyY2Jhck9wdGlvbi5kaXJlY3Rpb24gPT0gJ2Njdycpe1xyXG4gICAgICAgIGlmIChhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSA8IGFyY2Jhck9wdGlvbi5lbmRBbmdsZSkge1xyXG4gICAgICAgICAgdG90YWxBbmdsZSA9IDIgKyBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSAtIGFyY2Jhck9wdGlvbi5lbmRBbmdsZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdG90YWxBbmdsZSA9IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlIC0gYXJjYmFyT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYgKGFyY2Jhck9wdGlvbi5lbmRBbmdsZSA8IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlKSB7XHJcbiAgICAgICAgICB0b3RhbEFuZ2xlID0gMiArIGFyY2Jhck9wdGlvbi5lbmRBbmdsZSAtIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0b3RhbEFuZ2xlID0gYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgLSBhcmNiYXJPcHRpb24uZW5kQW5nbGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IHRvdGFsQW5nbGUgKiBpdGVtLmRhdGEgKiBwcm9jZXNzICsgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpZihhcmNiYXJPcHRpb24uZGlyZWN0aW9uID09ICdjY3cnKXtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSAtIHRvdGFsQW5nbGUgKiBpdGVtLmRhdGEgKiBwcm9jZXNzIDtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLl9wcm9wb3J0aW9uXyA+PSAyKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gaXRlbS5fcHJvcG9ydGlvbl8gJSAyO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRHYXVnZUFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBhcmNiYXJPcHRpb24pIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICBpZiAocHJvY2VzcyA9PSAxKSB7XHJcbiAgICBwcm9jZXNzID0gMC45OTk5OTk7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBsZXQgdG90YWxBbmdsZTtcclxuICAgIGlmIChhcmNiYXJPcHRpb24udHlwZSA9PSAnY2lyY2xlJykge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChhcmNiYXJPcHRpb24uZW5kQW5nbGUgPCBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgICAgIHRvdGFsQW5nbGUgPSAyICsgYXJjYmFyT3B0aW9uLmVuZEFuZ2xlIC0gYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdG90YWxBbmdsZSA9IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlIC0gYXJjYmFyT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IHRvdGFsQW5nbGUgKiBpdGVtLmRhdGEgKiBwcm9jZXNzICsgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpZiAoaXRlbS5fcHJvcG9ydGlvbl8gPj0gMikge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uX3Byb3BvcnRpb25fICUgMjtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0R2F1Z2VBeGlzUG9pbnRzKGNhdGVnb3JpZXMsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XHJcbiAgbGV0IHRvdGFsQW5nbGU7XHJcbiAgaWYgKGVuZEFuZ2xlIDwgc3RhcnRBbmdsZSkge1xyXG4gICAgdG90YWxBbmdsZSA9IDIgKyBlbmRBbmdsZSAtIHN0YXJ0QW5nbGU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdGFsQW5nbGUgPSBzdGFydEFuZ2xlIC0gZW5kQW5nbGU7XHJcbiAgfVxyXG4gIGxldCB0ZW1wU3RhcnRBbmdsZSA9IHN0YXJ0QW5nbGU7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjYXRlZ29yaWVzW2ldLnZhbHVlID0gY2F0ZWdvcmllc1tpXS52YWx1ZSA9PT0gbnVsbCA/IDAgOiBjYXRlZ29yaWVzW2ldLnZhbHVlO1xyXG4gICAgY2F0ZWdvcmllc1tpXS5fc3RhcnRBbmdsZV8gPSB0ZW1wU3RhcnRBbmdsZTtcclxuICAgIGNhdGVnb3JpZXNbaV0uX2VuZEFuZ2xlXyA9IHRvdGFsQW5nbGUgKiBjYXRlZ29yaWVzW2ldLnZhbHVlICsgc3RhcnRBbmdsZTtcclxuICAgIGlmIChjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gPj0gMikge1xyXG4gICAgICBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gPSBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gJSAyO1xyXG4gICAgfVxyXG4gICAgdGVtcFN0YXJ0QW5nbGUgPSBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV87XHJcbiAgfVxyXG4gIHJldHVybiBjYXRlZ29yaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRHYXVnZURhdGFQb2ludHMoc2VyaWVzLCBjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbikge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAxO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBpZiAoZ2F1Z2VPcHRpb24ucG9pbnRlci5jb2xvciA9PSAnYXV0bycpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZGF0YSA8PSBjYXRlZ29yaWVzW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICBpdGVtLmNvbG9yID0gY2F0ZWdvcmllc1tpXS5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5jb2xvciA9IGdhdWdlT3B0aW9uLnBvaW50ZXIuY29sb3I7XHJcbiAgICB9XHJcbiAgICBsZXQgdG90YWxBbmdsZTtcclxuICAgIGlmIChnYXVnZU9wdGlvbi5lbmRBbmdsZSA8IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUpIHtcclxuICAgICAgdG90YWxBbmdsZSA9IDIgKyBnYXVnZU9wdGlvbi5lbmRBbmdsZSAtIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSAtIGdhdWdlT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgfVxyXG4gICAgaXRlbS5fZW5kQW5nbGVfID0gdG90YWxBbmdsZSAqIGl0ZW0uZGF0YSArIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpdGVtLl9vbGRBbmdsZV8gPSBnYXVnZU9wdGlvbi5vbGRBbmdsZTtcclxuICAgIGlmIChnYXVnZU9wdGlvbi5vbGRBbmdsZSA8IGdhdWdlT3B0aW9uLmVuZEFuZ2xlKSB7XHJcbiAgICAgIGl0ZW0uX29sZEFuZ2xlXyArPSAyO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uZGF0YSA+PSBnYXVnZU9wdGlvbi5vbGREYXRhKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gKGl0ZW0uX2VuZEFuZ2xlXyAtIGl0ZW0uX29sZEFuZ2xlXykgKiBwcm9jZXNzICsgZ2F1Z2VPcHRpb24ub2xkQW5nbGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uX29sZEFuZ2xlXyAtIChpdGVtLl9vbGRBbmdsZV8gLSBpdGVtLl9lbmRBbmdsZV8pICogcHJvY2VzcztcclxuICAgIH1cclxuICAgIGlmIChpdGVtLl9wcm9wb3J0aW9uXyA+PSAyKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gaXRlbS5fcHJvcG9ydGlvbl8gJSAyO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRQaWVUZXh0TWF4TGVuZ3RoKHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgc2VyaWVzID0gZ2V0UGllRGF0YVBvaW50cyhzZXJpZXMpO1xyXG4gIGxldCBtYXhMZW5ndGggPSAwO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGxldCB0ZXh0ID0gaXRlbS5mb3JtYXR0ZXIgPyBpdGVtLmZvcm1hdHRlcigraXRlbS5fcHJvcG9ydGlvbl8udG9GaXhlZCgyKSkgOiB1dGlsLnRvRml4ZWQoaXRlbS5fcHJvcG9ydGlvbl8gKiAxMDApICsgJyUnO1xyXG4gICAgbWF4TGVuZ3RoID0gTWF0aC5tYXgobWF4TGVuZ3RoLCBtZWFzdXJlVGV4dCh0ZXh0LCBpdGVtLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KSk7XHJcbiAgfVxyXG4gIHJldHVybiBtYXhMZW5ndGg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpeENvbHVtZURhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgY29sdW1uTGVuLCBpbmRleCwgY29uZmlnLCBvcHRzKSB7XHJcbiAgcmV0dXJuIHBvaW50cy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgc2VyaWVzR2FwID0gMDtcclxuICAgIHZhciBjYXRlZ29yeUdhcCA9IDA7XHJcbiAgICBpZiAob3B0cy50eXBlID09ICdtaXgnKSB7XHJcbiAgICAgIHNlcmllc0dhcCA9IG9wdHMuZXh0cmEubWl4LmNvbHVtbi5zZXJpZXNHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgICBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEubWl4LmNvbHVtbi5jYXRlZ29yeUdhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXJpZXNHYXAgPSBvcHRzLmV4dHJhLmNvbHVtbi5zZXJpZXNHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgICBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEuY29sdW1uLmNhdGVnb3J5R2FwICogb3B0cy5waXggfHwgMDtcclxuICAgIH1cclxuICAgIHNlcmllc0dhcCA9ICBNYXRoLm1pbihzZXJpZXNHYXAsIGVhY2hTcGFjaW5nIC8gY29sdW1uTGVuKVxyXG4gICAgY2F0ZWdvcnlHYXAgPSAgTWF0aC5taW4oY2F0ZWdvcnlHYXAsIGVhY2hTcGFjaW5nIC8gY29sdW1uTGVuKVxyXG4gICAgaXRlbS53aWR0aCA9IE1hdGguY2VpbCgoZWFjaFNwYWNpbmcgLSAyICogY2F0ZWdvcnlHYXAgLSBzZXJpZXNHYXAgKiAoY29sdW1uTGVuIC0gMSkpIC8gY29sdW1uTGVuKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLm1peCAmJiBvcHRzLmV4dHJhLm1peC5jb2x1bW4ud2lkdGggJiYgK29wdHMuZXh0cmEubWl4LmNvbHVtbi53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLm1peC5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0cy5leHRyYS5jb2x1bW4gJiYgb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggJiYgK29wdHMuZXh0cmEuY29sdW1uLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEuY29sdW1uLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0ud2lkdGggPD0gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gMTtcclxuICAgIH1cclxuICAgIGl0ZW0ueCArPSAoaW5kZXggKyAwLjUgLSBjb2x1bW5MZW4gLyAyKSAqIChpdGVtLndpZHRoICsgc2VyaWVzR2FwKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhCYXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cykge1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIHNlcmllc0dhcCA9IDA7XHJcbiAgICB2YXIgY2F0ZWdvcnlHYXAgPSAwO1xyXG4gICAgc2VyaWVzR2FwID0gb3B0cy5leHRyYS5iYXIuc2VyaWVzR2FwICogb3B0cy5waXggfHwgMDtcclxuICAgIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5iYXIuY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgc2VyaWVzR2FwID0gIE1hdGgubWluKHNlcmllc0dhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBjYXRlZ29yeUdhcCA9ICBNYXRoLm1pbihjYXRlZ29yeUdhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKChlYWNoU3BhY2luZyAtIDIgKiBjYXRlZ29yeUdhcCAtIHNlcmllc0dhcCAqIChjb2x1bW5MZW4gLSAxKSkgLyBjb2x1bW5MZW4pO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEuYmFyICYmIG9wdHMuZXh0cmEuYmFyLndpZHRoICYmICtvcHRzLmV4dHJhLmJhci53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLmJhci53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLndpZHRoIDw9IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IDE7XHJcbiAgICB9XHJcbiAgICBpdGVtLnkgKz0gKGluZGV4ICsgMC41IC0gY29sdW1uTGVuIC8gMikgKiAoaXRlbS53aWR0aCArIHNlcmllc0dhcCk7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4Q29sdW1lTWV0ZXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cywgYm9yZGVyKSB7XHJcbiAgdmFyIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5jb2x1bW4uY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaXRlbS53aWR0aCA9IGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEuY29sdW1uICYmIG9wdHMuZXh0cmEuY29sdW1uLndpZHRoICYmICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCAtPSBib3JkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4Q29sdW1lU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cywgc2VyaWVzKSB7XHJcbiAgdmFyIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5jb2x1bW4uY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0sIGluZGV4bikge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLmNvbHVtbiAmJiBvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAmJiArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggPiAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSBNYXRoLm1pbihpdGVtLndpZHRoLCArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS53aWR0aCA8PSAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpeEJhclN0YWNrRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBjb2x1bW5MZW4sIGluZGV4LCBjb25maWcsIG9wdHMsIHNlcmllcykge1xyXG4gIHZhciBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEuYmFyLmNhdGVnb3J5R2FwICogb3B0cy5waXggfHwgMDtcclxuICByZXR1cm4gcG9pbnRzLm1hcChmdW5jdGlvbihpdGVtLCBpbmRleG4pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaXRlbS53aWR0aCA9IE1hdGguY2VpbChlYWNoU3BhY2luZyAtIDIgKiBjYXRlZ29yeUdhcCk7XHJcbiAgICBpZiAob3B0cy5leHRyYS5iYXIgJiYgb3B0cy5leHRyYS5iYXIud2lkdGggJiYgK29wdHMuZXh0cmEuYmFyLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEuYmFyLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0ud2lkdGggPD0gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gMTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRYQXhpc1BvaW50cyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcpIHtcclxuICB2YXIgc3BhY2luZ1ZhbGlkID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICB2YXIgZGF0YUNvdW50ID0gb3B0cy5lbmFibGVTY3JvbGwgPyBNYXRoLm1pbihvcHRzLnhBeGlzLml0ZW1Db3VudCwgY2F0ZWdvcmllcy5sZW5ndGgpIDogY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgaWYgKChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdzY2F0dGVyJyB8fCBvcHRzLnR5cGUgPT0gJ2J1YmJsZScgfHwgb3B0cy50eXBlID09ICdiYXInKSAmJiBkYXRhQ291bnQgPiAxICYmIG9wdHMueEF4aXMuYm91bmRhcnlHYXAgPT0gJ2p1c3RpZnknKSB7XHJcbiAgICBkYXRhQ291bnQgLT0gMTtcclxuICB9XHJcbiAgdmFyIHdpZHRoUmF0aW8gPSAwO1xyXG4gIGlmKG9wdHMudHlwZSA9PSAnbW91bnQnICYmIG9wdHMuZXh0cmEgJiYgb3B0cy5leHRyYS5tb3VudCAmJiBvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID4gMSl7XHJcbiAgICBpZihvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8+Mikgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID0gMlxyXG4gICAgd2lkdGhSYXRpbyA9IG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyAtIDE7XHJcbiAgICBkYXRhQ291bnQgKz0gd2lkdGhSYXRpbztcclxuICB9XHJcbiAgdmFyIGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gZGF0YUNvdW50O1xyXG4gIHZhciB4QXhpc1BvaW50cyA9IFtdO1xyXG4gIHZhciBzdGFydFggPSBvcHRzLmFyZWFbM107XHJcbiAgdmFyIGVuZFggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdO1xyXG4gIGNhdGVnb3JpZXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgeEF4aXNQb2ludHMucHVzaChzdGFydFggKyB3aWR0aFJhdGlvIC8gMiAqIGVhY2hTcGFjaW5nICsgaW5kZXggKiBlYWNoU3BhY2luZyk7XHJcbiAgfSk7XHJcbiAgaWYgKG9wdHMueEF4aXMuYm91bmRhcnlHYXAgIT09ICdqdXN0aWZ5Jykge1xyXG4gICAgaWYgKG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICAgIHhBeGlzUG9pbnRzLnB1c2goc3RhcnRYICsgd2lkdGhSYXRpbyAqIGVhY2hTcGFjaW5nICsgY2F0ZWdvcmllcy5sZW5ndGggKiBlYWNoU3BhY2luZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB4QXhpc1BvaW50cy5wdXNoKGVuZFgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgc3RhcnRYOiBzdGFydFgsXHJcbiAgICBlbmRYOiBlbmRYLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q2FuZGxlRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcG9pbnRzLnB1c2gobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgY1BvaW50cyA9IFtdO1xyXG4gICAgICBpdGVtLmZvckVhY2goZnVuY3Rpb24oaXRlbXMsIGluZGV4cykge1xyXG4gICAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF0gKyBNYXRoLnJvdW5kKGVhY2hTcGFjaW5nIC8gMik7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbXMudmFsdWUgfHwgaXRlbXM7XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICAgIGhlaWdodCAqPSBwcm9jZXNzO1xyXG4gICAgICAgIHBvaW50LnkgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoaGVpZ2h0KSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICBjUG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICB9KTtcclxuICAgICAgcG9pbnRzLnB1c2goY1BvaW50cyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIGJvdW5kYXJ5R2FwID0gJ2NlbnRlcic7XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT0gJ3NjYXR0ZXInIHx8IG9wdHMudHlwZSA9PSAnYnViYmxlJyApIHtcclxuICAgIGJvdW5kYXJ5R2FwID0gb3B0cy54QXhpcy5ib3VuZGFyeUdhcDtcclxuICB9XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciB2YWxpZFdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueCA9IHhBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpIHtcclxuICAgICAgICAgIGxldCB4cmFuZ2VzLCB4bWluUmFuZ2UsIHhtYXhSYW5nZTtcclxuICAgICAgICAgIHhyYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnJhbmdlcyk7XHJcbiAgICAgICAgICB4bWluUmFuZ2UgPSB4cmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgICAgICB4bWF4UmFuZ2UgPSB4cmFuZ2VzLnBvcCgpO1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtWzFdO1xyXG4gICAgICAgICAgcG9pbnQueCA9IG9wdHMuYXJlYVszXSArIHZhbGlkV2lkdGggKiAoaXRlbVswXSAtIHhtaW5SYW5nZSkgLyAoeG1heFJhbmdlIC0geG1pblJhbmdlKTtcclxuICAgICAgICAgIGlmKG9wdHMudHlwZSA9PSAnYnViYmxlJyl7XHJcbiAgICAgICAgICAgIHBvaW50LnIgPSBpdGVtWzJdO1xyXG4gICAgICAgICAgICBwb2ludC50ID0gaXRlbVszXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoYm91bmRhcnlHYXAgPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICBwb2ludC54ICs9IGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgIGhlaWdodCAqPSBwcm9jZXNzO1xyXG4gICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMaW5lRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBsaW5lT3B0aW9uLCBwcm9jZXNzKXtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA4ICYmIGFyZ3VtZW50c1s4XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzhdIDogMTtcclxuICB2YXIgYm91bmRhcnlHYXAgPSBvcHRzLnhBeGlzLmJvdW5kYXJ5R2FwO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICB2YXIgdmFsaWRXaWR0aCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM107XHJcbiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICBwb2ludHMucHVzaChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICBwb2ludC5jb2xvciA9IGl0ZW0uY29sb3I7XHJcbiAgICAgIGlmKGxpbmVPcHRpb24uYW5pbWF0aW9uID09ICd2ZXJ0aWNhbCcpe1xyXG4gICAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGxldCB4cmFuZ2VzLCB4bWluUmFuZ2UsIHhtYXhSYW5nZTtcclxuICAgICAgICAgICAgeHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEucmFuZ2VzKTtcclxuICAgICAgICAgICAgeG1pblJhbmdlID0geHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICAgICAgICB4bWF4UmFuZ2UgPSB4cmFuZ2VzLnBvcCgpO1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGl0ZW1bMV07XHJcbiAgICAgICAgICAgIHBvaW50LnggPSBvcHRzLmFyZWFbM10gKyB2YWxpZFdpZHRoICogKGl0ZW1bMF0gLSB4bWluUmFuZ2UpIC8gKHhtYXhSYW5nZSAtIHhtaW5SYW5nZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgcG9pbnQueCArPSBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgcG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBwb2ludC54ID0geEF4aXNQb2ludHNbMF0gKyBlYWNoU3BhY2luZyAqIGluZGV4ICogcHJvY2VzcztcclxuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgcG9pbnQueCArPSBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgcG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCB6ZXJvUG9pbnRzLCBwcm9jZXNzKXtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA4ICYmIGFyZ3VtZW50c1s4XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzhdIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIHZhbGlkV2lkdGggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdO1xyXG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcG9pbnRzLnB1c2gobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgcG9pbnQgPSB7fTtcclxuICAgICAgcG9pbnQuY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgICBwb2ludC54ID0geEF4aXNQb2ludHNbaW5kZXhdO1xyXG4gICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoaXRlbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5JykgPiAtMSkge1xyXG4gICAgICAgICAgbGV0IHhyYW5nZXMsIHhtaW5SYW5nZSwgeG1heFJhbmdlO1xyXG4gICAgICAgICAgeHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEucmFuZ2VzKTtcclxuICAgICAgICAgIHhtaW5SYW5nZSA9IHhyYW5nZXMuc2hpZnQoKTtcclxuICAgICAgICAgIHhtYXhSYW5nZSA9IHhyYW5nZXMucG9wKCk7XHJcbiAgICAgICAgICB2YWx1ZSA9IGl0ZW1bMV07XHJcbiAgICAgICAgICBwb2ludC54ID0gb3B0cy5hcmVhWzNdICsgdmFsaWRXaWR0aCAqIChpdGVtWzBdIC0geG1pblJhbmdlKSAvICh4bWF4UmFuZ2UgLSB4bWluUmFuZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHBvaW50LnggKz0gZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgKiBwcm9jZXNzIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNb3VudERhdGFQb2ludHMoc2VyaWVzLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgbW91bnRPcHRpb24sIHplcm9Qb2ludHMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA4ICYmIGFyZ3VtZW50c1s4XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzhdIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIHZhbGlkV2lkdGggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBtb3VudFdpZHRoID0gZWFjaFNwYWNpbmcgKiBtb3VudE9wdGlvbi53aWR0aFJhdGlvO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICBwb2ludHMucHVzaChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICBwb2ludC5jb2xvciA9IGl0ZW0uY29sb3I7XHJcbiAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgIHBvaW50LnggKz0gZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICB2YXIgdmFsdWUgPSBpdGVtLmRhdGE7XHJcbiAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAqIHByb2Nlc3MgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgIHBvaW50LnkgPSBvcHRzLmhlaWdodCAtIGhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgcG9pbnQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgcG9pbnQud2lkdGggPSBtb3VudFdpZHRoO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QmFyRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciB2YWxpZFdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueSA9IHlBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHQgPSB2YWxpZFdpZHRoICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICBwb2ludC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICBwb2ludC54ID0gaGVpZ2h0ICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzdGFja1Nlcmllcykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDkgJiYgYXJndW1lbnRzWzldICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbOV0gOiAxO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueCA9IHhBeGlzUG9pbnRzW2luZGV4XSArIE1hdGgucm91bmQoZWFjaFNwYWNpbmcgLyAyKTtcclxuXHJcbiAgICAgIGlmIChzZXJpZXNJbmRleCA+IDApIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNlcmllc0luZGV4OyBpKyspIHtcclxuICAgICAgICAgIHZhbHVlICs9IHN0YWNrU2VyaWVzW2ldLmRhdGFbaW5kZXhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdmFsdWUwID0gdmFsdWUgLSBpdGVtO1xyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlMCAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgICAgdmFyIGhlaWdodDAgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHRjID0gaGVpZ2h0MDtcclxuICAgICAgaGVpZ2h0ICo9IHByb2Nlc3M7XHJcbiAgICAgIGhlaWdodGMgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQueSA9IG9wdHMuaGVpZ2h0IC0gTWF0aC5yb3VuZChoZWlnaHQpIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICBwb2ludC55MCA9IG9wdHMuaGVpZ2h0IC0gTWF0aC5yb3VuZChoZWlnaHRjKSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgcG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBwb2ludHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEJhclN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc3RhY2tTZXJpZXMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA5ICYmIGFyZ3VtZW50c1s5XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzldIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueSA9IHlBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgaWYgKHNlcmllc0luZGV4ID4gMCkge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2VyaWVzSW5kZXg7IGkrKykge1xyXG4gICAgICAgICAgdmFsdWUgKz0gc3RhY2tTZXJpZXNbaV0uZGF0YVtpbmRleF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciB2YWx1ZTAgPSB2YWx1ZSAtIGl0ZW07XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICAgIHZhciBoZWlnaHQwID0gdmFsaWRIZWlnaHQgKiAodmFsdWUwIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGhlaWdodGMgPSBoZWlnaHQwO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgaGVpZ2h0YyAqPSBwcm9jZXNzO1xyXG4gICAgICBwb2ludC5oZWlnaHQgPSBoZWlnaHQgLSBoZWlnaHRjO1xyXG4gICAgICBwb2ludC54ID0gb3B0cy5hcmVhWzNdICsgaGVpZ2h0O1xyXG4gICAgICBwb2ludC54MCA9IG9wdHMuYXJlYVszXSArIGhlaWdodGM7XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRZQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBzdGFjaywgeURhdGEpIHtcclxuICB2YXIgaW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IC0xO1xyXG4gIHZhciBkYXRhO1xyXG4gIGlmIChzdGFjayA9PSAnc3RhY2snKSB7XHJcbiAgICBkYXRhID0gZGF0YUNvbWJpbmVTdGFjayhzZXJpZXMsIG9wdHMuY2F0ZWdvcmllcy5sZW5ndGgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBkYXRhID0gZGF0YUNvbWJpbmUoc2VyaWVzKTtcclxuICB9XHJcbiAgdmFyIHNvcnRlZCA9IFtdO1xyXG4gIC8vIHJlbW92ZSBudWxsIGZyb20gZGF0YVxyXG4gIGRhdGEgPSBkYXRhLmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XHJcbiAgICAvL3JldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0gIT09IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWUgIT09IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaWYgKGl0ZW0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpIHtcclxuICAgICAgICBpZiAob3B0cy50eXBlID09ICdjYW5kbGUnKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcChmdW5jdGlvbihzdWJpdGVtKSB7XHJcbiAgICAgICAgICAgIHNvcnRlZC5wdXNoKHN1Yml0ZW0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc29ydGVkLnB1c2goaXRlbVsxXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNvcnRlZC5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzb3J0ZWQucHVzaChpdGVtKTtcclxuICAgIH1cclxuICB9KVxyXG4gIHZhciBtaW5EYXRhID0geURhdGEubWluIHx8IDA7XHJcbiAgdmFyIG1heERhdGEgPSB5RGF0YS5tYXggfHwgMDtcclxuICBpZiAoc29ydGVkLmxlbmd0aCA+IDApIHtcclxuICAgIG1pbkRhdGEgPSBNYXRoLm1pbi5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gICAgbWF4RGF0YSA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHNvcnRlZCk7XHJcbiAgfVxyXG4gIGlmIChtaW5EYXRhID09PSBtYXhEYXRhKSB7XHJcbiAgICBpZihtYXhEYXRhID09IDApe1xyXG4gICAgICBtYXhEYXRhID0gMTA7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgbWluRGF0YSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHZhciBkYXRhUmFuZ2UgPSBnZXREYXRhUmFuZ2UobWluRGF0YSwgbWF4RGF0YSk7XHJcbiAgdmFyIG1pblJhbmdlID0gKHlEYXRhLm1pbiA9PT0gdW5kZWZpbmVkIHx8IHlEYXRhLm1pbiA9PT0gbnVsbCkgPyBkYXRhUmFuZ2UubWluUmFuZ2UgOiB5RGF0YS5taW47XHJcbiAgdmFyIG1heFJhbmdlID0gKHlEYXRhLm1heCA9PT0gdW5kZWZpbmVkIHx8IHlEYXRhLm1heCA9PT0gbnVsbCkgPyBkYXRhUmFuZ2UubWF4UmFuZ2UgOiB5RGF0YS5tYXg7XHJcbiAgdmFyIGVhY2hSYW5nZSA9IChtYXhSYW5nZSAtIG1pblJhbmdlKSAvIG9wdHMueUF4aXMuc3BsaXROdW1iZXI7XHJcbiAgdmFyIHJhbmdlID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gb3B0cy55QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICByYW5nZS5wdXNoKG1pblJhbmdlICsgZWFjaFJhbmdlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiByYW5nZS5yZXZlcnNlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFlBeGlzRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIC8v5aCG5Y+g5Zu+6YeN566XWei9tFxyXG4gIHZhciBjb2x1bW5zdHlsZSA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogXCJcIlxyXG4gIH0sIG9wdHMuZXh0cmEuY29sdW1uKTtcclxuICAvL+WmguaenOaYr+WkmlnovbTvvIzph43mlrDorqHnrpdcclxuICB2YXIgWUxlbmd0aCA9IG9wdHMueUF4aXMuZGF0YS5sZW5ndGg7XHJcbiAgdmFyIG5ld1NlcmllcyA9IG5ldyBBcnJheShZTGVuZ3RoKTtcclxuICBpZiAoWUxlbmd0aCA+IDApIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgWUxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1Nlcmllc1tpXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlcmllcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzZXJpZXNbal0uaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgbmV3U2VyaWVzW2ldLnB1c2goc2VyaWVzW2pdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciByYW5nZXNBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcbiAgICB2YXIgcmFuZ2VzRm9ybWF0QXJyID0gbmV3IEFycmF5KFlMZW5ndGgpO1xyXG4gICAgdmFyIHlBeGlzV2lkdGhBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBZTGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHlEYXRhID0gb3B0cy55QXhpcy5kYXRhW2ldO1xyXG4gICAgICAvL+WmguaenOaAu+W8gOWFs+S4jeaYvuekuu+8jOW8uuWItuavj+S4qlnovbTkuLrkuI3mmL7npLpcclxuICAgICAgaWYgKG9wdHMueUF4aXMuZGlzYWJsZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHlEYXRhLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZih5RGF0YS50eXBlID09PSAnY2F0ZWdvcmllcycpe1xyXG4gICAgICAgIGlmKCF5RGF0YS5mb3JtYXR0ZXIpe1xyXG4gICAgICAgICAgeURhdGEuZm9ybWF0dGVyID0gKHZhbCxpbmRleCxvcHRzKSA9PiB7cmV0dXJuIHZhbCArICh5RGF0YS51bml0IHx8ICcnKX07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHlEYXRhLmNhdGVnb3JpZXMgPSB5RGF0YS5jYXRlZ29yaWVzIHx8IG9wdHMuY2F0ZWdvcmllcztcclxuICAgICAgICByYW5nZXNBcnJbaV0gPSB5RGF0YS5jYXRlZ29yaWVzO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZigheURhdGEuZm9ybWF0dGVyKXtcclxuICAgICAgICAgIHlEYXRhLmZvcm1hdHRlciA9ICh2YWwsaW5kZXgsb3B0cykgPT4ge3JldHVybiB1dGlsLnRvRml4ZWQodmFsLCB5RGF0YS50b2ZpeCB8fCAwKSArICh5RGF0YS51bml0IHx8ICcnKX07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJhbmdlc0FycltpXSA9IGdldFlBeGlzVGV4dExpc3QobmV3U2VyaWVzW2ldLCBvcHRzLCBjb25maWcsIGNvbHVtbnN0eWxlLnR5cGUsIHlEYXRhLCBpKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgeUF4aXNGb250U2l6ZXMgPSB5RGF0YS5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgeUF4aXNXaWR0aEFycltpXSA9IHtcclxuICAgICAgICBwb3NpdGlvbjogeURhdGEucG9zaXRpb24gPyB5RGF0YS5wb3NpdGlvbiA6ICdsZWZ0JyxcclxuICAgICAgICB3aWR0aDogMFxyXG4gICAgICB9O1xyXG4gICAgICByYW5nZXNGb3JtYXRBcnJbaV0gPSByYW5nZXNBcnJbaV0ubWFwKGZ1bmN0aW9uKGl0ZW1zLGluZGV4KSB7XHJcbiAgICAgICAgaXRlbXMgPSB5RGF0YS5mb3JtYXR0ZXIoaXRlbXMsaW5kZXgsb3B0cyk7XHJcbiAgICAgICAgeUF4aXNXaWR0aEFycltpXS53aWR0aCA9IE1hdGgubWF4KHlBeGlzV2lkdGhBcnJbaV0ud2lkdGgsIG1lYXN1cmVUZXh0KGl0ZW1zLCB5QXhpc0ZvbnRTaXplcywgY29udGV4dCkgKyA1KTtcclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgY2FsaWJyYXRpb24gPSB5RGF0YS5jYWxpYnJhdGlvbiA/IDQgKiBvcHRzLnBpeCA6IDA7XHJcbiAgICAgIHlBeGlzV2lkdGhBcnJbaV0ud2lkdGggKz0gY2FsaWJyYXRpb24gKyAzICogb3B0cy5waXg7XHJcbiAgICAgIGlmICh5RGF0YS5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHlBeGlzV2lkdGhBcnJbaV0ud2lkdGggPSAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHZhciByYW5nZXNBcnIgPSBuZXcgQXJyYXkoMSk7XHJcbiAgICB2YXIgcmFuZ2VzRm9ybWF0QXJyID0gbmV3IEFycmF5KDEpO1xyXG4gICAgdmFyIHlBeGlzV2lkdGhBcnIgPSBuZXcgQXJyYXkoMSk7XHJcbiAgICBpZihvcHRzLnR5cGUgPT09ICdiYXInKXtcclxuICAgICAgcmFuZ2VzQXJyWzBdID0gb3B0cy5jYXRlZ29yaWVzO1xyXG4gICAgICBpZighb3B0cy55QXhpcy5mb3JtYXR0ZXIpe1xyXG4gICAgICAgIG9wdHMueUF4aXMuZm9ybWF0dGVyID0gKHZhbCxpbmRleCxvcHRzKSA9PiB7cmV0dXJuIHZhbCArIChvcHRzLnlBeGlzLnVuaXQgfHwgJycpfVxyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYoIW9wdHMueUF4aXMuZm9ybWF0dGVyKXtcclxuICAgICAgICBvcHRzLnlBeGlzLmZvcm1hdHRlciA9ICh2YWwsaW5kZXgsb3B0cykgPT4ge3JldHVybiB2YWwudG9GaXhlZChvcHRzLnlBeGlzLnRvZml4ICkgKyAob3B0cy55QXhpcy51bml0IHx8ICcnKX1cclxuICAgICAgfVxyXG4gICAgICByYW5nZXNBcnJbMF0gPSBnZXRZQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb2x1bW5zdHlsZS50eXBlLCB7fSk7XHJcbiAgICB9XHJcbiAgICB5QXhpc1dpZHRoQXJyWzBdID0ge1xyXG4gICAgICBwb3NpdGlvbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMFxyXG4gICAgfTtcclxuICAgIHZhciB5QXhpc0ZvbnRTaXplID0gb3B0cy55QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgIHJhbmdlc0Zvcm1hdEFyclswXSA9IHJhbmdlc0FyclswXS5tYXAoZnVuY3Rpb24oaXRlbSxpbmRleCkge1xyXG4gICAgICBpdGVtID0gb3B0cy55QXhpcy5mb3JtYXR0ZXIoaXRlbSxpbmRleCxvcHRzKTtcclxuICAgICAgeUF4aXNXaWR0aEFyclswXS53aWR0aCA9IE1hdGgubWF4KHlBeGlzV2lkdGhBcnJbMF0ud2lkdGgsIG1lYXN1cmVUZXh0KGl0ZW0sIHlBeGlzRm9udFNpemUsIGNvbnRleHQpICsgNSk7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfSk7XHJcbiAgICB5QXhpc1dpZHRoQXJyWzBdLndpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgIGlmIChvcHRzLnlBeGlzLmRpc2FibGVkID09PSB0cnVlKSB7XHJcbiAgICAgIHlBeGlzV2lkdGhBcnJbMF0gPSB7XHJcbiAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcclxuICAgICAgICB3aWR0aDogMFxyXG4gICAgICB9O1xyXG4gICAgICBvcHRzLnlBeGlzLmRhdGFbMF0gPSB7XHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdHMueUF4aXMuZGF0YVswXSA9IHtcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcclxuICAgICAgICBtYXg6IG9wdHMueUF4aXMubWF4LFxyXG4gICAgICAgIG1pbjogb3B0cy55QXhpcy5taW4sXHJcbiAgICAgICAgZm9ybWF0dGVyOiBvcHRzLnlBeGlzLmZvcm1hdHRlclxyXG4gICAgICB9O1xyXG4gICAgICBpZihvcHRzLnR5cGUgPT09ICdiYXInKXtcclxuICAgICAgICBvcHRzLnlBeGlzLmRhdGFbMF0uY2F0ZWdvcmllcyA9IG9wdHMuY2F0ZWdvcmllcztcclxuICAgICAgICBvcHRzLnlBeGlzLmRhdGFbMF0udHlwZSA9ICdjYXRlZ29yaWVzJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgcmFuZ2VzRm9ybWF0OiByYW5nZXNGb3JtYXRBcnIsXHJcbiAgICByYW5nZXM6IHJhbmdlc0FycixcclxuICAgIHlBeGlzV2lkdGg6IHlBeGlzV2lkdGhBcnJcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxUb29sdGlwWUF4aXNEYXRhKHBvaW50LCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgZWFjaFNwYWNpbmcpIHtcclxuICBsZXQgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXMpO1xyXG4gIGxldCBzcGFjaW5nVmFsaWQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBsZXQgbWluQXhpcyA9IG9wdHMuYXJlYVswXTtcclxuICBsZXQgaXRlbXMgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IG1heFZhbCA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHJhbmdlc1tpXSk7XHJcbiAgICBsZXQgbWluVmFsID0gTWF0aC5taW4uYXBwbHkodGhpcywgcmFuZ2VzW2ldKTtcclxuICAgIGxldCBpdGVtID0gbWF4VmFsIC0gKG1heFZhbCAtIG1pblZhbCkgKiAocG9pbnQgLSBtaW5BeGlzKSAvIHNwYWNpbmdWYWxpZDtcclxuICAgIGl0ZW0gPSBvcHRzLnlBeGlzLmRhdGEgJiYgb3B0cy55QXhpcy5kYXRhW2ldLmZvcm1hdHRlciA/IG9wdHMueUF4aXMuZGF0YVtpXS5mb3JtYXR0ZXIoaXRlbSwgaSwgb3B0cykgOiBpdGVtLnRvRml4ZWQoMCk7XHJcbiAgICBpdGVtcy5wdXNoKFN0cmluZyhpdGVtKSlcclxuICB9XHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxNYXJrTGluZURhdGEocG9pbnRzLCBvcHRzKSB7XHJcbiAgbGV0IG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgIHBvaW50c1tpXS55QXhpc0luZGV4ID0gcG9pbnRzW2ldLnlBeGlzSW5kZXggPyBwb2ludHNbaV0ueUF4aXNJbmRleCA6IDA7XHJcbiAgICBsZXQgcmFuZ2UgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1twb2ludHNbaV0ueUF4aXNJbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZS5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2Uuc2hpZnQoKTtcclxuICAgIGxldCBoZWlnaHQgPSBzcGFjaW5nVmFsaWQgKiAocG9pbnRzW2ldLnZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgcG9pbnRzW2ldLnkgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoaGVpZ2h0KSAtIG9wdHMuYXJlYVsyXTtcclxuICB9XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKSB7XHJcbiAgaWYgKG9wdHMucm90YXRlTG9jayAhPT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5oZWlnaHQsIDApO1xyXG4gICAgY29udGV4dC5yb3RhdGUoOTAgKiBNYXRoLlBJIC8gMTgwKTtcclxuICB9IGVsc2UgaWYgKG9wdHMuX3JvdGF0ZV8gIT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuaGVpZ2h0LCAwKTtcclxuICAgIGNvbnRleHQucm90YXRlKDkwICogTWF0aC5QSSAvIDE4MCk7XHJcbiAgICBvcHRzLl9yb3RhdGVfID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQb2ludFNoYXBlKHBvaW50cywgY29sb3IsIHNoYXBlLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZVR5cGUgPT0gJ2hvbGxvdycpIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5iYWNrZ3JvdW5kKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDIgKiBvcHRzLnBpeCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoXCIjZmZmZmZmXCIpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICB9XHJcbiAgaWYgKHNoYXBlID09PSAnZGlhbW9uZCcpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgNC41LCBpdGVtLnkpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ2NpcmNsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54ICsgMi41ICogb3B0cy5waXgsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgIGNvbnRleHQucmVjdChpdGVtLnggLSAzLjUsIGl0ZW0ueSAtIDMuNSwgNywgNyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55ICsgNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGVsc2UgaWYgKHNoYXBlID09PSAnbm9uZScpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QWN0aXZlUG9pbnQocG9pbnRzLCBjb2xvciwgc2hhcGUsIGNvbnRleHQsIG9wdHMsIG9wdGlvbiwgc2VyaWVzSW5kZXgpIHtcclxuICBpZighb3B0cy50b29sdGlwKXtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZihvcHRzLnRvb2x0aXAuZ3JvdXAubGVuZ3RoPjAgJiYgb3B0cy50b29sdGlwLmdyb3VwLmluY2x1ZGVzKHNlcmllc0luZGV4KSA9PSBmYWxzZSl7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgdmFyIHBvaW50SW5kZXggPSB0eXBlb2Ygb3B0cy50b29sdGlwLmluZGV4ID09PSAnbnVtYmVyJyA/IG9wdHMudG9vbHRpcC5pbmRleCA6IG9wdHMudG9vbHRpcC5pbmRleFtvcHRzLnRvb2x0aXAuZ3JvdXAuaW5kZXhPZihzZXJpZXNJbmRleCldO1xyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgaWYgKG9wdGlvbi5hY3RpdmVUeXBlID09ICdob2xsb3cnKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMuYmFja2dyb3VuZCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgyICogb3B0cy5waXgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFwiI2ZmZmZmZlwiKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgfVxyXG4gIGlmIChzaGFwZSA9PT0gJ2RpYW1vbmQnKSB7XHJcbiAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBwb2ludEluZGV4ID09IGluZGV4ICkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkgKyA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCArIDQuNSwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAoc2hhcGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBwb2ludEluZGV4ID09IGluZGV4KSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54ICsgMi41ICogb3B0cy5waXgsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIHBvaW50SW5kZXggPT0gaW5kZXgpIHtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLnggLSAzLjUsIGl0ZW0ueSAtIDMuNSk7XHJcbiAgICAgICAgY29udGV4dC5yZWN0KGl0ZW0ueCAtIDMuNSwgaXRlbS55IC0gMy41LCA3LCA3KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3RyaWFuZ2xlJykge1xyXG4gICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgcG9pbnRJbmRleCA9PSBpbmRleCkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgNC41LCBpdGVtLnkgKyA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ25vbmUnKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgY29udGV4dC5zdHJva2UoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JpbmdUaXRsZShvcHRzLCBjb25maWcsIGNvbnRleHQsIGNlbnRlcikge1xyXG4gIHZhciB0aXRsZWZvbnRTaXplID0gb3B0cy50aXRsZS5mb250U2l6ZSB8fCBjb25maWcudGl0bGVGb250U2l6ZTtcclxuICB2YXIgc3VidGl0bGVmb250U2l6ZSA9IG9wdHMuc3VidGl0bGUuZm9udFNpemUgfHwgY29uZmlnLnN1YnRpdGxlRm9udFNpemU7XHJcbiAgdmFyIHRpdGxlID0gb3B0cy50aXRsZS5uYW1lIHx8ICcnO1xyXG4gIHZhciBzdWJ0aXRsZSA9IG9wdHMuc3VidGl0bGUubmFtZSB8fCAnJztcclxuICB2YXIgdGl0bGVGb250Q29sb3IgPSBvcHRzLnRpdGxlLmNvbG9yIHx8IG9wdHMuZm9udENvbG9yO1xyXG4gIHZhciBzdWJ0aXRsZUZvbnRDb2xvciA9IG9wdHMuc3VidGl0bGUuY29sb3IgfHwgb3B0cy5mb250Q29sb3I7XHJcbiAgdmFyIHRpdGxlSGVpZ2h0ID0gdGl0bGUgPyB0aXRsZWZvbnRTaXplIDogMDtcclxuICB2YXIgc3VidGl0bGVIZWlnaHQgPSBzdWJ0aXRsZSA/IHN1YnRpdGxlZm9udFNpemUgOiAwO1xyXG4gIHZhciBtYXJnaW4gPSA1O1xyXG4gIGlmIChzdWJ0aXRsZSkge1xyXG4gICAgdmFyIHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KHN1YnRpdGxlLCBzdWJ0aXRsZWZvbnRTaXplICogb3B0cy5waXgsIGNvbnRleHQpO1xyXG4gICAgdmFyIHN0YXJ0WCA9IGNlbnRlci54IC0gdGV4dFdpZHRoIC8gMiArIChvcHRzLnN1YnRpdGxlLm9mZnNldFh8fCAwKSAqIG9wdHMucGl4IDtcclxuICAgIHZhciBzdGFydFkgPSBjZW50ZXIueSArIHN1YnRpdGxlZm9udFNpemUgKiBvcHRzLnBpeCAvIDIgKyAob3B0cy5zdWJ0aXRsZS5vZmZzZXRZIHx8IDApICogb3B0cy5waXg7XHJcbiAgICBpZiAodGl0bGUpIHtcclxuICAgICAgc3RhcnRZICs9ICh0aXRsZUhlaWdodCAqIG9wdHMucGl4ICsgbWFyZ2luKSAvIDI7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShzdWJ0aXRsZWZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoc3VidGl0bGVGb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChzdWJ0aXRsZSwgc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIGlmICh0aXRsZSkge1xyXG4gICAgdmFyIF90ZXh0V2lkdGggPSBtZWFzdXJlVGV4dCh0aXRsZSwgdGl0bGVmb250U2l6ZSAqIG9wdHMucGl4LCBjb250ZXh0KTtcclxuICAgIHZhciBfc3RhcnRYID0gY2VudGVyLnggLSBfdGV4dFdpZHRoIC8gMiArIChvcHRzLnRpdGxlLm9mZnNldFggfHwgMCk7XHJcbiAgICB2YXIgX3N0YXJ0WSA9IGNlbnRlci55ICsgdGl0bGVmb250U2l6ZSAqIG9wdHMucGl4IC8gMiArIChvcHRzLnRpdGxlLm9mZnNldFkgfHwgMCkgKiBvcHRzLnBpeDtcclxuICAgIGlmIChzdWJ0aXRsZSkge1xyXG4gICAgICBfc3RhcnRZIC09IChzdWJ0aXRsZUhlaWdodCAqIG9wdHMucGl4ICsgbWFyZ2luKSAvIDI7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZSh0aXRsZWZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUodGl0bGVGb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgX3N0YXJ0WCwgX3N0YXJ0WSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQb2ludFRleHQocG9pbnRzLCBzZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cykge1xyXG4gIC8vIOe7mOWItuaVsOaNruaWh+ahiFxyXG4gIHZhciBkYXRhID0gc2VyaWVzLmRhdGE7XHJcbiAgdmFyIHRleHRPZmZzZXQgPSBzZXJpZXMudGV4dE9mZnNldCA/IHNlcmllcy50ZXh0T2Zmc2V0IDogMDtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoZGF0YVtpbmRleF0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpPi0xKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdWzFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHZhciBmb3JtYXRWYWwgPSBzZXJpZXMuZm9ybWF0dGVyID8gc2VyaWVzLmZvcm1hdHRlcih2YWx1ZSxpbmRleCxzZXJpZXMsb3B0cykgOiB2YWx1ZTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLngsIGl0ZW0ueSAtIDQgKyB0ZXh0T2Zmc2V0ICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Q29sdW1lUG9pbnRUZXh0KHBvaW50cywgc2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpIHtcclxuICAvLyDnu5jliLbmlbDmja7mlofmoYhcclxuICB2YXIgZGF0YSA9IHNlcmllcy5kYXRhO1xyXG4gIHZhciB0ZXh0T2Zmc2V0ID0gc2VyaWVzLnRleHRPZmZzZXQgPyBzZXJpZXMudGV4dE9mZnNldCA6IDA7XHJcbiAgdmFyIFBvc2l0aW9uID0gb3B0cy5leHRyYS5jb2x1bW4ubGFiZWxQb3NpdGlvbjtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoZGF0YVtpbmRleF0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpPi0xKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdWzFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHZhciBmb3JtYXRWYWwgPSBzZXJpZXMuZm9ybWF0dGVyID8gc2VyaWVzLmZvcm1hdHRlcih2YWx1ZSxpbmRleCxzZXJpZXMsb3B0cykgOiB2YWx1ZTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICB2YXIgc3RhcnRZID0gaXRlbS55IC0gNCAqIG9wdHMucGl4ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4O1xyXG4gICAgICBpZihpdGVtLnkgPiBzZXJpZXMuemVyb1BvaW50cyl7XHJcbiAgICAgICAgc3RhcnRZID0gaXRlbS55ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgZm9udFNpemU7XHJcbiAgICAgIH1cclxuICAgICAgaWYoUG9zaXRpb24gPT0gJ2luc2lkZVRvcCcpe1xyXG4gICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSArIGZvbnRTaXplICsgdGV4dE9mZnNldCAqIG9wdHMucGl4O1xyXG4gICAgICAgIGlmKGl0ZW0ueSA+IHNlcmllcy56ZXJvUG9pbnRzKXtcclxuICAgICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSAtIHRleHRPZmZzZXQgKiBvcHRzLnBpeCAtIDQgKiBvcHRzLnBpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoUG9zaXRpb24gPT0gJ2NlbnRlcicpe1xyXG4gICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSArIHRleHRPZmZzZXQgKiBvcHRzLnBpeCArIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIGl0ZW0ueSArIGZvbnRTaXplKS8yO1xyXG4gICAgICAgIGlmKHNlcmllcy56ZXJvUG9pbnRzIDwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pe1xyXG4gICAgICAgICAgc3RhcnRZID0gaXRlbS55ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgKHNlcmllcy56ZXJvUG9pbnRzIC0gaXRlbS55ICsgZm9udFNpemUpLzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGl0ZW0ueSA+IHNlcmllcy56ZXJvUG9pbnRzKXtcclxuICAgICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSAtIHRleHRPZmZzZXQgKiBvcHRzLnBpeCAtIChpdGVtLnkgLSBzZXJpZXMuemVyb1BvaW50cyAtIGZvbnRTaXplKS8yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihvcHRzLmV4dHJhLmNvbHVtbi50eXBlID09ICdzdGFjaycpe1xyXG4gICAgICAgICAgc3RhcnRZID0gaXRlbS55ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgKGl0ZW0ueTAgLSBpdGVtLnkgKyBmb250U2l6ZSkvMjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoUG9zaXRpb24gPT0gJ2JvdHRvbScpe1xyXG4gICAgICAgIHN0YXJ0WSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdICsgdGV4dE9mZnNldCAqIG9wdHMucGl4IC0gNCAqIG9wdHMucGl4O1xyXG4gICAgICAgIGlmKHNlcmllcy56ZXJvUG9pbnRzIDwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pe1xyXG4gICAgICAgICAgc3RhcnRZID0gc2VyaWVzLnplcm9Qb2ludHMgKyB0ZXh0T2Zmc2V0ICogb3B0cy5waXggLSA0ICogb3B0cy5waXg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGl0ZW0ueSA+IHNlcmllcy56ZXJvUG9pbnRzKXtcclxuICAgICAgICAgIHN0YXJ0WSA9IHNlcmllcy56ZXJvUG9pbnRzIC0gdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgZm9udFNpemUgKyAyICogb3B0cy5waXg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG9wdHMuZXh0cmEuY29sdW1uLnR5cGUgPT0gJ3N0YWNrJyl7XHJcbiAgICAgICAgICBzdGFydFkgPSBpdGVtLnkwICsgdGV4dE9mZnNldCAqIG9wdHMucGl4IC0gNCAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLngsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdNb3VudFBvaW50VGV4dChwb2ludHMsIHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzLCB6ZXJvUG9pbnRzKSB7XHJcbiAgLy8g57uY5Yi25pWw5o2u5paH5qGIXHJcbiAgdmFyIGRhdGEgPSBzZXJpZXMuZGF0YTtcclxuICB2YXIgdGV4dE9mZnNldCA9IHNlcmllcy50ZXh0T2Zmc2V0ID8gc2VyaWVzLnRleHRPZmZzZXQgOiAwO1xyXG4gIHZhciBQb3NpdGlvbiA9IG9wdHMuZXh0cmEubW91bnQubGFiZWxQb3NpdGlvbjtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzW2luZGV4XS50ZXh0U2l6ZSA/IHNlcmllc1tpbmRleF0udGV4dFNpemUgKiBvcHRzLnBpeCA6IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHNlcmllc1tpbmRleF0udGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbS52YWx1ZVxyXG4gICAgICB2YXIgZm9ybWF0VmFsID0gc2VyaWVzW2luZGV4XS5mb3JtYXR0ZXIgPyBzZXJpZXNbaW5kZXhdLmZvcm1hdHRlcih2YWx1ZSxpbmRleCxzZXJpZXMsb3B0cykgOiB2YWx1ZTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICB2YXIgc3RhcnRZID0gaXRlbS55IC0gNCAqIG9wdHMucGl4ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4O1xyXG4gICAgICBpZihpdGVtLnkgPiB6ZXJvUG9pbnRzKXtcclxuICAgICAgICBzdGFydFkgPSBpdGVtLnkgKyB0ZXh0T2Zmc2V0ICogb3B0cy5waXggKyBmb250U2l6ZTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLngsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdCYXJQb2ludFRleHQocG9pbnRzLCBzZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cykge1xyXG4gIC8vIOe7mOWItuaVsOaNruaWh+ahiFxyXG4gIHZhciBkYXRhID0gc2VyaWVzLmRhdGE7XHJcbiAgdmFyIHRleHRPZmZzZXQgPSBzZXJpZXMudGV4dE9mZnNldCA/IHNlcmllcy50ZXh0T2Zmc2V0IDogMDtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlIDtcclxuICAgICAgfVxyXG4gICAgICB2YXIgZm9ybWF0VmFsID0gc2VyaWVzLmZvcm1hdHRlciA/IHNlcmllcy5mb3JtYXR0ZXIodmFsdWUsaW5kZXgsc2VyaWVzLG9wdHMpIDogdmFsdWU7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGZvcm1hdFZhbCksIGl0ZW0ueCArIDQgKiBvcHRzLnBpeCAsIGl0ZW0ueSArIGZvbnRTaXplIC8gMiAtIDMgKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0dhdWdlTGFiZWwoZ2F1Z2VPcHRpb24sIHJhZGl1cywgY2VudGVyUG9zaXRpb24sIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHJhZGl1cyAtPSBnYXVnZU9wdGlvbi53aWR0aCAvIDIgKyBnYXVnZU9wdGlvbi5sYWJlbE9mZnNldCAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgbGV0IHRvdGFsQW5nbGU7XHJcbiAgaWYgKGdhdWdlT3B0aW9uLmVuZEFuZ2xlIDwgZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgdG90YWxBbmdsZSA9IDIgKyBnYXVnZU9wdGlvbi5lbmRBbmdsZSAtIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGU7XHJcbiAgfVxyXG4gIGxldCBzcGxpdEFuZ2xlID0gdG90YWxBbmdsZSAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICBsZXQgdG90YWxOdW1iZXIgPSBnYXVnZU9wdGlvbi5lbmROdW1iZXIgLSBnYXVnZU9wdGlvbi5zdGFydE51bWJlcjtcclxuICBsZXQgc3BsaXROdW1iZXIgPSB0b3RhbE51bWJlciAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICBsZXQgbm93QW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gIGxldCBub3dOdW1iZXIgPSBnYXVnZU9wdGlvbi5zdGFydE51bWJlcjtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciArIDE7IGkrKykge1xyXG4gICAgdmFyIHBvcyA9IHtcclxuICAgICAgeDogcmFkaXVzICogTWF0aC5jb3Mobm93QW5nbGUgKiBNYXRoLlBJKSxcclxuICAgICAgeTogcmFkaXVzICogTWF0aC5zaW4obm93QW5nbGUgKiBNYXRoLlBJKVxyXG4gICAgfTtcclxuICAgIHZhciBsYWJlbFRleHQgPSBnYXVnZU9wdGlvbi5mb3JtYXR0ZXIgPyBnYXVnZU9wdGlvbi5mb3JtYXR0ZXIobm93TnVtYmVyLGksb3B0cykgOiBub3dOdW1iZXI7XHJcbiAgICBwb3MueCArPSBjZW50ZXJQb3NpdGlvbi54IC0gbWVhc3VyZVRleHQobGFiZWxUZXh0LCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpIC8gMjtcclxuICAgIHBvcy55ICs9IGNlbnRlclBvc2l0aW9uLnk7XHJcbiAgICB2YXIgc3RhcnRYID0gcG9zLng7XHJcbiAgICB2YXIgc3RhcnRZID0gcG9zLnk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ2F1Z2VPcHRpb24ubGFiZWxDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGxhYmVsVGV4dCwgc3RhcnRYLCBzdGFydFkgKyBjb25maWcuZm9udFNpemUgLyAyKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgbm93QW5nbGUgKz0gc3BsaXRBbmdsZTtcclxuICAgIGlmIChub3dBbmdsZSA+PSAyKSB7XHJcbiAgICAgIG5vd0FuZ2xlID0gbm93QW5nbGUgJSAyO1xyXG4gICAgfVxyXG4gICAgbm93TnVtYmVyICs9IHNwbGl0TnVtYmVyO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JhZGFyTGFiZWwoYW5nbGVMaXN0LCByYWRpdXMsIGNlbnRlclBvc2l0aW9uLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcmFkYXJPcHRpb24gPSBvcHRzLmV4dHJhLnJhZGFyIHx8IHt9O1xyXG4gIGFuZ2xlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGFuZ2xlLCBpbmRleCkge1xyXG4gICAgaWYocmFkYXJPcHRpb24ubGFiZWxQb2ludFNob3cgPT09IHRydWUgJiYgb3B0cy5jYXRlZ29yaWVzW2luZGV4XSAhPT0gJycpe1xyXG4gICAgICB2YXIgcG9zUG9pbnQgPSB7XHJcbiAgICAgICAgeDogcmFkaXVzICogTWF0aC5jb3MoYW5nbGUpLFxyXG4gICAgICAgIHk6IHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKVxyXG4gICAgICB9O1xyXG4gICAgICB2YXIgcG9zUG9pbnRBeGlzID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocG9zUG9pbnQueCwgcG9zUG9pbnQueSwgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShyYWRhck9wdGlvbi5sYWJlbFBvaW50Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmFyYyhwb3NQb2ludEF4aXMueCwgcG9zUG9pbnRBeGlzLnksIHJhZGFyT3B0aW9uLmxhYmVsUG9pbnRSYWRpdXMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICB9XHJcbiAgICBpZihyYWRhck9wdGlvbi5sYWJlbFNob3cgPT09IHRydWUpe1xyXG4gICAgICB2YXIgcG9zID0ge1xyXG4gICAgICAgIHg6IChyYWRpdXMgKyBjb25maWcucmFkYXJMYWJlbFRleHRNYXJnaW4gKiBvcHRzLnBpeCkgKiBNYXRoLmNvcyhhbmdsZSksXHJcbiAgICAgICAgeTogKHJhZGl1cyArIGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbiAqIG9wdHMucGl4KSAqIE1hdGguc2luKGFuZ2xlKVxyXG4gICAgICB9O1xyXG4gICAgICB2YXIgcG9zUmVsYXRpdmVDYW52YXMgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihwb3MueCwgcG9zLnksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgICAgdmFyIHN0YXJ0WCA9IHBvc1JlbGF0aXZlQ2FudmFzLng7XHJcbiAgICAgIHZhciBzdGFydFkgPSBwb3NSZWxhdGl2ZUNhbnZhcy55O1xyXG4gICAgICBpZiAodXRpbC5hcHByb3hpbWF0ZWx5RXF1YWwocG9zLngsIDApKSB7XHJcbiAgICAgICAgc3RhcnRYIC09IG1lYXN1cmVUZXh0KG9wdHMuY2F0ZWdvcmllc1tpbmRleF0gfHwgJycsIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCkgLyAyO1xyXG4gICAgICB9IGVsc2UgaWYgKHBvcy54IDwgMCkge1xyXG4gICAgICAgIHN0YXJ0WCAtPSBtZWFzdXJlVGV4dChvcHRzLmNhdGVnb3JpZXNbaW5kZXhdIHx8ICcnLCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUocmFkYXJPcHRpb24ubGFiZWxDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQob3B0cy5jYXRlZ29yaWVzW2luZGV4XSB8fCAnJywgc3RhcnRYLCBzdGFydFkgKyBjb25maWcuZm9udFNpemUgLyAyKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQaWVUZXh0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCByYWRpdXMsIGNlbnRlcikge1xyXG4gIHZhciBsaW5lUmFkaXVzID0gY29uZmlnLnBpZUNoYXJ0TGluZVBhZGRpbmc7XHJcbiAgdmFyIHRleHRPYmplY3RDb2xsZWN0aW9uID0gW107XHJcbiAgdmFyIGxhc3RUZXh0T2JqZWN0ID0gbnVsbDtcclxuICB2YXIgc2VyaWVzQ29udmVydCA9IHNlcmllcy5tYXAoZnVuY3Rpb24oaXRlbSxpbmRleCkge1xyXG4gICAgdmFyIHRleHQgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKGl0ZW0saW5kZXgsc2VyaWVzLG9wdHMpIDogdXRpbC50b0ZpeGVkKGl0ZW0uX3Byb3BvcnRpb25fLnRvRml4ZWQoNCkgKiAxMDApICsgJyUnO1xyXG4gICAgdGV4dCA9IGl0ZW0ubGFiZWxUZXh0ID8gaXRlbS5sYWJlbFRleHQgOiB0ZXh0O1xyXG4gICAgdmFyIGFyYyA9IDIgKiBNYXRoLlBJIC0gKGl0ZW0uX3N0YXJ0XyArIDIgKiBNYXRoLlBJICogaXRlbS5fcHJvcG9ydGlvbl8gLyAyKTtcclxuICAgIGlmIChpdGVtLl9yb3NlX3Byb3BvcnRpb25fKSB7XHJcbiAgICAgIGFyYyA9IDIgKiBNYXRoLlBJIC0gKGl0ZW0uX3N0YXJ0XyArIDIgKiBNYXRoLlBJICogaXRlbS5fcm9zZV9wcm9wb3J0aW9uXyAvIDIpO1xyXG4gICAgfVxyXG4gICAgdmFyIGNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgIHZhciByYWRpdXMgPSBpdGVtLl9yYWRpdXNfO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYXJjOiBhcmMsXHJcbiAgICAgIHRleHQ6IHRleHQsXHJcbiAgICAgIGNvbG9yOiBjb2xvcixcclxuICAgICAgcmFkaXVzOiByYWRpdXMsXHJcbiAgICAgIHRleHRDb2xvcjogaXRlbS50ZXh0Q29sb3IsXHJcbiAgICAgIHRleHRTaXplOiBpdGVtLnRleHRTaXplLFxyXG4gICAgICBsYWJlbFNob3c6IGl0ZW0ubGFiZWxTaG93XHJcbiAgICB9O1xyXG4gIH0pO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzQ29udmVydC5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNDb252ZXJ0W2ldO1xyXG4gICAgLy8gbGluZSBlbmRcclxuICAgIGxldCBvcmdpblgxID0gTWF0aC5jb3MoaXRlbS5hcmMpICogKGl0ZW0ucmFkaXVzICsgbGluZVJhZGl1cyk7XHJcbiAgICBsZXQgb3JnaW5ZMSA9IE1hdGguc2luKGl0ZW0uYXJjKSAqIChpdGVtLnJhZGl1cyArIGxpbmVSYWRpdXMpO1xyXG4gICAgLy8gbGluZSBzdGFydFxyXG4gICAgbGV0IG9yZ2luWDIgPSBNYXRoLmNvcyhpdGVtLmFyYykgKiBpdGVtLnJhZGl1cztcclxuICAgIGxldCBvcmdpblkyID0gTWF0aC5zaW4oaXRlbS5hcmMpICogaXRlbS5yYWRpdXM7XHJcbiAgICAvLyB0ZXh0IHN0YXJ0XHJcbiAgICBsZXQgb3JnaW5YMyA9IG9yZ2luWDEgPj0gMCA/IG9yZ2luWDEgKyBjb25maWcucGllQ2hhcnRUZXh0UGFkZGluZyA6IG9yZ2luWDEgLSBjb25maWcucGllQ2hhcnRUZXh0UGFkZGluZztcclxuICAgIGxldCBvcmdpblkzID0gb3JnaW5ZMTtcclxuICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChpdGVtLnRleHQsIGl0ZW0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpO1xyXG4gICAgbGV0IHN0YXJ0WSA9IG9yZ2luWTM7XHJcbiAgICBpZiAobGFzdFRleHRPYmplY3QgJiYgdXRpbC5pc1NhbWVYQ29vcmRpbmF0ZUFyZWEobGFzdFRleHRPYmplY3Quc3RhcnQsIHtcclxuICAgICAgICB4OiBvcmdpblgzXHJcbiAgICAgIH0pKSB7XHJcbiAgICAgIGlmIChvcmdpblgzID4gMCkge1xyXG4gICAgICAgIHN0YXJ0WSA9IE1hdGgubWluKG9yZ2luWTMsIGxhc3RUZXh0T2JqZWN0LnN0YXJ0LnkpO1xyXG4gICAgICB9IGVsc2UgaWYgKG9yZ2luWDEgPCAwKSB7XHJcbiAgICAgICAgc3RhcnRZID0gTWF0aC5tYXgob3JnaW5ZMywgbGFzdFRleHRPYmplY3Quc3RhcnQueSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG9yZ2luWTMgPiAwKSB7XHJcbiAgICAgICAgICBzdGFydFkgPSBNYXRoLm1heChvcmdpblkzLCBsYXN0VGV4dE9iamVjdC5zdGFydC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3RhcnRZID0gTWF0aC5taW4ob3JnaW5ZMywgbGFzdFRleHRPYmplY3Quc3RhcnQueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAob3JnaW5YMyA8IDApIHtcclxuICAgICAgb3JnaW5YMyAtPSB0ZXh0V2lkdGg7XHJcbiAgICB9XHJcbiAgICBsZXQgdGV4dE9iamVjdCA9IHtcclxuICAgICAgbGluZVN0YXJ0OiB7XHJcbiAgICAgICAgeDogb3JnaW5YMixcclxuICAgICAgICB5OiBvcmdpblkyXHJcbiAgICAgIH0sXHJcbiAgICAgIGxpbmVFbmQ6IHtcclxuICAgICAgICB4OiBvcmdpblgxLFxyXG4gICAgICAgIHk6IG9yZ2luWTFcclxuICAgICAgfSxcclxuICAgICAgc3RhcnQ6IHtcclxuICAgICAgICB4OiBvcmdpblgzLFxyXG4gICAgICAgIHk6IHN0YXJ0WVxyXG4gICAgICB9LFxyXG4gICAgICB3aWR0aDogdGV4dFdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGNvbmZpZy5mb250U2l6ZSxcclxuICAgICAgdGV4dDogaXRlbS50ZXh0LFxyXG4gICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgdGV4dENvbG9yOiBpdGVtLnRleHRDb2xvcixcclxuICAgICAgdGV4dFNpemU6IGl0ZW0udGV4dFNpemVcclxuICAgIH07XHJcbiAgICBsYXN0VGV4dE9iamVjdCA9IGF2b2lkQ29sbGlzaW9uKHRleHRPYmplY3QsIGxhc3RUZXh0T2JqZWN0KTtcclxuICAgIHRleHRPYmplY3RDb2xsZWN0aW9uLnB1c2gobGFzdFRleHRPYmplY3QpO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRPYmplY3RDb2xsZWN0aW9uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZihzZXJpZXNDb252ZXJ0W2ldLmxhYmVsU2hvdyA9PT0gZmFsc2Upe1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGxldCBpdGVtID0gdGV4dE9iamVjdENvbGxlY3Rpb25baV07XHJcbiAgICBsZXQgbGluZVN0YXJ0UG9pc3Rpb24gPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihpdGVtLmxpbmVTdGFydC54LCBpdGVtLmxpbmVTdGFydC55LCBjZW50ZXIpO1xyXG4gICAgbGV0IGxpbmVFbmRQb2lzdGlvbiA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKGl0ZW0ubGluZUVuZC54LCBpdGVtLmxpbmVFbmQueSwgY2VudGVyKTtcclxuICAgIGxldCB0ZXh0UG9zaXRpb24gPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihpdGVtLnN0YXJ0LngsIGl0ZW0uc3RhcnQueSwgY2VudGVyKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKGl0ZW0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgIGNvbnRleHQubW92ZVRvKGxpbmVTdGFydFBvaXN0aW9uLngsIGxpbmVTdGFydFBvaXN0aW9uLnkpO1xyXG4gICAgbGV0IGN1cnZlU3RhcnRYID0gaXRlbS5zdGFydC54IDwgMCA/IHRleHRQb3NpdGlvbi54ICsgaXRlbS53aWR0aCA6IHRleHRQb3NpdGlvbi54O1xyXG4gICAgbGV0IHRleHRTdGFydFggPSBpdGVtLnN0YXJ0LnggPCAwID8gdGV4dFBvc2l0aW9uLnggLSA1IDogdGV4dFBvc2l0aW9uLnggKyA1O1xyXG4gICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKGxpbmVFbmRQb2lzdGlvbi54LCBsaW5lRW5kUG9pc3Rpb24ueSwgY3VydmVTdGFydFgsIHRleHRQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQubW92ZVRvKGxpbmVTdGFydFBvaXN0aW9uLngsIGxpbmVTdGFydFBvaXN0aW9uLnkpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8odGV4dFBvc2l0aW9uLnggKyBpdGVtLndpZHRoLCB0ZXh0UG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjdXJ2ZVN0YXJ0WCwgdGV4dFBvc2l0aW9uLnksIDIgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udGV4dCwgdGV4dFN0YXJ0WCwgdGV4dFBvc2l0aW9uLnkgKyAzKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdUb29sVGlwU3BsaXRMaW5lKG9mZnNldFgsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gb3B0cy5leHRyYS50b29sdGlwIHx8IHt9O1xyXG4gIHRvb2xUaXBPcHRpb24uZ3JpZFR5cGUgPSB0b29sVGlwT3B0aW9uLmdyaWRUeXBlID09IHVuZGVmaW5lZCA/ICdzb2xpZCcgOiB0b29sVGlwT3B0aW9uLmdyaWRUeXBlO1xyXG4gIHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aCA9IHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aCA9PSB1bmRlZmluZWQgPyA0IDogdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoO1xyXG4gIHZhciBzdGFydFkgPSBvcHRzLmFyZWFbMF07XHJcbiAgdmFyIGVuZFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICBpZiAodG9vbFRpcE9wdGlvbi5ncmlkVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgIGNvbnRleHQuc2V0TGluZURhc2goW3Rvb2xUaXBPcHRpb24uZGFzaExlbmd0aCwgdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoXSk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodG9vbFRpcE9wdGlvbi5ncmlkQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5tb3ZlVG8ob2Zmc2V0WCwgc3RhcnRZKTtcclxuICBjb250ZXh0LmxpbmVUbyhvZmZzZXRYLCBlbmRZKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLnhBeGlzTGFiZWwpIHtcclxuICAgIGxldCBsYWJlbFRleHQgPSBvcHRzLmNhdGVnb3JpZXNbb3B0cy50b29sdGlwLmluZGV4XTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChsYWJlbFRleHQsIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICBsZXQgdGV4dFggPSBvZmZzZXRYIC0gMC41ICogdGV4dFdpZHRoO1xyXG4gICAgbGV0IHRleHRZID0gZW5kWSArIDIgKiBvcHRzLnBpeDtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmxhYmVsQmdDb2xvciB8fCBjb25maWcudG9vbFRpcEJhY2tncm91bmQsIHRvb2xUaXBPcHRpb24ubGFiZWxCZ09wYWNpdHkgfHwgY29uZmlnLnRvb2xUaXBPcGFjaXR5KSk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRvb2xUaXBPcHRpb24ubGFiZWxCZ0NvbG9yIHx8IGNvbmZpZy50b29sVGlwQmFja2dyb3VuZCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5yZWN0KHRleHRYIC0gdG9vbFRpcE9wdGlvbi5ib3hQYWRkaW5nICogb3B0cy5waXgsIHRleHRZLCB0ZXh0V2lkdGggKyAyICogdG9vbFRpcE9wdGlvbi5ib3hQYWRkaW5nICogb3B0cy5waXgsIGNvbmZpZy5mb250U2l6ZSArIDIgKiB0b29sVGlwT3B0aW9uLmJveFBhZGRpbmcgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHRvb2xUaXBPcHRpb24ubGFiZWxGb250Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcobGFiZWxUZXh0KSwgdGV4dFgsIHRleHRZICsgdG9vbFRpcE9wdGlvbi5ib3hQYWRkaW5nICogb3B0cy5waXggKyBjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IG1hcmtMaW5lT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNCxcclxuICAgIGRhdGE6IFtdXHJcbiAgfSwgb3B0cy5leHRyYS5tYXJrTGluZSk7XHJcbiAgbGV0IHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICBsZXQgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgbGV0IHBvaW50cyA9IGNhbE1hcmtMaW5lRGF0YShtYXJrTGluZU9wdGlvbi5kYXRhLCBvcHRzKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBhc3NpZ24oe30sIHtcclxuICAgICAgbGluZUNvbG9yOiAnI0RFNEE0MicsXHJcbiAgICAgIHNob3dMYWJlbDogZmFsc2UsXHJcbiAgICAgIGxhYmVsRm9udFNpemU6IDEzLFxyXG4gICAgICBsYWJlbFBhZGRpbmc6IDYsXHJcbiAgICAgIGxhYmVsRm9udENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgIGxhYmVsQmdDb2xvcjogJyNERkU4RkYnLFxyXG4gICAgICBsYWJlbEJnT3BhY2l0eTogMC44LFxyXG4gICAgICBsYWJlbEFsaWduOiAnbGVmdCcsXHJcbiAgICAgIGxhYmVsT2Zmc2V0WDogMCxcclxuICAgICAgbGFiZWxPZmZzZXRZOiAwLFxyXG4gICAgfSwgcG9pbnRzW2ldKTtcclxuICAgIGlmIChtYXJrTGluZU9wdGlvbi50eXBlID09ICdkYXNoJykge1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFttYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoLCBtYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGl0ZW0ubGluZUNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbS55KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgIGlmIChpdGVtLnNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgZm9udFNpemUgPSBpdGVtLmxhYmVsRm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgbGV0IGxhYmVsVGV4dCA9IGl0ZW0ubGFiZWxUZXh0ID8gaXRlbS5sYWJlbFRleHQgOiBpdGVtLnZhbHVlO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgbGV0IHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KGxhYmVsVGV4dCwgZm9udFNpemUsIGNvbnRleHQpO1xyXG4gICAgICBsZXQgYmdXaWR0aCA9IHRleHRXaWR0aCArIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXggKiAyO1xyXG4gICAgICBsZXQgYmdTdGFydFggPSBpdGVtLmxhYmVsQWxpZ24gPT0gJ2xlZnQnID8gb3B0cy5hcmVhWzNdIC0gYmdXaWR0aCA6IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICAgIGJnU3RhcnRYICs9IGl0ZW0ubGFiZWxPZmZzZXRYO1xyXG4gICAgICBsZXQgYmdTdGFydFkgPSBpdGVtLnkgLSAwLjUgKiBmb250U2l6ZSAtIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgIGJnU3RhcnRZICs9IGl0ZW0ubGFiZWxPZmZzZXRZO1xyXG4gICAgICBsZXQgdGV4dFggPSBiZ1N0YXJ0WCArIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgIGxldCB0ZXh0WSA9IGl0ZW0ueTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoaXRlbS5sYWJlbEJnQ29sb3IsIGl0ZW0ubGFiZWxCZ09wYWNpdHkpKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmxhYmVsQmdDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQucmVjdChiZ1N0YXJ0WCwgYmdTdGFydFksIGJnV2lkdGgsIGZvbnRTaXplICsgMiAqIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0ubGFiZWxGb250Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhsYWJlbFRleHQpLCB0ZXh0WCwgYmdTdGFydFkgKyBmb250U2l6ZSArIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXgvMik7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKSB7XHJcbiAgdmFyIHRvb2xUaXBPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGdyaWRUeXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNFxyXG4gIH0sIG9wdHMuZXh0cmEudG9vbHRpcCk7XHJcbiAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICB2YXIgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24uZ3JpZFR5cGUgPT0gJ2Rhc2gnKSB7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFt0b29sVGlwT3B0aW9uLmRhc2hMZW5ndGgsIHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aF0pO1xyXG4gIH1cclxuICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRvb2xUaXBPcHRpb24uZ3JpZENvbG9yIHx8ICcjY2NjY2NjJyk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgb3B0cy50b29sdGlwLm9mZnNldC55KTtcclxuICBjb250ZXh0LmxpbmVUbyhlbmRYLCBvcHRzLnRvb2x0aXAub2Zmc2V0LnkpO1xyXG4gIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24ueUF4aXNMYWJlbCkge1xyXG4gICAgbGV0IGJveFBhZGRpbmcgPSB0b29sVGlwT3B0aW9uLmJveFBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgIGxldCBsYWJlbFRleHQgPSBjYWxUb29sdGlwWUF4aXNEYXRhKG9wdHMudG9vbHRpcC5vZmZzZXQueSwgb3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgZWFjaFNwYWNpbmcpO1xyXG4gICAgbGV0IHdpZHRoQXJyID0gb3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnlBeGlzV2lkdGg7XHJcbiAgICBsZXQgdFN0YXJ0TGVmdCA9IG9wdHMuYXJlYVszXTtcclxuICAgIGxldCB0U3RhcnRSaWdodCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhYmVsVGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKHRvb2xUaXBPcHRpb24uZm9udFNpemUgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChsYWJlbFRleHRbaV0sIHRvb2xUaXBPcHRpb24uZm9udFNpemUgKiBvcHRzLnBpeCwgY29udGV4dCk7XHJcbiAgICAgIGxldCBiZ1N0YXJ0WCwgYmdFbmRYLCBiZ1dpZHRoO1xyXG4gICAgICBpZiAod2lkdGhBcnJbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgYmdTdGFydFggPSB0U3RhcnRMZWZ0IC0gKHRleHRXaWR0aCArIGJveFBhZGRpbmcgKiAyKSAtIDIgKiBvcHRzLnBpeDtcclxuICAgICAgICBiZ0VuZFggPSBNYXRoLm1heChiZ1N0YXJ0WCwgYmdTdGFydFggKyB0ZXh0V2lkdGggKyBib3hQYWRkaW5nICogMik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYmdTdGFydFggPSB0U3RhcnRSaWdodCArIDIgKiBvcHRzLnBpeDtcclxuICAgICAgICBiZ0VuZFggPSBNYXRoLm1heChiZ1N0YXJ0WCArIHdpZHRoQXJyW2ldLndpZHRoLCBiZ1N0YXJ0WCArIHRleHRXaWR0aCArIGJveFBhZGRpbmcgKiAyKTtcclxuICAgICAgfVxyXG4gICAgICBiZ1dpZHRoID0gYmdFbmRYIC0gYmdTdGFydFg7XHJcbiAgICAgIGxldCB0ZXh0WCA9IGJnU3RhcnRYICsgKGJnV2lkdGggLSB0ZXh0V2lkdGgpIC8gMjtcclxuICAgICAgbGV0IHRleHRZID0gb3B0cy50b29sdGlwLm9mZnNldC55O1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmxhYmVsQmdDb2xvciB8fCBjb25maWcudG9vbFRpcEJhY2tncm91bmQsIHRvb2xUaXBPcHRpb24ubGFiZWxCZ09wYWNpdHkgfHwgY29uZmlnLnRvb2xUaXBPcGFjaXR5KSk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodG9vbFRpcE9wdGlvbi5sYWJlbEJnQ29sb3IgfHwgY29uZmlnLnRvb2xUaXBCYWNrZ3JvdW5kKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5yZWN0KGJnU3RhcnRYLCB0ZXh0WSAtIDAuNSAqIGNvbmZpZy5mb250U2l6ZSAtIGJveFBhZGRpbmcsIGJnV2lkdGgsIGNvbmZpZy5mb250U2l6ZSArIDIgKiBib3hQYWRkaW5nKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUodG9vbFRpcE9wdGlvbi5sYWJlbEZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQobGFiZWxUZXh0W2ldLCB0ZXh0WCwgdGV4dFkgKyAwLjUgKiBjb25maWcuZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBpZiAod2lkdGhBcnJbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgdFN0YXJ0TGVmdCAtPSAod2lkdGhBcnJbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdFN0YXJ0UmlnaHQgKz0gd2lkdGhBcnJbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1Rvb2xUaXBTcGxpdEFyZWEob2Zmc2V0WCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBhY3RpdmVCZ0NvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBhY3RpdmVCZ09wYWNpdHk6IDAuMDgsXHJcbiAgICBhY3RpdmVXaWR0aDogZWFjaFNwYWNpbmdcclxuICB9LCBvcHRzLmV4dHJhLmNvbHVtbik7XHJcbiAgdG9vbFRpcE9wdGlvbi5hY3RpdmVXaWR0aCA9IHRvb2xUaXBPcHRpb24uYWN0aXZlV2lkdGggPiBlYWNoU3BhY2luZyA/IGVhY2hTcGFjaW5nIDogdG9vbFRpcE9wdGlvbi5hY3RpdmVXaWR0aDtcclxuICB2YXIgc3RhcnRZID0gb3B0cy5hcmVhWzBdO1xyXG4gIHZhciBlbmRZID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmFjdGl2ZUJnQ29sb3IsIHRvb2xUaXBPcHRpb24uYWN0aXZlQmdPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5yZWN0KG9mZnNldFggLSB0b29sVGlwT3B0aW9uLmFjdGl2ZVdpZHRoIC8gMiwgc3RhcnRZLCB0b29sVGlwT3B0aW9uLmFjdGl2ZVdpZHRoLCBlbmRZIC0gc3RhcnRZKTtcclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIGNvbnRleHQuZmlsbCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKFwiI0ZGRkZGRlwiKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0JhclRvb2xUaXBTcGxpdEFyZWEob2Zmc2V0WCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBhY3RpdmVCZ0NvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBhY3RpdmVCZ09wYWNpdHk6IDAuMDhcclxuICB9LCBvcHRzLmV4dHJhLmJhcik7XHJcbiAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICB2YXIgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmFjdGl2ZUJnQ29sb3IsIHRvb2xUaXBPcHRpb24uYWN0aXZlQmdPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5yZWN0KCBzdGFydFggLG9mZnNldFggLSBlYWNoU3BhY2luZyAvIDIgLCAgZW5kWCAtIHN0YXJ0WCxlYWNoU3BhY2luZyk7XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShcIiNGRkZGRkZcIik7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcCh0ZXh0TGlzdCwgb2Zmc2V0LCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBzaG93Qm94OiB0cnVlLFxyXG4gICAgc2hvd0Fycm93OiB0cnVlLFxyXG4gICAgc2hvd0NhdGVnb3J5OiBmYWxzZSxcclxuICAgIGJnQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGJnT3BhY2l0eTogMC43LFxyXG4gICAgYm9yZGVyQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGJvcmRlcldpZHRoOiAwLFxyXG4gICAgYm9yZGVyUmFkaXVzOiAwLFxyXG4gICAgYm9yZGVyT3BhY2l0eTogMC43LFxyXG4gICAgYm94UGFkZGluZzogMyxcclxuICAgIGZvbnRDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgZm9udFNpemU6IDEzLFxyXG4gICAgbGluZUhlaWdodDogMjAsXHJcbiAgICBsZWdlbmRTaG93OiB0cnVlLFxyXG4gICAgbGVnZW5kU2hhcGU6ICdhdXRvJyxcclxuICAgIHNwbGl0TGluZTogdHJ1ZSxcclxuICB9LCBvcHRzLmV4dHJhLnRvb2x0aXApO1xyXG4gIGlmKHRvb2xUaXBPcHRpb24uc2hvd0NhdGVnb3J5PT10cnVlICYmIG9wdHMuY2F0ZWdvcmllcyl7XHJcbiAgICB0ZXh0TGlzdC51bnNoaWZ0KHt0ZXh0Om9wdHMuY2F0ZWdvcmllc1tvcHRzLnRvb2x0aXAuaW5kZXhdLGNvbG9yOm51bGx9KVxyXG4gIH1cclxuICB2YXIgZm9udFNpemUgPSB0b29sVGlwT3B0aW9uLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgdmFyIGxpbmVIZWlnaHQgPSB0b29sVGlwT3B0aW9uLmxpbmVIZWlnaHQgKiBvcHRzLnBpeDtcclxuICB2YXIgYm94UGFkZGluZyA9IHRvb2xUaXBPcHRpb24uYm94UGFkZGluZyAqIG9wdHMucGl4O1xyXG4gIHZhciBsZWdlbmRXaWR0aCA9IGZvbnRTaXplO1xyXG4gIHZhciBsZWdlbmRNYXJnaW5SaWdodCA9IDUgKiBvcHRzLnBpeDtcclxuICBpZih0b29sVGlwT3B0aW9uLmxlZ2VuZFNob3cgPT0gZmFsc2Upe1xyXG4gICAgbGVnZW5kV2lkdGggPSAwO1xyXG4gICAgbGVnZW5kTWFyZ2luUmlnaHQgPSAwO1xyXG4gIH1cclxuICB2YXIgYXJyb3dXaWR0aCA9IHRvb2xUaXBPcHRpb24uc2hvd0Fycm93ID8gOCAqIG9wdHMucGl4IDogMDtcclxuICB2YXIgaXNPdmVyUmlnaHRCb3JkZXIgPSBmYWxzZTtcclxuICBpZiAob3B0cy50eXBlID09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT0gJ21vdW50JyB8fCBvcHRzLnR5cGUgPT0gJ2FyZWEnIHx8IG9wdHMudHlwZSA9PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT0gJ21peCcpIHtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNwbGl0TGluZSA9PSB0cnVlKSB7XHJcbiAgICAgIGRyYXdUb29sVGlwU3BsaXRMaW5lKG9wdHMudG9vbHRpcC5vZmZzZXQueCwgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcbiAgb2Zmc2V0ID0gYXNzaWduKHtcclxuICAgIHg6IDAsXHJcbiAgICB5OiAwXHJcbiAgfSwgb2Zmc2V0KTtcclxuICBvZmZzZXQueSAtPSA4ICogb3B0cy5waXg7XHJcbiAgdmFyIHRleHRXaWR0aCA9IHRleHRMaXN0Lm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICByZXR1cm4gbWVhc3VyZVRleHQoaXRlbS50ZXh0LCBmb250U2l6ZSwgY29udGV4dCk7XHJcbiAgfSk7XHJcbiAgdmFyIHRvb2xUaXBXaWR0aCA9IGxlZ2VuZFdpZHRoICsgbGVnZW5kTWFyZ2luUmlnaHQgKyA0ICogYm94UGFkZGluZyArIE1hdGgubWF4LmFwcGx5KG51bGwsIHRleHRXaWR0aCk7XHJcbiAgdmFyIHRvb2xUaXBIZWlnaHQgPSAyICogYm94UGFkZGluZyArIHRleHRMaXN0Lmxlbmd0aCAqIGxpbmVIZWlnaHQ7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0JveCA9PSBmYWxzZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIC8vIGlmIGJleW9uZCB0aGUgcmlnaHQgYm9yZGVyXHJcbiAgaWYgKG9mZnNldC54IC0gTWF0aC5hYnMob3B0cy5fc2Nyb2xsRGlzdGFuY2VfIHx8IDApICsgYXJyb3dXaWR0aCArIHRvb2xUaXBXaWR0aCA+IG9wdHMud2lkdGgpIHtcclxuICAgIGlzT3ZlclJpZ2h0Qm9yZGVyID0gdHJ1ZTtcclxuICB9XHJcbiAgaWYgKHRvb2xUaXBIZWlnaHQgKyBvZmZzZXQueSA+IG9wdHMuaGVpZ2h0KSB7XHJcbiAgICBvZmZzZXQueSA9IG9wdHMuaGVpZ2h0IC0gdG9vbFRpcEhlaWdodDtcclxuICB9XHJcbiAgLy8gZHJhdyBiYWNrZ3JvdW5kIHJlY3RcclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHRvb2xUaXBPcHRpb24uYmdDb2xvciwgdG9vbFRpcE9wdGlvbi5iZ09wYWNpdHkpKTtcclxuICBjb250ZXh0LnNldExpbmVXaWR0aCh0b29sVGlwT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IodG9vbFRpcE9wdGlvbi5ib3JkZXJDb2xvciwgdG9vbFRpcE9wdGlvbi5ib3JkZXJPcGFjaXR5KSk7XHJcbiAgdmFyIHJhZGl1cyA9IHRvb2xUaXBPcHRpb24uYm9yZGVyUmFkaXVzO1xyXG4gIGlmIChpc092ZXJSaWdodEJvcmRlcikge1xyXG4gICAgLy8g5aKe5Yqg5bem5L6n5LuN54S26LaF5Ye655qE5Yik5patXHJcbiAgICBpZih0b29sVGlwV2lkdGggKyBhcnJvd1dpZHRoID4gb3B0cy53aWR0aCl7XHJcbiAgICAgIG9mZnNldC54ID0gb3B0cy53aWR0aCArIE1hdGguYWJzKG9wdHMuX3Njcm9sbERpc3RhbmNlXyB8fCAwKSArIGFycm93V2lkdGggKyAodG9vbFRpcFdpZHRoIC0gb3B0cy53aWR0aClcclxuICAgIH1cclxuICAgIGlmKHRvb2xUaXBXaWR0aCA+IG9mZnNldC54KXtcclxuICAgICAgb2Zmc2V0LnggPSBvcHRzLndpZHRoICsgTWF0aC5hYnMob3B0cy5fc2Nyb2xsRGlzdGFuY2VfIHx8IDApICsgYXJyb3dXaWR0aCArICh0b29sVGlwV2lkdGggLSBvcHRzLndpZHRoKVxyXG4gICAgfVxyXG4gICAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0Fycm93KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCAtIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCAtIGFycm93V2lkdGggLSByYWRpdXMsIG9mZnNldC55ICsgdG9vbFRpcEhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLCBNYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggLSBhcnJvd1dpZHRoIC0gTWF0aC5yb3VuZCh0b29sVGlwV2lkdGgpICsgcmFkaXVzLCBvZmZzZXQueSArIHRvb2xUaXBIZWlnaHQgLSByYWRpdXMsIHJhZGl1cyxcclxuICAgICAgTWF0aC5QSSAvIDIsIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54IC0gYXJyb3dXaWR0aCAtIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSArIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEksIC1NYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggLSBhcnJvd1dpZHRoIC0gcmFkaXVzLCBvZmZzZXQueSArIHJhZGl1cywgcmFkaXVzLCAtTWF0aC5QSSAvIDIsIDAsIGZhbHNlKTtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNob3dBcnJvdykge1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCAtIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAodG9vbFRpcE9wdGlvbi5zaG93QXJyb3cpIHtcclxuICAgICAgY29udGV4dC5tb3ZlVG8ob2Zmc2V0LngsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54ICsgYXJyb3dXaWR0aCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4IC0gNSAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54ICsgYXJyb3dXaWR0aCArIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEksIC1NYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggKyBhcnJvd1dpZHRoICsgTWF0aC5yb3VuZCh0b29sVGlwV2lkdGgpIC0gcmFkaXVzLCBvZmZzZXQueSArIHJhZGl1cywgcmFkaXVzLCAtTWF0aC5QSSAvIDIsIDAsXHJcbiAgICAgIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54ICsgYXJyb3dXaWR0aCArIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSAtIHJhZGl1cywgb2Zmc2V0LnkgKyB0b29sVGlwSGVpZ2h0IC0gcmFkaXVzLCByYWRpdXMsIDAsXHJcbiAgICAgIE1hdGguUEkgLyAyLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCArIGFycm93V2lkdGggKyByYWRpdXMsIG9mZnNldC55ICsgdG9vbFRpcEhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCBNYXRoLlBJIC8gMiwgTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0Fycm93KSB7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54ICsgYXJyb3dXaWR0aCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5saW5lVG8ob2Zmc2V0LngsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24uYm9yZGVyV2lkdGggPiAwKSB7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH1cclxuICAvLyBkcmF3IGxlZ2VuZFxyXG4gIGlmKHRvb2xUaXBPcHRpb24ubGVnZW5kU2hvdyl7XHJcbiAgICB0ZXh0TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbG9yICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgICB2YXIgc3RhcnRYID0gb2Zmc2V0LnggKyBhcnJvd1dpZHRoICsgMiAqIGJveFBhZGRpbmc7XHJcbiAgICAgICAgdmFyIHN0YXJ0WSA9IG9mZnNldC55ICsgKGxpbmVIZWlnaHQgLSBmb250U2l6ZSkgLyAyICsgbGluZUhlaWdodCAqIGluZGV4ICsgYm94UGFkZGluZyArIDE7XHJcbiAgICAgICAgaWYgKGlzT3ZlclJpZ2h0Qm9yZGVyKSB7XHJcbiAgICAgICAgICBzdGFydFggPSBvZmZzZXQueCAtIHRvb2xUaXBXaWR0aCAtIGFycm93V2lkdGggKyAyICogYm94UGFkZGluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLmxlZ2VuZFNoYXBlKSB7XHJcbiAgICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDIgKiBvcHRzLnBpeCwgbGVnZW5kV2lkdGgsIDQgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAndHJpYW5nbGUnOlxyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGVnZW5kV2lkdGggLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGVnZW5kV2lkdGggKyA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAxMi41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoIC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdkaWFtb25kJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoIC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgMi41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgMTIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnY2lyY2xlJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMoc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoLCA1ICogb3B0cy5waXgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdyZWN0JzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCwgMTUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnc3F1YXJlJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgMiAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYICsgMiAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCwgMTUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICAvLyBkcmF3IHRleHQgbGlzdFxyXG4gIHRleHRMaXN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIHZhciBzdGFydFggPSBvZmZzZXQueCArIGFycm93V2lkdGggKyAyICogYm94UGFkZGluZyArIGxlZ2VuZFdpZHRoICsgbGVnZW5kTWFyZ2luUmlnaHQ7XHJcbiAgICBpZiAoaXNPdmVyUmlnaHRCb3JkZXIpIHtcclxuICAgICAgc3RhcnRYID0gb2Zmc2V0LnggLSB0b29sVGlwV2lkdGggLSBhcnJvd1dpZHRoICsgMiAqIGJveFBhZGRpbmcgKyBsZWdlbmRXaWR0aCArIGxlZ2VuZE1hcmdpblJpZ2h0O1xyXG4gICAgfVxyXG4gICAgdmFyIHN0YXJ0WSA9IG9mZnNldC55ICsgbGluZUhlaWdodCAqIGluZGV4ICsgKGxpbmVIZWlnaHQgLSBmb250U2l6ZSkvMiAtIDEgKyBib3hQYWRkaW5nICsgZm9udFNpemU7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldFRleHRCYXNlbGluZSgnbm9ybWFsJyk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZSh0b29sVGlwT3B0aW9uLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udGV4dCwgc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdDb2x1bW5EYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2dyb3VwJyxcclxuICAgIHdpZHRoOiBlYWNoU3BhY2luZyAvIDIsXHJcbiAgICBtZXRlckJvcmRlcjogNCxcclxuICAgIG1ldGVyRmlsbENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBiYXJCb3JkZXJDaXJjbGU6IGZhbHNlLFxyXG4gICAgYmFyQm9yZGVyUmFkaXVzOiBbXSxcclxuICAgIHNlcmllc0dhcDogMixcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGxpbmVhck9wYWNpdHk6IDEsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgICBjb2xvclN0b3A6IDAsXHJcbiAgICBsYWJlbFBvc2l0aW9uOiAnb3V0c2lkZSdcclxuICB9LCBvcHRzLmV4dHJhLmNvbHVtbik7XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gIH1cclxuICBpZiAob3B0cy50b29sdGlwICYmIG9wdHMudG9vbHRpcC50ZXh0TGlzdCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QubGVuZ3RoICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdUb29sVGlwU3BsaXRBcmVhKG9wdHMudG9vbHRpcC5vZmZzZXQueCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZyk7XHJcbiAgfVxyXG4gIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihjb2x1bW5PcHRpb24ubGluZWFyVHlwZSwgY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgIFxyXG4gICAgLy8g6K6h566XMOi9tOWdkOagh1xyXG4gICAgbGV0IHNwYWNpbmdWYWxpZCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgbGV0IHplcm9IZWlnaHQgPSBzcGFjaW5nVmFsaWQgKiAoMCAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgIGxldCB6ZXJvUG9pbnRzID0gb3B0cy5oZWlnaHQgLSBNYXRoLnJvdW5kKHplcm9IZWlnaHQpIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgZWFjaFNlcmllcy56ZXJvUG9pbnRzID0gemVyb1BvaW50cztcclxuICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgc3dpdGNoIChjb2x1bW5PcHRpb24udHlwZSkge1xyXG4gICAgICBjYXNlICdncm91cCc6XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IGdldENvbHVtbkRhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgemVyb1BvaW50cywgcHJvY2Vzcyk7XHJcbiAgICAgICAgdmFyIHRvb2x0aXBQb2ludHMgPSBnZXRTdGFja0RhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgc2VyaWVzSW5kZXgsIHNlcmllcywgcHJvY2Vzcyk7XHJcbiAgICAgICAgY2FsUG9pbnRzLnB1c2godG9vbHRpcFBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICAvL2ZpeCBpc3N1ZXMvSTI3QjFOIHl5b2luZ2UgJiBKb2VzaHVcclxuICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgICB2YXIgc3Ryb2tlQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3JcclxuICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZmlsbENvbG9yLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sIGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKGNvbHVtbk9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSxjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5ZyG6KeS6L655qGGXHJcbiAgICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzdGFydFg7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55ID4gemVyb1BvaW50cyA/IHplcm9Qb2ludHMgOiBpdGVtLnk7XHJcbiAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IE1hdGguYWJzKHplcm9Qb2ludHMgLSBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gW3dpZHRoIC8gMiwgd2lkdGggLyAyLCAwLCAwXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYoaXRlbS55ID4gemVyb1BvaW50cyl7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gWzAsIDAsd2lkdGggLyAyLCB3aWR0aCAvIDJdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgW3IwLCByMSwgcjIsIHIzXSA9IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXM7XHJcbiAgICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjE7XHJcbiAgICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgICByMCA9IHIwIDwgMCA/IDAgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgICByMyA9IHIzIDwgMCA/IDAgOiByMztcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjEsIHRvcCArIHIxLCByMSwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMiwgdG9wICsgaGVpZ2h0IC0gcjIsIHIyLCAwLCBNYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHIzLCB0b3AgKyBoZWlnaHQgLSByMywgcjMsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxKVxyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIC8vY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc3RhY2snOlxyXG4gICAgICAgIC8vIOe7mOWItuWghuWPoOaVsOaNruWbvlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXRTdGFja0RhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgc2VyaWVzSW5kZXgsIHNlcmllcywgcHJvY2Vzcyk7XHJcbiAgICAgICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVTdGFja0RhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgc2VyaWVzLmxlbmd0aCwgc2VyaWVzSW5kZXgsIGNvbmZpZywgb3B0cywgc2VyaWVzKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvcjtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGl0ZW0ueCAtIGl0ZW0ud2lkdGggLyAyICsgMTtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICB2YXIgaGVpZ2h0MCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55MCAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgaWYgKHNlcmllc0luZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgIGhlaWdodCAtPSBoZWlnaHQwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIGl0ZW0ueSwgaXRlbS53aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbWV0ZXInOlxyXG4gICAgICAgIC8vIOe7mOWItua4qeW6puiuoeaVsOaNruWbvlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lTWV0ZXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMsIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlcik7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgICAgLy/nlLvog4zmma/popzoibJcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICAgIGlmIChzZXJpZXNJbmRleCA9PSAwICYmIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHNlcmllc0luZGV4ID09IDApe1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY29sdW1uT3B0aW9uLm1ldGVyRmlsbENvbG9yKTtcclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICAgICAgaWYgKChjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzICYmIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMubGVuZ3RoID09PSA0KSB8fCBjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55O1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gemVyb1BvaW50cyAtIGl0ZW0ueTtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgPSBbd2lkdGggLyAyLCB3aWR0aCAvIDIsIDAsIDBdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IFtyMCwgcjEsIHIyLCByM10gPSBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICAgICAgcjAgPSByMCA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIwO1xyXG4gICAgICAgICAgICAgICAgcjEgPSByMSA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIxO1xyXG4gICAgICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICAgICAgcjMgPSByMyA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIzO1xyXG4gICAgICAgICAgICAgICAgcjAgPSByMCA8IDAgPyAwIDogcjA7XHJcbiAgICAgICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgICAgIHIyID0gcjIgPCAwID8gMCA6IHIyO1xyXG4gICAgICAgICAgICAgICAgcjMgPSByMyA8IDAgPyAwIDogcjM7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMSwgdG9wICsgcjEsIHIxLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjIsIHRvcCArIGhlaWdodCAtIHIyLCByMiwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHIzLCB0b3AgKyBoZWlnaHQgLSByMywgcjMsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoc2VyaWVzSW5kZXggPT0gMCAmJiBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICBzd2l0Y2ggKGNvbHVtbk9wdGlvbi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgICAgdmFyIHBvaW50cyA9IGdldENvbHVtbkRhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMpO1xyXG4gICAgICAgICAgZHJhd0NvbHVtZVBvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzdGFjayc6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NvbHVtZVBvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtZXRlcic6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDb2x1bWVQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TW91bnREYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IG1vdW50T3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnbW91bnQnLFxyXG4gICAgd2lkdGhSYXRpbzogMSxcclxuICAgIGJvcmRlcldpZHRoOiAxLFxyXG4gICAgYmFyQm9yZGVyQ2lyY2xlOiBmYWxzZSxcclxuICAgIGJhckJvcmRlclJhZGl1czogW10sXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBsaW5lYXJPcGFjaXR5OiAxLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gICAgY29sb3JTdG9wOiAwLFxyXG4gIH0sIG9wdHMuZXh0cmEubW91bnQpO1xyXG4gIG1vdW50T3B0aW9uLndpZHRoUmF0aW8gPSBtb3VudE9wdGlvbi53aWR0aFJhdGlvIDw9IDAgPyAwIDogbW91bnRPcHRpb24ud2lkdGhSYXRpbztcclxuICBtb3VudE9wdGlvbi53aWR0aFJhdGlvID0gbW91bnRPcHRpb24ud2lkdGhSYXRpbyA+PSAyID8gMiA6IG1vdW50T3B0aW9uLndpZHRoUmF0aW87XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gIH1cclxuICBtb3VudE9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihtb3VudE9wdGlvbi5saW5lYXJUeXBlLCBtb3VudE9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbMF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgXHJcbiAgICAvLyDorqHnrpcw6L205Z2Q5qCHXHJcbiAgICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgICBsZXQgemVyb0hlaWdodCA9IHNwYWNpbmdWYWxpZCAqICgwIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgbGV0IHplcm9Qb2ludHMgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoemVyb0hlaWdodCkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICBcclxuICAgIHZhciBwb2ludHMgPSBnZXRNb3VudERhdGFQb2ludHMoc2VyaWVzLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgbW91bnRPcHRpb24sIHplcm9Qb2ludHMsIHByb2Nlc3MpO1xyXG4gICAgc3dpdGNoIChtb3VudE9wdGlvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2Jhcic6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChtb3VudE9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5ZyG6KeS6L655qGGXHJcbiAgICAgICAgICAgIGlmICgobW91bnRPcHRpb24uYmFyQm9yZGVyUmFkaXVzICYmIG1vdW50T3B0aW9uLmJhckJvcmRlclJhZGl1cy5sZW5ndGggPT09IDQpIHx8IG1vdW50T3B0aW9uLmJhckJvcmRlckNpcmNsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzdGFydFg7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55ID4gemVyb1BvaW50cyA/IHplcm9Qb2ludHMgOiBpdGVtLnk7XHJcbiAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IE1hdGguYWJzKHplcm9Qb2ludHMgLSBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5iYXJCb3JkZXJDaXJjbGUpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50T3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKGl0ZW0ueSA+IHplcm9Qb2ludHMpe1xyXG4gICAgICAgICAgICAgICAgbW91bnRPcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gWzAsIDAsd2lkdGggLyAyLCB3aWR0aCAvIDJdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgW3IwLCByMSwgcjIsIHIzXSA9IG1vdW50T3B0aW9uLmJhckJvcmRlclJhZGl1cztcclxuICAgICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgICAgcjAgPSByMCA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgICAgcjMgPSByMyA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIzO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPCAwID8gMCA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICAgIHIyID0gcjIgPCAwID8gMCA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPCAwID8gMCA6IHIzO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMSwgdG9wICsgcjEsIHIxLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyB3aWR0aCAtIHIyLCB0b3AgKyBoZWlnaHQgLSByMiwgcjIsIDAsIE1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIGhlaWdodCAtIHIzLCByMywgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgemVyb1BvaW50cyk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBpZihtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0cmlhbmdsZSc6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChtb3VudE9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShzdHJva2VDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgIGlmKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoID4gMCl7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgobW91bnRPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VudCc6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChtb3VudE9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGl0ZW0ueCAtIGl0ZW0ud2lkdGgvNCwgemVyb1BvaW50cywgaXRlbS54IC0gaXRlbS53aWR0aC80LCBpdGVtLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGl0ZW0ueCArIGl0ZW0ud2lkdGgvNCwgaXRlbS55LCBpdGVtLnggKyBpdGVtLndpZHRoLzQsIHplcm9Qb2ludHMsIHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgaWYobW91bnRPcHRpb24uYm9yZGVyV2lkdGggPiAwKXtcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NoYXJwJzpcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGl0ZW0ueCAtIGVhY2hTcGFjaW5nKm1vdW50T3B0aW9uLndpZHRoUmF0aW8vMjtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICB2YXIgZmlsbENvbG9yID0gaXRlbS5jb2xvciB8fCBzZXJpZXNbaV0uY29sb3JcclxuICAgICAgICAgICAgdmFyIHN0cm9rZUNvbG9yID0gaXRlbS5jb2xvciB8fCBzZXJpZXNbaV0uY29sb3JcclxuICAgICAgICAgICAgaWYgKG1vdW50T3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHN0YXJ0WCwgaXRlbS55LCBzdGFydFgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgICAgaWYgKG1vdW50T3B0aW9uLmxpbmVhclR5cGUgPT0gJ29wYWNpdHknKSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihtb3VudE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNbaV0ubGluZWFySW5kZXhdLCBtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKG1vdW50T3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSxtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oaXRlbS54IC0gMCwgemVyb1BvaW50cyAtIGhlaWdodC80LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhpdGVtLnggKyAwLCB6ZXJvUG9pbnRzIC0gaGVpZ2h0LzQsIHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpXHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBpZihtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1swXSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgcG9pbnRzID0gZ2V0TW91bnREYXRhUG9pbnRzKHNlcmllcywgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIG1vdW50T3B0aW9uLCB6ZXJvUG9pbnRzLCBwcm9jZXNzKTtcclxuICAgIGRyYXdNb3VudFBvaW50VGV4dChwb2ludHMsIHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzLCB6ZXJvUG9pbnRzKTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogcG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICBsZXQgeUF4aXNQb2ludHMgPSBbXTtcclxuICBsZXQgZWFjaFNwYWNpbmcgPSAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pL29wdHMuY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRzLmNhdGVnb3JpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIHlBeGlzUG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgZWFjaFNwYWNpbmcgLyAyICsgZWFjaFNwYWNpbmcgKiBpKTtcclxuICB9XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2dyb3VwJyxcclxuICAgIHdpZHRoOiBlYWNoU3BhY2luZyAvIDIsXHJcbiAgICBtZXRlckJvcmRlcjogNCxcclxuICAgIG1ldGVyRmlsbENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBiYXJCb3JkZXJDaXJjbGU6IGZhbHNlLFxyXG4gICAgYmFyQm9yZGVyUmFkaXVzOiBbXSxcclxuICAgIHNlcmllc0dhcDogMixcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGxpbmVhck9wYWNpdHk6IDEsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgICBjb2xvclN0b3A6IDAsXHJcbiAgfSwgb3B0cy5leHRyYS5iYXIpO1xyXG4gIGxldCBjYWxQb2ludHMgPSBbXTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgbGVmdE51bSA9IC0yO1xyXG4gIGxldCByaWdodE51bSA9IHlBeGlzUG9pbnRzLmxlbmd0aCArIDI7XHJcbiAgaWYgKG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0Lmxlbmd0aCAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3QmFyVG9vbFRpcFNwbGl0QXJlYShvcHRzLnRvb2x0aXAub2Zmc2V0LnksIG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcpO1xyXG4gIH1cclxuICBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUsIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnJhbmdlcyk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHN3aXRjaCAoY29sdW1uT3B0aW9uLnR5cGUpIHtcclxuICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXRCYXJEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgIHZhciB0b29sdGlwUG9pbnRzID0gZ2V0QmFyU3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHRvb2x0aXBQb2ludHMpO1xyXG4gICAgICAgIHBvaW50cyA9IGZpeEJhckRhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgc2VyaWVzLmxlbmd0aCwgc2VyaWVzSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgLy9maXggaXNzdWVzL0kyN0IxTiB5eW9pbmdlICYgSm9lc2h1XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgLy92YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBvcHRzLmFyZWFbM107XHJcbiAgICAgICAgICAgIHZhciBzdGFydFkgPSBpdGVtLnkgLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IGl0ZW0uaGVpZ2h0O1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICB2YXIgZmlsbENvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHN0YXJ0WCwgaXRlbS55LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgLy/pgI/mmI7muJDlj5hcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgPT0gJ29wYWNpdHknKSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChjb2x1bW5PcHRpb24uY29sb3JTdG9wLCBoZXhUb1JnYihjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWchuinkui+ueahhlxyXG4gICAgICAgICAgICBpZiAoKGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgJiYgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cy5sZW5ndGggPT09IDQpIHx8IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJDaXJjbGUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gaXRlbS53aWR0aDtcclxuICAgICAgICAgICAgICBjb25zdCB0b3AgPSBpdGVtLnkgLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBpdGVtLmhlaWdodDtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBbcjAsIHIxLCByMiwgcjNdID0gY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cztcclxuICAgICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgICAgcjAgPSByMCA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgICAgcjMgPSByMyA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIzO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPCAwID8gMCA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICAgIHIyID0gcjIgPCAwID8gMCA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPCAwID8gMCA6IHIzO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMywgdG9wICsgcjMsIHIzLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhpdGVtLnggLSByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGl0ZW0ueCAtIHIxLCB0b3AgKyB3aWR0aCAtIHIxLCByMSwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMiwgdG9wICsgd2lkdGggLSByMiwgcjIsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBzdGFydFkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgc3RhcnRZICsgaXRlbS53aWR0aCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBzdGFydFkgKyBpdGVtLndpZHRoKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSlcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAvL2NvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3N0YWNrJzpcclxuICAgICAgICAvLyDnu5jliLbloIblj6DmlbDmja7lm75cclxuICAgICAgICB2YXIgcG9pbnRzID0gZ2V0QmFyU3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4QmFyU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMsIHNlcmllcyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3I7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLngwO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSAtIGl0ZW0ud2lkdGgvMik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBpdGVtLnkgLSBpdGVtLndpZHRoLzIsIGl0ZW0uaGVpZ2h0ICwgaXRlbS53aWR0aCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnJhbmdlcyk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgICAgc3dpdGNoIChjb2x1bW5PcHRpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2dyb3VwJzpcclxuICAgICAgICAgIHZhciBwb2ludHMgPSBnZXRCYXJEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgcG9pbnRzID0gZml4QmFyRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzKTtcclxuICAgICAgICAgIGRyYXdCYXJQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3RhY2snOlxyXG4gICAgICAgICAgdmFyIHBvaW50cyA9IGdldEJhclN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc2VyaWVzLCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdCYXJQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgeUF4aXNQb2ludHM6IHlBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Q2FuZGxlRGF0YVBvaW50cyhzZXJpZXMsIHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogMTtcclxuICB2YXIgY2FuZGxlT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBjb2xvcjoge30sXHJcbiAgICBhdmVyYWdlOiB7fVxyXG4gIH0sIG9wdHMuZXh0cmEuY2FuZGxlKTtcclxuICBjYW5kbGVPcHRpb24uY29sb3IgPSBhc3NpZ24oe30sIHtcclxuICAgIHVwTGluZTogJyNmMDQ4NjQnLFxyXG4gICAgdXBGaWxsOiAnI2YwNDg2NCcsXHJcbiAgICBkb3duTGluZTogJyMyZmMyNWInLFxyXG4gICAgZG93bkZpbGw6ICcjMmZjMjViJ1xyXG4gIH0sIGNhbmRsZU9wdGlvbi5jb2xvcik7XHJcbiAgY2FuZGxlT3B0aW9uLmF2ZXJhZ2UgPSBhc3NpZ24oe30sIHtcclxuICAgIHNob3c6IGZhbHNlLFxyXG4gICAgbmFtZTogW10sXHJcbiAgICBkYXk6IFtdLFxyXG4gICAgY29sb3I6IGNvbmZpZy5jb2xvclxyXG4gIH0sIGNhbmRsZU9wdGlvbi5hdmVyYWdlKTtcclxuICBvcHRzLmV4dHJhLmNhbmRsZSA9IGNhbmRsZU9wdGlvbjtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICBsZXQgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnROdW0gPSAtMjtcclxuICBsZXQgcmlnaHROdW0gPSB4QXhpc1BvaW50cy5sZW5ndGggKyAyO1xyXG4gIGxldCBsZWZ0U3BhY2UgPSAwO1xyXG4gIGxldCByaWdodFNwYWNlID0gb3B0cy53aWR0aCArIGVhY2hTcGFjaW5nO1xyXG4gIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8gJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfICE9PSAwICYmIG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLl9zY3JvbGxEaXN0YW5jZV8sIDApO1xyXG4gICAgbGVmdE51bSA9IE1hdGguZmxvb3IoLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAvIGVhY2hTcGFjaW5nKSAtIDI7XHJcbiAgICByaWdodE51bSA9IGxlZnROdW0gKyBvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQ7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIC8v55S75Z2H57q/XHJcbiAgaWYgKGNhbmRsZU9wdGlvbi5hdmVyYWdlLnNob3cgfHwgc2VyaWVzTUEpIHsgLy9NZXJnZSBwdWxsIHJlcXVlc3QgITEyIGZyb20g6YKx6LS157+UXHJcbiAgICBzZXJpZXNNQS5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnRzID0gc3BsaXRQb2ludExpc3RbaV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpO1xyXG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMocG9pbnRzWzBdLngsIHBvaW50c1swXS55LCAxLCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRQb2ludCA9IDA7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSwgaXRlbS54LFxyXG4gICAgICAgICAgICAgICAgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/nlLtL57q/XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgdmFyIHBvaW50cyA9IGdldENhbmRsZURhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICBjYWxQb2ludHMucHVzaChwb2ludHMpO1xyXG4gICAgdmFyIHNwbGl0UG9pbnRMaXN0ID0gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGxpdFBvaW50TGlzdFswXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBzcGxpdFBvaW50TGlzdFswXVtpXTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIC8v5aaC5p6c5LiK5raoXHJcbiAgICAgICAgaWYgKGRhdGFbaV1bMV0gLSBkYXRhW2ldWzBdID4gMCkge1xyXG4gICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShjYW5kbGVPcHRpb24uY29sb3IudXBMaW5lKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGNhbmRsZU9wdGlvbi5jb2xvci51cEZpbGwpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW1bM10ueCwgaXRlbVszXS55KTsgLy/pobbngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCwgaXRlbVsxXS55KTsgLy/mlLbnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCAtIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVsxXS55KTsgLy/mlLbnm5jlt6bkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCAtIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVswXS55KTsgLy/lvIDnm5jlt6bkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCwgaXRlbVswXS55KTsgLy/lvIDnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMl0ueCwgaXRlbVsyXS55KTsgLy/lupXngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCwgaXRlbVswXS55KTsgLy/lvIDnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCArIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVswXS55KTsgLy/lvIDnm5jlj7PkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCArIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVsxXS55KTsgLy/mlLbnm5jlj7PkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCwgaXRlbVsxXS55KTsgLy/mlLbnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW1bM10ueCwgaXRlbVszXS55KTsgLy/pobbngrlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShjYW5kbGVPcHRpb24uY29sb3IuZG93bkxpbmUpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY2FuZGxlT3B0aW9uLmNvbG9yLmRvd25GaWxsKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzJdLngsIGl0ZW1bMl0ueSk7IC8v5bqV54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdBcmVhRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBhcmVhT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnc3RyYWlnaHQnLFxyXG4gICAgb3BhY2l0eTogMC4yLFxyXG4gICAgYWRkTGluZTogZmFsc2UsXHJcbiAgICB3aWR0aDogMixcclxuICAgIGdyYWRpZW50OiBmYWxzZSxcclxuICAgIGFjdGl2ZVR5cGU6ICdub25lJ1xyXG4gIH0sIG9wdHMuZXh0cmEuYXJlYSk7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGVuZFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICBsZXQgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICBsZXQgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIGxldCBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgIGxldCBzcGxpdFBvaW50TGlzdCA9IHNwbGl0UG9pbnRzKHBvaW50cyxlYWNoU2VyaWVzKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvaW50cyA9IHNwbGl0UG9pbnRMaXN0W2ldO1xyXG4gICAgICAvLyDnu5jliLbljLrln5/mlbBcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgaWYgKGFyZWFPcHRpb24uZ3JhZGllbnQpIHtcclxuICAgICAgICBsZXQgZ3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIG9wdHMuYXJlYVswXSwgMCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMCcsIGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIGFyZWFPcHRpb24ub3BhY2l0eSkpO1xyXG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoXCIjRkZGRkZGXCIsIDAuMSkpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGdyYWRpZW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aChhcmVhT3B0aW9uLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBsZXQgZmlyc3RQb2ludCA9IHBvaW50c1swXTtcclxuICAgICAgICBsZXQgbGFzdFBvaW50ID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSAwO1xyXG4gICAgICAgIGlmIChhcmVhT3B0aW9uLnR5cGUgPT09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBsZXQgY3RybFBvaW50ID0gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaiAtIDEpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBcclxuICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RyYWlnaHQnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RlcCcpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIHBvaW50c1tqIC0gMV0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhsYXN0UG9pbnQueCwgZW5kWSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oZmlyc3RQb2ludC54LCBlbmRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbMF07XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBpdGVtLnkpO1xyXG4gICAgICAgIC8vIGNvbnRleHQubGluZVRvKGl0ZW0ueCArIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgICAvLyBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGVuZFkpO1xyXG4gICAgICAgIC8vIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgZW5kWSk7XHJcbiAgICAgICAgLy8gY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBpdGVtLnkpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAvL+eUu+i/nue6v1xyXG4gICAgICBpZiAoYXJlYU9wdGlvbi5hZGRMaW5lKSB7XHJcbiAgICAgICAgaWYgKGVhY2hTZXJpZXMubGluZVR5cGUgPT0gJ2Rhc2gnKSB7XHJcbiAgICAgICAgICBsZXQgZGFzaExlbmd0aCA9IGVhY2hTZXJpZXMuZGFzaExlbmd0aCA/IGVhY2hTZXJpZXMuZGFzaExlbmd0aCA6IDg7XHJcbiAgICAgICAgICBkYXNoTGVuZ3RoICo9IG9wdHMucGl4O1xyXG4gICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbZGFzaExlbmd0aCwgZGFzaExlbmd0aF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoYXJlYU9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIC8vIGNvbnRleHQuYXJjKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSwgMSwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSAwO1xyXG4gICAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ2N1cnZlJykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3RybFBvaW50ID0gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaiAtIDEpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RyYWlnaHQnKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RlcCcpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBwb2ludHNbaiAtIDFdLnkpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8v55S754K5XHJcbiAgICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZSAhPT0gZmFsc2UpIHtcclxuICAgICAgZHJhd1BvaW50U2hhcGUocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfVxyXG4gICAgZHJhd0FjdGl2ZVBvaW50KHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzLCBhcmVhT3B0aW9uLHNlcmllc0luZGV4KTtcclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1NjYXR0ZXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIHNjYXR0ZXJPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdjaXJjbGUnXHJcbiAgfSwgb3B0cy5leHRyYS5zY2F0dGVyKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICB2YXIgc2hhcGUgPSBlYWNoU2VyaWVzLnBvaW50U2hhcGU7XHJcbiAgICBpZiAoc2hhcGUgPT09ICdkaWFtb25kJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIDIuNSAqIG9wdHMucGl4LCBpdGVtLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgICAgY29udGV4dC5yZWN0KGl0ZW0ueCAtIDMuNSwgaXRlbS55IC0gMy41LCA3LCA3KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3RyaWFuZ2xlJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9KTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QnViYmxlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBidWJibGVPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIG9wYWNpdHk6IDEsXHJcbiAgICBib3JkZXI6MlxyXG4gIH0sIG9wdHMuZXh0cmEuYnViYmxlKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChidWJibGVPcHRpb24uYm9yZGVyICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYnViYmxlT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIGl0ZW0uciwgaXRlbS55KTtcclxuICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIGl0ZW0uciAqIG9wdHMucGl4LCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgXHJcbiAgICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIHZhciBmb250U2l6ZSA9IGVhY2hTZXJpZXMudGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemU7XHJcbiAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZWFjaFNlcmllcy50ZXh0Q29sb3IgfHwgXCIjRkZGRkZGXCIpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdjZW50ZXInKTtcclxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtLnQpLCBpdGVtLngsIGl0ZW0ueSArIGZvbnRTaXplLzIpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TGluZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgbGluZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ3N0cmFpZ2h0JyxcclxuICAgIHdpZHRoOiAyLFxyXG4gICAgYWN0aXZlVHlwZTogJ25vbmUnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgb25TaGFkb3c6IGZhbHNlLFxyXG4gICAgYW5pbWF0aW9uOiAndmVydGljYWwnLFxyXG4gIH0sIG9wdHMuZXh0cmEubGluZSk7XHJcbiAgbGluZU9wdGlvbi53aWR0aCAqPSBvcHRzLnBpeDtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAvLyDov5nmrrXlvojnpZ7lpYfnmoTku6PnoIHnlKjkuo7op6PlhrNpb3MxNueahHNldFN0cm9rZVN0eWxl5aSx5pWI55qEYnVnXHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQubW92ZVRvKC0xMDAwMCwgLTEwMDAwKTtcclxuICAgIGNvbnRleHQubGluZVRvKC0xMDAwMSwgLTEwMDAxKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXRMaW5lRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBsaW5lT3B0aW9uLCBwcm9jZXNzKTtcclxuICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICBpZiAoZWFjaFNlcmllcy5saW5lVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICBkYXNoTGVuZ3RoICo9IG9wdHMucGl4O1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtkYXNoTGVuZ3RoLCBkYXNoTGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgdmFyIHN0cm9rZUNvbG9yID0gZWFjaFNlcmllcy5jb2xvcjtcclxuICAgIGlmIChsaW5lT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJyAmJiBlYWNoU2VyaWVzLmxpbmVhckNvbG9yICYmIGVhY2hTZXJpZXMubGluZWFyQ29sb3IubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuc3RhcnRYLCBvcHRzLmhlaWdodC8yLCBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZW5kWCwgb3B0cy5oZWlnaHQvMik7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWFjaFNlcmllcy5saW5lYXJDb2xvci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGdyZC5hZGRDb2xvclN0b3AoZWFjaFNlcmllcy5saW5lYXJDb2xvcltpXVswXSwgaGV4VG9SZ2IoZWFjaFNlcmllcy5saW5lYXJDb2xvcltpXVsxXSwgMSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHN0cm9rZUNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgIGlmIChsaW5lT3B0aW9uLm9uU2hhZG93ID09IHRydWUgJiYgZWFjaFNlcmllcy5zZXRTaGFkb3cgJiYgZWFjaFNlcmllcy5zZXRTaGFkb3cubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb250ZXh0LnNldFNoYWRvdyhlYWNoU2VyaWVzLnNldFNoYWRvd1swXSwgZWFjaFNlcmllcy5zZXRTaGFkb3dbMV0sIGVhY2hTZXJpZXMuc2V0U2hhZG93WzJdLCBlYWNoU2VyaWVzLnNldFNoYWRvd1szXSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgY29udGV4dC5zZXRTaGFkb3coMCwgMCwgMCwgJ3JnYmEoMCwwLDAsMCknKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGxpbmVPcHRpb24ud2lkdGgpO1xyXG4gICAgc3BsaXRQb2ludExpc3QuZm9yRWFjaChmdW5jdGlvbihwb2ludHMsIGluZGV4KSB7XHJcbiAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAvLyBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnY3VydmUnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSwgaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnc3RyYWlnaHQnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnc3RlcCcpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIHBvaW50c1tqIC0gMV0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgIGlmIChvcHRzLmRhdGFQb2ludFNoYXBlICE9PSBmYWxzZSkge1xyXG4gICAgICBkcmF3UG9pbnRTaGFwZShwb2ludHMsIGVhY2hTZXJpZXMuY29sb3IsIGVhY2hTZXJpZXMucG9pbnRTaGFwZSwgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9XHJcbiAgICBkcmF3QWN0aXZlUG9pbnQocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMsIGxpbmVPcHRpb24pO1xyXG4gIH0pO1xyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgICAgdmFyIHBvaW50cyA9IGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgIGRyYXdQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdNaXhEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgd2lkdGg6IGVhY2hTcGFjaW5nIC8gMixcclxuICAgIGJhckJvcmRlckNpcmNsZTogZmFsc2UsXHJcbiAgICBiYXJCb3JkZXJSYWRpdXM6IFtdLFxyXG4gICAgc2VyaWVzR2FwOiAyLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgbGluZWFyT3BhY2l0eTogMSxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICAgIGNvbG9yU3RvcDogMCxcclxuICB9LCBvcHRzLmV4dHJhLm1peC5jb2x1bW4pO1xyXG4gIGxldCBhcmVhT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBvcGFjaXR5OiAwLjIsXHJcbiAgICBncmFkaWVudDogZmFsc2VcclxuICB9LCBvcHRzLmV4dHJhLm1peC5hcmVhKTtcclxuICBsZXQgbGluZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgd2lkdGg6IDJcclxuICB9LCBvcHRzLmV4dHJhLm1peC5saW5lKTtcclxuICBsZXQgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIGxldCBjYWxQb2ludHMgPSBbXTtcclxuICB2YXIgY29sdW1uSW5kZXggPSAwO1xyXG4gIHZhciBjb2x1bW5MZW5ndGggPSAwO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdjb2x1bW4nKSB7XHJcbiAgICAgIGNvbHVtbkxlbmd0aCArPSAxO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBsZXQgbGVmdFNwYWNlID0gMDtcclxuICBsZXQgcmlnaHRTcGFjZSA9IG9wdHMud2lkdGggKyBlYWNoU3BhY2luZztcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUsIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgIC8vIOe7mOWItuafseeKtuaVsOaNruWbvlxyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAnY29sdW1uJykge1xyXG4gICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbmd0aCwgY29sdW1uSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgdmFyIHN0cm9rZUNvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoY29sdW1uT3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyDlnIbop5LovrnmoYZcclxuICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICBjb25zdCB0b3AgPSBpdGVtLnk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gaXRlbS53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBpdGVtLnk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IFtyMCwgcjEsIHIyLCByM10gPSBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzO1xyXG4gICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgcjEgPSByMSA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIxO1xyXG4gICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgcjAgPSByMCA8IDAgPyAwIDogcjA7XHJcbiAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgcjMgPSByMyA8IDAgPyAwIDogcjM7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjEsIHRvcCArIHIxLCByMSwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjIsIHRvcCArIGhlaWdodCAtIHIyLCByMiwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIGhlaWdodCAtIHIzLCByMywgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpXHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29sdW1uSW5kZXggKz0gMTtcclxuICAgIH1cclxuICAgIC8v57uY5Yi25Yy65Z+f5Zu+5pWw5o2uXHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdhcmVhJykge1xyXG4gICAgICBsZXQgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnRzID0gc3BsaXRQb2ludExpc3RbaV07XHJcbiAgICAgICAgLy8g57uY5Yi25Yy65Z+f5pWw5o2uXHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYXJlYU9wdGlvbi5vcGFjaXR5KSk7XHJcbiAgICAgICAgaWYgKGFyZWFPcHRpb24uZ3JhZGllbnQpIHtcclxuICAgICAgICAgIGxldCBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgb3B0cy5hcmVhWzBdLCAwLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoXCIjRkZGRkZGXCIsIDAuMSkpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ3JhZGllbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMiAqIG9wdHMucGl4KTtcclxuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHZhciBmaXJzdFBvaW50ID0gcG9pbnRzWzBdO1xyXG4gICAgICAgICAgbGV0IGxhc3RQb2ludCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRQb2ludCA9IDA7XHJcbiAgICAgICAgICBpZiAoZWFjaFNlcmllcy5zdHlsZSA9PT0gJ2N1cnZlJykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY3RybFBvaW50ID0gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaiAtIDEpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8obGFzdFBvaW50LngsIGVuZFkpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oZmlyc3RQb2ludC54LCBlbmRZKTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGZpcnN0UG9pbnQueCwgZmlyc3RQb2ludC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbMF07XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLnggLSBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAvLyBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAvLyBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGVuZFkpO1xyXG4gICAgICAgICAgLy8gY29udGV4dC5saW5lVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBlbmRZKTtcclxuICAgICAgICAgIC8vIGNvbnRleHQubW92ZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8g57uY5Yi25oqY57q/5pWw5o2u5Zu+XHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdsaW5lJykge1xyXG4gICAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIHNwbGl0UG9pbnRMaXN0LmZvckVhY2goZnVuY3Rpb24ocG9pbnRzLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChlYWNoU2VyaWVzLmxpbmVUeXBlID09ICdkYXNoJykge1xyXG4gICAgICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICAgICAgZGFzaExlbmd0aCAqPSBvcHRzLnBpeDtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW2Rhc2hMZW5ndGgsIGRhc2hMZW5ndGhdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGxpbmVPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICAvLyBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICAgIGlmIChlYWNoU2VyaWVzLnN0eWxlID09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LFxyXG4gICAgICAgICAgICAgICAgICBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIOe7mOWItueCueaVsOaNruWbvlxyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAncG9pbnQnKSB7XHJcbiAgICAgIGVhY2hTZXJpZXMuYWRkUG9pbnQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGVhY2hTZXJpZXMuYWRkUG9pbnQgPT0gdHJ1ZSAmJiBlYWNoU2VyaWVzLnR5cGUgIT09ICdjb2x1bW4nKSB7XHJcbiAgICAgIGRyYXdQb2ludFNoYXBlKHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH1cclxuICB9KTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHZhciBjb2x1bW5JbmRleCA9IDA7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgaWYgKGVhY2hTZXJpZXMudHlwZSAhPT0gJ2NvbHVtbicpIHtcclxuICAgICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbmd0aCwgY29sdW1uSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgY29sdW1uSW5kZXggKz0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZyxcclxuICB9XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gb3B0cy5leHRyYS50b29sdGlwIHx8IHt9O1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmhvcml6ZW50YWxMaW5lICYmIG9wdHMudG9vbHRpcCAmJiBwcm9jZXNzID09PSAxICYmIChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdjb2x1bW4nIHx8IG9wdHMudHlwZSA9PSAnbW91bnQnIHx8IG9wdHMudHlwZSA9PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT0gJ21peCcpKSB7XHJcbiAgICBkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKVxyXG4gIH1cclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICB9XHJcbiAgaWYgKG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0Lmxlbmd0aCAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3VG9vbFRpcChvcHRzLnRvb2x0aXAudGV4dExpc3QsIG9wdHMudG9vbHRpcC5vZmZzZXQsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcblxyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIHN0YXJ0WCA9IHhBeGlzRGF0YS5zdGFydFgsXHJcbiAgICBlbmRYID0geEF4aXNEYXRhLmVuZFgsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgYm91bmRhcnlHYXAgPSAnY2VudGVyJztcclxuICBpZiAob3B0cy50eXBlID09ICdiYXInIHx8IG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJ3x8IG9wdHMudHlwZSA9PSAnc2NhdHRlcicgfHwgb3B0cy50eXBlID09ICdidWJibGUnKSB7XHJcbiAgICBib3VuZGFyeUdhcCA9IG9wdHMueEF4aXMuYm91bmRhcnlHYXA7XHJcbiAgfVxyXG4gIHZhciBzdGFydFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuYXJlYVswXTtcclxuXHJcbiAgLy/nu5jliLbmu5rliqjmnaFcclxuICBpZiAob3B0cy5lbmFibGVTY3JvbGwgJiYgb3B0cy54QXhpcy5zY3JvbGxTaG93KSB7XHJcbiAgICB2YXIgc2Nyb2xsWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdICsgY29uZmlnLnhBeGlzSGVpZ2h0O1xyXG4gICAgdmFyIHNjcm9sbFNjcmVlbldpZHRoID0gZW5kWCAtIHN0YXJ0WDtcclxuICAgIHZhciBzY3JvbGxUb3RhbFdpZHRoID0gZWFjaFNwYWNpbmcgKiAoeEF4aXNQb2ludHMubGVuZ3RoIC0gMSk7XHJcbiAgICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEpe1xyXG4gICAgICBpZihvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8+Mikgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID0gMlxyXG4gICAgICBzY3JvbGxUb3RhbFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSplYWNoU3BhY2luZztcclxuICAgIH1cclxuICAgIHZhciBzY3JvbGxXaWR0aCA9IHNjcm9sbFNjcmVlbldpZHRoICogc2Nyb2xsU2NyZWVuV2lkdGggLyBzY3JvbGxUb3RhbFdpZHRoO1xyXG4gICAgdmFyIHNjcm9sbExlZnQgPSAwO1xyXG4gICAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXykge1xyXG4gICAgICBzY3JvbGxMZWZ0ID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAqIChzY3JvbGxTY3JlZW5XaWR0aCkgLyBzY3JvbGxUb3RhbFdpZHRoO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDYgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuc2Nyb2xsQmFja2dyb3VuZENvbG9yIHx8IFwiI0VGRUJFRlwiKTtcclxuICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc2Nyb2xsWSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCBzY3JvbGxZKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDYgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuc2Nyb2xsQ29sb3IgfHwgXCIjQTZBNkE2XCIpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgc2Nyb2xsTGVmdCwgc2Nyb2xsWSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBzY3JvbGxMZWZ0ICsgc2Nyb2xsV2lkdGgsIHNjcm9sbFkpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ2J1dHQnKTtcclxuICB9XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDApIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgfVxyXG4gIC8v57uY5Yi2WOi9tOWIu+W6pue6v1xyXG4gIGlmIChvcHRzLnhBeGlzLmNhbGlicmF0aW9uID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuZ3JpZENvbG9yIHx8IFwiI2NjY2NjY1wiKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIHhBeGlzUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbSAtIGVhY2hTcGFjaW5nIC8gMiwgc3RhcnRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtIC0gZWFjaFNwYWNpbmcgLyAyLCBzdGFydFkgKyAzICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v57uY5Yi2WOi9tOe9keagvFxyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVHcmlkICE9PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuZ3JpZENvbG9yIHx8IFwiI2NjY2NjY1wiKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGlmIChvcHRzLnhBeGlzLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtvcHRzLnhBeGlzLmRhc2hMZW5ndGggKiBvcHRzLnBpeCwgb3B0cy54QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXhdKTtcclxuICAgIH1cclxuICAgIG9wdHMueEF4aXMuZ3JpZEV2YWwgPSBvcHRzLnhBeGlzLmdyaWRFdmFsIHx8IDE7XHJcbiAgICB4QXhpc1BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpbmRleCAlIG9wdHMueEF4aXMuZ3JpZEV2YWwgPT0gMCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbSwgc3RhcnRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLCBlbmRZKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIH1cclxuICAvL+e7mOWItljovbTmlofmoYhcclxuICBpZiAob3B0cy54QXhpcy5kaXNhYmxlZCAhPT0gdHJ1ZSkge1xyXG4gICAgLy8g5a+5WOi9tOWIl+ihqOWBmuaKveeogOWkhOeQhlxyXG4gICAgLy/pu5jorqTlhajpg6jmmL7npLpY6L205qCH562+XHJcbiAgICBsZXQgbWF4WEF4aXNMaXN0TGVuZ3RoID0gY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgICAvL+WmguaenOiuvue9ruS6hljovbTljZXlsY/mlbDph49cclxuICAgIGlmIChvcHRzLnhBeGlzLmxhYmVsQ291bnQpIHtcclxuICAgICAgLy/lpoLmnpzorr7nva5Y6L205a+G5bqmXHJcbiAgICAgIGlmIChvcHRzLnhBeGlzLml0ZW1Db3VudCkge1xyXG4gICAgICAgIG1heFhBeGlzTGlzdExlbmd0aCA9IE1hdGguY2VpbChjYXRlZ29yaWVzLmxlbmd0aCAvIG9wdHMueEF4aXMuaXRlbUNvdW50ICogb3B0cy54QXhpcy5sYWJlbENvdW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtYXhYQXhpc0xpc3RMZW5ndGggPSBvcHRzLnhBeGlzLmxhYmVsQ291bnQ7XHJcbiAgICAgIH1cclxuICAgICAgbWF4WEF4aXNMaXN0TGVuZ3RoIC09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJhdGlvID0gTWF0aC5jZWlsKGNhdGVnb3JpZXMubGVuZ3RoIC8gbWF4WEF4aXNMaXN0TGVuZ3RoKTtcclxuXHJcbiAgICBsZXQgbmV3Q2F0ZWdvcmllcyA9IFtdO1xyXG4gICAgbGV0IGNnTGVuZ3RoID0gY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNnTGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgJSByYXRpbyAhPT0gMCkge1xyXG4gICAgICAgIG5ld0NhdGVnb3JpZXMucHVzaChcIlwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcmllc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG5ld0NhdGVnb3JpZXNbY2dMZW5ndGggLSAxXSA9IGNhdGVnb3JpZXNbY2dMZW5ndGggLSAxXTtcclxuICAgIHZhciB4QXhpc0ZvbnRTaXplID0gb3B0cy54QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgIGlmIChjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyA9PT0gMCkge1xyXG4gICAgICBuZXdDYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgeGl0ZW0gPSBvcHRzLnhBeGlzLmZvcm1hdHRlciA/IG9wdHMueEF4aXMuZm9ybWF0dGVyKGl0ZW0saW5kZXgsb3B0cykgOiBpdGVtO1xyXG4gICAgICAgIHZhciBvZmZzZXQgPSAtbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNGb250U2l6ZSwgY29udGV4dCkgLyAyO1xyXG4gICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgb2Zmc2V0ICs9IGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgICAgaWYgKG9wdHMueEF4aXMuc2Nyb2xsU2hvdykge1xyXG4gICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gNiAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzlnKjkuLvop4blm77ljLrln5/lhoVcclxuICAgICAgICB2YXIgX3Njcm9sbERpc3RhbmNlXyA9IG9wdHMuX3Njcm9sbERpc3RhbmNlXyB8fCAwO1xyXG4gICAgICAgIHZhciB0cnVlUG9pbnRzID0gYm91bmRhcnlHYXAgPT0gJ2NlbnRlcicgPyB4QXhpc1BvaW50c1tpbmRleF0gKyBlYWNoU3BhY2luZyAvIDIgOiB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgICAgaWYoKHRydWVQb2ludHMgLSBNYXRoLmFicyhfc2Nyb2xsRGlzdGFuY2VfKSkgPj0gKG9wdHMuYXJlYVszXSAtIDEpICYmICh0cnVlUG9pbnRzIC0gTWF0aC5hYnMoX3Njcm9sbERpc3RhbmNlXykpIDw9IChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdICsgMSkpe1xyXG4gICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoeEF4aXNGb250U2l6ZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLnhBeGlzLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyh4aXRlbSksIHhBeGlzUG9pbnRzW2luZGV4XSArIG9mZnNldCwgc3RhcnRZICsgb3B0cy54QXhpcy5tYXJnaW5Ub3AgKiBvcHRzLnBpeCArIChvcHRzLnhBeGlzLmxpbmVIZWlnaHQgLSBvcHRzLnhBeGlzLmZvbnRTaXplKSAqIG9wdHMucGl4IC8gMiArIG9wdHMueEF4aXMuZm9udFNpemUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3Q2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIHhpdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IGl0ZW07XHJcbiAgICAgICAgLy8g5aaC5p6c5Zyo5Li76KeG5Zu+5Yy65Z+f5YaFXHJcbiAgICAgICAgdmFyIF9zY3JvbGxEaXN0YW5jZV8gPSBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gfHwgMDtcclxuICAgICAgICB2YXIgdHJ1ZVBvaW50cyA9IGJvdW5kYXJ5R2FwID09ICdjZW50ZXInID8geEF4aXNQb2ludHNbaW5kZXhdICsgZWFjaFNwYWNpbmcgLyAyIDogeEF4aXNQb2ludHNbaW5kZXhdO1xyXG4gICAgICAgIGlmKCh0cnVlUG9pbnRzIC0gTWF0aC5hYnMoX3Njcm9sbERpc3RhbmNlXykpID49IChvcHRzLmFyZWFbM10gLSAxKSAmJiAodHJ1ZVBvaW50cyAtIE1hdGguYWJzKF9zY3JvbGxEaXN0YW5jZV8pKSA8PSAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSArIDEpKXtcclxuICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoeEF4aXNGb250U2l6ZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLnhBeGlzLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICB2YXIgdGV4dFdpZHRoID0gbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNGb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgb2Zmc2V0WCA9IHhBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgICBvZmZzZXRYID0geEF4aXNQb2ludHNbaW5kZXhdICsgZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgICAgICBpZiAob3B0cy54QXhpcy5zY3JvbGxTaG93KSB7XHJcbiAgICAgICAgICAgIHNjcm9sbEhlaWdodCA9IDYgKiBvcHRzLnBpeDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHZhciBvZmZzZXRZID0gc3RhcnRZICsgb3B0cy54QXhpcy5tYXJnaW5Ub3AgKiBvcHRzLnBpeCArIHhBeGlzRm9udFNpemUgLSB4QXhpc0ZvbnRTaXplICogTWF0aC5hYnMoTWF0aC5zaW4oY29uZmlnLl94QXhpc1RleHRBbmdsZV8pKTtcclxuICAgICAgICAgIGlmKG9wdHMueEF4aXMucm90YXRlQW5nbGUgPCAwKXtcclxuICAgICAgICAgICAgb2Zmc2V0WCAtPSB4QXhpc0ZvbnRTaXplIC8gMjtcclxuICAgICAgICAgICAgdGV4dFdpZHRoID0gMDtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBvZmZzZXRYICs9IHhBeGlzRm9udFNpemUgLyAyO1xyXG4gICAgICAgICAgICB0ZXh0V2lkdGggPSAtdGV4dFdpZHRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC50cmFuc2xhdGUob2Zmc2V0WCwgb2Zmc2V0WSk7XHJcbiAgICAgICAgICBjb250ZXh0LnJvdGF0ZSgtMSAqIGNvbmZpZy5feEF4aXNUZXh0QW5nbGVfKTtcclxuICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKHhpdGVtKSwgdGV4dFdpZHRoICwgMCApO1xyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICBcclxuICAvL+eUu1jovbTmoIfpophcclxuICBpZiAob3B0cy54QXhpcy50aXRsZSkge1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUob3B0cy54QXhpcy50aXRsZUZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy54QXhpcy50aXRsZUZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhvcHRzLnhBeGlzLnRpdGxlKSwgb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSArIG9wdHMueEF4aXMudGl0bGVPZmZzZXRYICogb3B0cy5waXgsb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gKyBvcHRzLnhBeGlzLm1hcmdpblRvcCAqIG9wdHMucGl4ICsgKG9wdHMueEF4aXMubGluZUhlaWdodCAtIG9wdHMueEF4aXMudGl0bGVGb250U2l6ZSkgKiBvcHRzLnBpeCAvIDIgKyAob3B0cy54QXhpcy50aXRsZUZvbnRTaXplICsgb3B0cy54QXhpcy50aXRsZU9mZnNldFkpICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIFxyXG4gIC8v57uY5Yi2WOi9tOi9tOe6v1xyXG4gIGlmIChvcHRzLnhBeGlzLmF4aXNMaW5lKSB7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLnhBeGlzLmF4aXNMaW5lQ29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgaWYgKG9wdHMueUF4aXMuZGlzYWJsZUdyaWQgPT09IHRydWUpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgbGV0IHNwYWNpbmdWYWxpZCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIGxldCBlYWNoU3BhY2luZyA9IHNwYWNpbmdWYWxpZCAvIG9wdHMueUF4aXMuc3BsaXROdW1iZXI7XHJcbiAgbGV0IHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICBsZXQgeEF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICB4QXhpc2VhY2hTcGFjaW5nID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBUb3RhbFdpZHRoID0geEF4aXNlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEgKXtcclxuICAgIGlmKG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbz4yKSBvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gPSAyXHJcbiAgICBUb3RhbFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSAqIHhBeGlzZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIGxldCBlbmRYID0gc3RhcnRYICsgVG90YWxXaWR0aDtcclxuICBsZXQgcG9pbnRzID0gW107XHJcbiAgbGV0IHN0YXJ0WSA9IDFcclxuICBpZiAob3B0cy54QXhpcy5heGlzTGluZSA9PT0gZmFsc2UpIHtcclxuICAgIHN0YXJ0WSA9IDBcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IHN0YXJ0WTsgaSA8IG9wdHMueUF4aXMuc3BsaXROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgIHBvaW50cy5wdXNoKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gZWFjaFNwYWNpbmcgKiBpKTtcclxuICB9XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDApIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnlBeGlzLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgY29udGV4dC5zZXRMaW5lRGFzaChbb3B0cy55QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXgsIG9wdHMueUF4aXMuZGFzaExlbmd0aCAqIG9wdHMucGl4XSk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUob3B0cy55QXhpcy5ncmlkQ29sb3IpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0pO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH0pO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WUF4aXMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBpZiAob3B0cy55QXhpcy5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICB2YXIgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gb3B0cy55QXhpcy5zcGxpdE51bWJlcjtcclxuICB2YXIgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBlbmRYID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIC8vIHNldCBZQXhpcyBiYWNrZ3JvdW5kXHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLmJhY2tncm91bmQpO1xyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PSB0cnVlICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gJiYgb3B0cy54QXhpcy5zY3JvbGxQb3NpdGlvbiAhPT0gJ2xlZnQnKSB7XHJcbiAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHN0YXJ0WCwgZW5kWSArIDIgKiBvcHRzLnBpeCk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PSB0cnVlICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gJiYgb3B0cy54QXhpcy5zY3JvbGxQb3NpdGlvbiAhPT0gJ3JpZ2h0Jykge1xyXG4gICAgY29udGV4dC5maWxsUmVjdChlbmRYLCAwLCBvcHRzLndpZHRoLCBlbmRZICsgMiAqIG9wdHMucGl4KTtcclxuICB9XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIFxyXG4gIGxldCB0U3RhcnRMZWZ0ID0gb3B0cy5hcmVhWzNdO1xyXG4gIGxldCB0U3RhcnRSaWdodCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgbGV0IHRTdGFydENlbnRlciA9IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDI7XHJcbiAgaWYgKG9wdHMueUF4aXMuZGF0YSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRzLnlBeGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHlEYXRhID0gb3B0cy55QXhpcy5kYXRhW2ldO1xyXG4gICAgICB2YXIgcG9pbnRzID0gW107XHJcbiAgICAgIGlmKHlEYXRhLnR5cGUgPT09ICdjYXRlZ29yaWVzJyl7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0geURhdGEuY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgcG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgc3BhY2luZ1ZhbGlkIC8geURhdGEuY2F0ZWdvcmllcy5sZW5ndGggLyAyICsgc3BhY2luZ1ZhbGlkIC8geURhdGEuY2F0ZWdvcmllcy5sZW5ndGggKiBpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG9wdHMueUF4aXMuc3BsaXROdW1iZXI7IGkrKykge1xyXG4gICAgICAgICAgcG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgZWFjaFNwYWNpbmcgKiBpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHlEYXRhLmRpc2FibGVkICE9PSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IHJhbmdlc0Zvcm1hdCA9IG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNGb3JtYXRbaV07XHJcbiAgICAgICAgbGV0IHlBeGlzRm9udFNpemUgPSB5RGF0YS5mb250U2l6ZSA/IHlEYXRhLmZvbnRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgICAgbGV0IHlBeGlzV2lkdGggPSBvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEueUF4aXNXaWR0aFtpXTtcclxuICAgICAgICBsZXQgdGV4dEFsaWduID0geURhdGEudGV4dEFsaWduIHx8IFwicmlnaHRcIjtcclxuICAgICAgICAvL+eUu1novbTliLvluqblj4rmlofmoYhcclxuICAgICAgICByYW5nZXNGb3JtYXQuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgdmFyIHBvcyA9IHBvaW50c1tpbmRleF07XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh5QXhpc0ZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHlEYXRhLmF4aXNMaW5lQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHlEYXRhLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICBsZXQgdG1wc3RyYXQgPSAwO1xyXG4gICAgICAgICAgbGV0IGdhcHdpZHRoID0gNCAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgICAgIC8v55S75Yi75bqm57q/XHJcbiAgICAgICAgICAgIGlmICh5RGF0YS5jYWxpYnJhdGlvbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0TGVmdCwgcG9zKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRMZWZ0IC0gMyAqIG9wdHMucGl4LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGdhcHdpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+eUu+aWh+Wtl1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRMZWZ0IC0geUF4aXNXaWR0aC53aWR0aFxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSBcInJpZ2h0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbigncmlnaHQnKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0TGVmdCAtIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRMZWZ0IC0geUF4aXNXaWR0aC53aWR0aCAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtKSwgdG1wc3RyYXQsIHBvcyArIHlBeGlzRm9udFNpemUgLyAyIC0gMyAqIG9wdHMucGl4KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgICAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgICAgICAgICBpZiAoeURhdGEuY2FsaWJyYXRpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydFJpZ2h0LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHRTdGFydFJpZ2h0ICsgMyAqIG9wdHMucGl4LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGdhcHdpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRSaWdodCArIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdyaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRSaWdodCArIHlBeGlzV2lkdGgud2lkdGhcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydFJpZ2h0ICsgeUF4aXNXaWR0aC53aWR0aCAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtKSwgdG1wc3RyYXQsIHBvcyArIHlBeGlzRm9udFNpemUgLyAyIC0gMyAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgICAgICAgICBpZiAoeURhdGEuY2FsaWJyYXRpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydENlbnRlciwgcG9zKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRDZW50ZXIgLSAzICogb3B0cy5waXgsIHBvcyk7XHJcbiAgICAgICAgICAgICAgZ2Fwd2lkdGggKz0gMyAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v55S75paH5a2XXHJcbiAgICAgICAgICAgIHN3aXRjaCAodGV4dEFsaWduKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydENlbnRlciAtIHlBeGlzV2lkdGgud2lkdGhcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydENlbnRlciAtIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRDZW50ZXIgLSB5QXhpc1dpZHRoLndpZHRoIC8gMlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGl0ZW0pLCB0bXBzdHJhdCwgcG9zICsgeUF4aXNGb250U2l6ZSAvIDIgLSAzICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v55S7Wei9tOi9tOe6v1xyXG4gICAgICAgIGlmICh5RGF0YS5heGlzTGluZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHlEYXRhLmF4aXNMaW5lQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0TGVmdCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRMZWZ0LCBvcHRzLmFyZWFbMF0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0UmlnaHQsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8odFN0YXJ0UmlnaHQsIG9wdHMuYXJlYVswXSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0Q2VudGVyLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHRTdGFydENlbnRlciwgb3B0cy5hcmVhWzBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v55S7Wei9tOagh+mimFxyXG4gICAgICAgIGlmIChvcHRzLnlBeGlzLnNob3dUaXRsZSkge1xyXG4gICAgICAgICAgbGV0IHRpdGxlRm9udFNpemUgPSB5RGF0YS50aXRsZUZvbnRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICAgICAgbGV0IHRpdGxlID0geURhdGEudGl0bGU7XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh0aXRsZUZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHlEYXRhLnRpdGxlRm9udENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgICAgIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRpdGxlLCB0U3RhcnRMZWZ0IC0gbWVhc3VyZVRleHQodGl0bGUsIHRpdGxlRm9udFNpemUsIGNvbnRleHQpIC8gMiArICh5RGF0YS50aXRsZU9mZnNldFggfHwgMCksIG9wdHMuYXJlYVswXSAtICgxMCAtICh5RGF0YS50aXRsZU9mZnNldFkgfHwgMCkpICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgdFN0YXJ0UmlnaHQgLSBtZWFzdXJlVGV4dCh0aXRsZSwgdGl0bGVGb250U2l6ZSwgY29udGV4dCkgLyAyICsgKHlEYXRhLnRpdGxlT2Zmc2V0WCB8fCAwKSwgb3B0cy5hcmVhWzBdIC0gKDEwIC0gKHlEYXRhLnRpdGxlT2Zmc2V0WSB8fCAwKSkgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgdFN0YXJ0Q2VudGVyIC0gbWVhc3VyZVRleHQodGl0bGUsIHRpdGxlRm9udFNpemUsIGNvbnRleHQpIC8gMiArICh5RGF0YS50aXRsZU9mZnNldFggfHwgMCksIG9wdHMuYXJlYVswXSAtICgxMCAtICh5RGF0YS50aXRsZU9mZnNldFkgfHwgMCkpICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgdFN0YXJ0TGVmdCAtPSAoeUF4aXNXaWR0aC53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdFN0YXJ0UmlnaHQgKz0geUF4aXNXaWR0aC53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdMZWdlbmQoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGNoYXJ0RGF0YSkge1xyXG4gIGlmIChvcHRzLmxlZ2VuZC5zaG93ID09PSBmYWxzZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgbGVnZW5kRGF0YSA9IGNoYXJ0RGF0YS5sZWdlbmREYXRhO1xyXG4gIGxldCBsZWdlbmRMaXN0ID0gbGVnZW5kRGF0YS5wb2ludHM7XHJcbiAgbGV0IGxlZ2VuZEFyZWEgPSBsZWdlbmREYXRhLmFyZWE7XHJcbiAgbGV0IHBhZGRpbmcgPSBvcHRzLmxlZ2VuZC5wYWRkaW5nICogb3B0cy5waXg7XHJcbiAgbGV0IGZvbnRTaXplID0gb3B0cy5sZWdlbmQuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICBsZXQgc2hhcGVXaWR0aCA9IDE1ICogb3B0cy5waXg7XHJcbiAgbGV0IHNoYXBlUmlnaHQgPSA1ICogb3B0cy5waXg7XHJcbiAgbGV0IGl0ZW1HYXAgPSBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXg7XHJcbiAgbGV0IGxpbmVIZWlnaHQgPSBNYXRoLm1heChvcHRzLmxlZ2VuZC5saW5lSGVpZ2h0ICogb3B0cy5waXgsIGZvbnRTaXplKTtcclxuICAvL+eUu+iDjOaZr+WPiui+ueahhlxyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgob3B0cy5sZWdlbmQuYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLmxlZ2VuZC5ib3JkZXJDb2xvcik7XHJcbiAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5sZWdlbmQuYmFja2dyb3VuZENvbG9yKTtcclxuICBjb250ZXh0Lm1vdmVUbyhsZWdlbmRBcmVhLnN0YXJ0LngsIGxlZ2VuZEFyZWEuc3RhcnQueSk7XHJcbiAgY29udGV4dC5yZWN0KGxlZ2VuZEFyZWEuc3RhcnQueCwgbGVnZW5kQXJlYS5zdGFydC55LCBsZWdlbmRBcmVhLndpZHRoLCBsZWdlbmRBcmVhLmhlaWdodCk7XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGxlZ2VuZExpc3QuZm9yRWFjaChmdW5jdGlvbihpdGVtTGlzdCwgbGlzdEluZGV4KSB7XHJcbiAgICBsZXQgd2lkdGggPSAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDA7XHJcbiAgICB3aWR0aCA9IGxlZ2VuZERhdGEud2lkdGhBcnJbbGlzdEluZGV4XTtcclxuICAgIGhlaWdodCA9IGxlZ2VuZERhdGEuaGVpZ2h0QXJyW2xpc3RJbmRleF07XHJcbiAgICBsZXQgc3RhcnRYID0gMDtcclxuICAgIGxldCBzdGFydFkgPSAwO1xyXG4gICAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICAgIHN3aXRjaCAob3B0cy5sZWdlbmQuZmxvYXQpIHtcclxuICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgIHN0YXJ0WCA9IGxlZ2VuZEFyZWEuc3RhcnQueCArIHBhZGRpbmc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgc3RhcnRYID0gbGVnZW5kQXJlYS5zdGFydC54ICsgbGVnZW5kQXJlYS53aWR0aCAtIHdpZHRoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgc3RhcnRYID0gbGVnZW5kQXJlYS5zdGFydC54ICsgKGxlZ2VuZEFyZWEud2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICB9XHJcbiAgICAgIHN0YXJ0WSA9IGxlZ2VuZEFyZWEuc3RhcnQueSArIHBhZGRpbmcgKyBsaXN0SW5kZXggKiBsaW5lSGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGxpc3RJbmRleCA9PSAwKSB7XHJcbiAgICAgICAgd2lkdGggPSAwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdpZHRoID0gbGVnZW5kRGF0YS53aWR0aEFycltsaXN0SW5kZXggLSAxXTtcclxuICAgICAgfVxyXG4gICAgICBzdGFydFggPSBsZWdlbmRBcmVhLnN0YXJ0LnggKyBwYWRkaW5nICsgd2lkdGg7XHJcbiAgICAgIHN0YXJ0WSA9IGxlZ2VuZEFyZWEuc3RhcnQueSArIHBhZGRpbmcgKyAobGVnZW5kQXJlYS5oZWlnaHQgLSBoZWlnaHQpIC8gMjtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBpdGVtTGlzdFtpXTtcclxuICAgICAgaXRlbS5hcmVhID0gWzAsIDAsIDAsIDBdO1xyXG4gICAgICBpdGVtLmFyZWFbMF0gPSBzdGFydFg7XHJcbiAgICAgIGl0ZW0uYXJlYVsxXSA9IHN0YXJ0WTtcclxuICAgICAgaXRlbS5hcmVhWzNdID0gc3RhcnRZICsgbGluZUhlaWdodDtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLnNob3cgPyBpdGVtLmNvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnNob3cgPyBpdGVtLmNvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBzd2l0Y2ggKGl0ZW0ubGVnZW5kU2hhcGUpIHtcclxuICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDIgKiBvcHRzLnBpeCwgMTUgKiBvcHRzLnBpeCwgNCAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RyaWFuZ2xlJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDEyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdkaWFtb25kJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDEyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjaXJjbGUnOlxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMoc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQsIDUgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmVjdCc6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgsIDE1ICogb3B0cy5waXgsIDEwICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3F1YXJlJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCArIDUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdub25lJzpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgsIDE1ICogb3B0cy5waXgsIDEwICogb3B0cy5waXgpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBzdGFydFggKz0gc2hhcGVXaWR0aCArIHNoYXBlUmlnaHQ7XHJcbiAgICAgIGxldCBmb250VHJhbnMgPSAwLjUgKiBsaW5lSGVpZ2h0ICsgMC41ICogZm9udFNpemUgLSAyO1xyXG4gICAgICBjb25zdCBsZWdlbmRUZXh0ID0gaXRlbS5sZWdlbmRUZXh0ID8gaXRlbS5sZWdlbmRUZXh0IDogaXRlbS5uYW1lO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5zaG93ID8gb3B0cy5sZWdlbmQuZm9udENvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KGxlZ2VuZFRleHQsIHN0YXJ0WCwgc3RhcnRZICsgZm9udFRyYW5zKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICAgICAgc3RhcnRYICs9IG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQsIGZvbnRTaXplLCBjb250ZXh0KSArIGl0ZW1HYXA7XHJcbiAgICAgICAgaXRlbS5hcmVhWzJdID0gc3RhcnRYO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0uYXJlYVsyXSA9IHN0YXJ0WCArIG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQsIGZvbnRTaXplLCBjb250ZXh0KSArIGl0ZW1HYXA7O1xyXG4gICAgICAgIHN0YXJ0WCAtPSBzaGFwZVdpZHRoICsgc2hhcGVSaWdodDtcclxuICAgICAgICBzdGFydFkgKz0gbGluZUhlaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3UGllRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBwaWVPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGFjdGl2ZU9wYWNpdHk6IDAuNSxcclxuICAgIGFjdGl2ZVJhZGl1czogMTAsXHJcbiAgICBvZmZzZXRBbmdsZTogMCxcclxuICAgIGxhYmVsV2lkdGg6IDE1LFxyXG4gICAgcmluZ1dpZHRoOiAzMCxcclxuICAgIGN1c3RvbVJhZGl1czogMCxcclxuICAgIGJvcmRlcjogZmFsc2UsXHJcbiAgICBib3JkZXJXaWR0aDogMixcclxuICAgIGJvcmRlckNvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBjZW50ZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMudHlwZSA9PSBcInBpZVwiID8gb3B0cy5leHRyYS5waWUgOiBvcHRzLmV4dHJhLnJpbmcpO1xyXG4gIHZhciBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIsXHJcbiAgICB5OiBvcHRzLmFyZWFbMF0gKyAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMlxyXG4gIH07XHJcbiAgaWYgKGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID09IDApIHtcclxuICAgIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID0gcGllT3B0aW9uLmFjdGl2ZVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIH1cclxuXHJcbiAgdmFyIHJhZGl1cyA9IE1hdGgubWluKChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nIC0gY29uZmlnLl9waWVUZXh0TWF4TGVuZ3RoXywgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nKTtcclxuICByYWRpdXMgPSByYWRpdXMgPCAxMCA/IDEwIDogcmFkaXVzO1xyXG4gIGlmIChwaWVPcHRpb24uY3VzdG9tUmFkaXVzID4gMCkge1xyXG4gICAgcmFkaXVzID0gcGllT3B0aW9uLmN1c3RvbVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIH1cclxuICBzZXJpZXMgPSBnZXRQaWVEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzLCBwcm9jZXNzKTtcclxuICB2YXIgYWN0aXZlUmFkaXVzID0gcGllT3B0aW9uLmFjdGl2ZVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIHBpZU9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihwaWVPcHRpb24ubGluZWFyVHlwZSwgcGllT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgc2VyaWVzID0gc2VyaWVzLm1hcChmdW5jdGlvbihlYWNoU2VyaWVzKSB7XHJcbiAgICBlYWNoU2VyaWVzLl9zdGFydF8gKz0gKHBpZU9wdGlvbi5vZmZzZXRBbmdsZSkgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgcmV0dXJuIGVhY2hTZXJpZXM7XHJcbiAgfSk7XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBzZXJpZXNJbmRleCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgcGllT3B0aW9uLmFjdGl2ZU9wYWNpdHkgfHwgMC41KSk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXyArIGFjdGl2ZVJhZGl1cywgZWFjaFNlcmllcy5fc3RhcnRfLCBlYWNoU2VyaWVzLl9zdGFydF8gKyAyICogZWFjaFNlcmllcy5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgocGllT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocGllT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgIHZhciBmaWxsY29sb3IgPSBlYWNoU2VyaWVzLmNvbG9yO1xyXG4gICAgaWYgKHBpZU9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgIHZhciBncmQ7XHJcbiAgICAgIGlmKGNvbnRleHQuY3JlYXRlQ2lyY3VsYXJHcmFkaWVudCl7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGdyZCA9IGNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgMCxjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfKVxyXG4gICAgICB9XHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IocGllT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCAxKSlcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCAxKSlcclxuICAgICAgZmlsbGNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfLCBlYWNoU2VyaWVzLl9zdGFydF8sIGVhY2hTZXJpZXMuX3N0YXJ0XyArIDIgKiBlYWNoU2VyaWVzLl9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgaWYgKHBpZU9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGlmIChvcHRzLnR5cGUgPT09ICdyaW5nJykge1xyXG4gICAgdmFyIGlubmVyUGllV2lkdGggPSByYWRpdXMgKiAwLjY7XHJcbiAgICBpZiAodHlwZW9mIHBpZU9wdGlvbi5yaW5nV2lkdGggPT09ICdudW1iZXInICYmIHBpZU9wdGlvbi5yaW5nV2lkdGggPiAwKSB7XHJcbiAgICAgIGlubmVyUGllV2lkdGggPSBNYXRoLm1heCgwLCByYWRpdXMgLSBwaWVPcHRpb24ucmluZ1dpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHBpZU9wdGlvbi5jZW50ZXJDb2xvcik7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGlubmVyUGllV2lkdGgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LmZpbGwoKTtcclxuICB9XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3UGllVGV4dChzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgfVxyXG4gIGlmIChwcm9jZXNzID09PSAxICYmIG9wdHMudHlwZSA9PT0gJ3JpbmcnKSB7XHJcbiAgICBkcmF3UmluZ1RpdGxlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgc2VyaWVzOiBzZXJpZXNcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Um9zZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgcm9zZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2FyZWEnLFxyXG4gICAgYWN0aXZlT3BhY2l0eTogMC41LFxyXG4gICAgYWN0aXZlUmFkaXVzOiAxMCxcclxuICAgIG9mZnNldEFuZ2xlOiAwLFxyXG4gICAgbGFiZWxXaWR0aDogMTUsXHJcbiAgICBib3JkZXI6IGZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6IDIsXHJcbiAgICBib3JkZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMuZXh0cmEucm9zZSk7XHJcbiAgaWYgKGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID09IDApIHtcclxuICAgIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID0gcm9zZU9wdGlvbi5hY3RpdmVSYWRpdXMgKiBvcHRzLnBpeDtcclxuICB9XHJcbiAgdmFyIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgeDogb3B0cy5hcmVhWzNdICsgKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMixcclxuICAgIHk6IG9wdHMuYXJlYVswXSArIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyXHJcbiAgfTtcclxuICB2YXIgcmFkaXVzID0gTWF0aC5taW4oKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMiAtIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nIC0gY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmcgLSBjb25maWcuX3BpZVRleHRNYXhMZW5ndGhfLCAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMiAtIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nIC0gY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmcpO1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgdmFyIG1pblJhZGl1cyA9IHJvc2VPcHRpb24ubWluUmFkaXVzIHx8IHJhZGl1cyAqIDAuNTtcclxuICBpZihyYWRpdXMgPCBtaW5SYWRpdXMpe1xyXG4gICAgcmFkaXVzID0gbWluUmFkaXVzICsgMTA7XHJcbiAgfVxyXG4gIHNlcmllcyA9IGdldFJvc2VEYXRhUG9pbnRzKHNlcmllcywgcm9zZU9wdGlvbi50eXBlLCBtaW5SYWRpdXMsIHJhZGl1cywgcHJvY2Vzcyk7XHJcbiAgdmFyIGFjdGl2ZVJhZGl1cyA9IHJvc2VPcHRpb24uYWN0aXZlUmFkaXVzICogb3B0cy5waXg7XHJcbiAgcm9zZU9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihyb3NlT3B0aW9uLmxpbmVhclR5cGUsIHJvc2VPcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBzZXJpZXMgPSBzZXJpZXMubWFwKGZ1bmN0aW9uKGVhY2hTZXJpZXMpIHtcclxuICAgIGVhY2hTZXJpZXMuX3N0YXJ0XyArPSAocm9zZU9wdGlvbi5vZmZzZXRBbmdsZSB8fCAwKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICByZXR1cm4gZWFjaFNlcmllcztcclxuICB9KTtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IHNlcmllc0luZGV4KSB7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCByb3NlT3B0aW9uLmFjdGl2ZU9wYWNpdHkgfHwgMC41KSk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgYWN0aXZlUmFkaXVzICsgZWFjaFNlcmllcy5fcmFkaXVzXywgZWFjaFNlcmllcy5fc3RhcnRfLCBlYWNoU2VyaWVzLl9zdGFydF8gKyAyICogZWFjaFNlcmllcy5fcm9zZV9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChyb3NlT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocm9zZU9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICB2YXIgZmlsbGNvbG9yID0gZWFjaFNlcmllcy5jb2xvcjtcclxuICAgIGlmIChyb3NlT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgdmFyIGdyZDtcclxuICAgICAgaWYoY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZUNpcmN1bGFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCAwLGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1cclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihyb3NlT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCAxKSlcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCAxKSlcclxuICAgICAgZmlsbGNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfLCBlYWNoU2VyaWVzLl9zdGFydF8sIGVhY2hTZXJpZXMuX3N0YXJ0XyArIDIgKiBlYWNoU2VyaWVzLl9yb3NlX3Byb3BvcnRpb25fICogTWF0aC5QSSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBpZiAocm9zZU9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdQaWVUZXh0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCByYWRpdXMsIGNlbnRlclBvc2l0aW9uKTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIHNlcmllczogc2VyaWVzXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0FyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgYXJjYmFyT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBzdGFydEFuZ2xlOiAwLjc1LFxyXG4gICAgZW5kQW5nbGU6IDAuMjUsXHJcbiAgICB0eXBlOiAnZGVmYXVsdCcsXHJcbiAgICBkaXJlY3Rpb246ICdjdycsXHJcbiAgICBsaW5lQ2FwOiAncm91bmQnLFxyXG4gICAgd2lkdGg6IDEyICxcclxuICAgIGdhcDogMiAsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgfSwgb3B0cy5leHRyYS5hcmNiYXIpO1xyXG4gIHNlcmllcyA9IGdldEFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBhcmNiYXJPcHRpb24sIHByb2Nlc3MpO1xyXG4gIHZhciBjZW50ZXJQb3NpdGlvbjtcclxuICBpZiAoYXJjYmFyT3B0aW9uLmNlbnRlclggfHwgYXJjYmFyT3B0aW9uLmNlbnRlclkpIHtcclxuICAgIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgICB4OiBhcmNiYXJPcHRpb24uY2VudGVyWCA/IGFyY2Jhck9wdGlvbi5jZW50ZXJYIDogb3B0cy53aWR0aCAvIDIsXHJcbiAgICAgIHk6IGFyY2Jhck9wdGlvbi5jZW50ZXJZID8gYXJjYmFyT3B0aW9uLmNlbnRlclkgOiBvcHRzLmhlaWdodCAvIDJcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgICB4OiBvcHRzLndpZHRoIC8gMixcclxuICAgICAgeTogb3B0cy5oZWlnaHQgLyAyXHJcbiAgICB9O1xyXG4gIH1cclxuICB2YXIgcmFkaXVzO1xyXG4gIGlmIChhcmNiYXJPcHRpb24ucmFkaXVzKSB7XHJcbiAgICByYWRpdXMgPSBhcmNiYXJPcHRpb24ucmFkaXVzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByYWRpdXMgPSBNYXRoLm1pbihjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIHJhZGl1cyAtPSA1ICogb3B0cy5waXg7XHJcbiAgICByYWRpdXMgLT0gYXJjYmFyT3B0aW9uLndpZHRoIC8gMjtcclxuICB9XHJcbiAgcmFkaXVzID0gcmFkaXVzIDwgMTAgPyAxMCA6IHJhZGl1cztcclxuICBhcmNiYXJPcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoYXJjYmFyT3B0aW9uLmxpbmVhclR5cGUsIGFyY2Jhck9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIFxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgZWFjaFNlcmllcyA9IHNlcmllc1tpXTtcclxuICAgIC8v6IOM5pmv6aKc6ImyXHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChhcmNiYXJPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGFyY2Jhck9wdGlvbi5iYWNrZ3JvdW5kQ29sb3IgfHwgJyNFOUU5RTknKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcChhcmNiYXJPcHRpb24ubGluZUNhcCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgaWYgKGFyY2Jhck9wdGlvbi50eXBlID09ICdkZWZhdWx0Jykge1xyXG4gICAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCByYWRpdXMgLSAoYXJjYmFyT3B0aW9uLndpZHRoICogb3B0cy5waXggKyBhcmNiYXJPcHRpb24uZ2FwICogb3B0cy5waXgpICogaSwgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgKiBNYXRoLlBJLCBhcmNiYXJPcHRpb24uZW5kQW5nbGUgKiBNYXRoLlBJLCBhcmNiYXJPcHRpb24uZGlyZWN0aW9uID09ICdjY3cnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIHJhZGl1cyAtIChhcmNiYXJPcHRpb24ud2lkdGggKiBvcHRzLnBpeCArIGFyY2Jhck9wdGlvbi5nYXAgKiBvcHRzLnBpeCkgKiBpLCAwLCAyICogTWF0aC5QSSwgYXJjYmFyT3B0aW9uLmRpcmVjdGlvbiA9PSAnY2N3Jyk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgLy/ov5vluqbmnaFcclxuICAgIHZhciBmaWxsQ29sb3IgPSBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICBpZihhcmNiYXJPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJyl7XHJcbiAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLnggLSByYWRpdXMsIGNlbnRlclBvc2l0aW9uLnksIGNlbnRlclBvc2l0aW9uLnggKyByYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGFyY2Jhck9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgMSkpXHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgMSkpXHJcbiAgICAgIGZpbGxDb2xvciA9IGdyZDtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZmlsbENvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcChhcmNiYXJPcHRpb24ubGluZUNhcCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzIC0gKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4ICsgYXJjYmFyT3B0aW9uLmdhcCAqIG9wdHMucGl4KSAqIGksIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlICogTWF0aC5QSSwgZWFjaFNlcmllcy5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJLCBhcmNiYXJPcHRpb24uZGlyZWN0aW9uID09ICdjY3cnKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIGRyYXdSaW5nVGl0bGUob3B0cywgY29uZmlnLCBjb250ZXh0LCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIHNlcmllczogc2VyaWVzXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0dhdWdlRGF0YVBvaW50cyhjYXRlZ29yaWVzLCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiAxO1xyXG4gIHZhciBnYXVnZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2RlZmF1bHQnLFxyXG4gICAgc3RhcnRBbmdsZTogMC43NSxcclxuICAgIGVuZEFuZ2xlOiAwLjI1LFxyXG4gICAgd2lkdGg6IDE1LFxyXG4gICAgbGFiZWxPZmZzZXQ6MTMsXHJcbiAgICBzcGxpdExpbmU6IHtcclxuICAgICAgZml4UmFkaXVzOiAwLFxyXG4gICAgICBzcGxpdE51bWJlcjogMTAsXHJcbiAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgY29sb3I6ICcjRkZGRkZGJyxcclxuICAgICAgY2hpbGROdW1iZXI6IDUsXHJcbiAgICAgIGNoaWxkV2lkdGg6IDVcclxuICAgIH0sXHJcbiAgICBwb2ludGVyOiB7XHJcbiAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgY29sb3I6ICdhdXRvJ1xyXG4gICAgfVxyXG4gIH0sIG9wdHMuZXh0cmEuZ2F1Z2UpO1xyXG4gIGlmIChnYXVnZU9wdGlvbi5vbGRBbmdsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgIGdhdWdlT3B0aW9uLm9sZEFuZ2xlID0gZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZTtcclxuICB9XHJcbiAgaWYgKGdhdWdlT3B0aW9uLm9sZERhdGEgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICBnYXVnZU9wdGlvbi5vbGREYXRhID0gMDtcclxuICB9XHJcbiAgY2F0ZWdvcmllcyA9IGdldEdhdWdlQXhpc1BvaW50cyhjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlLCBnYXVnZU9wdGlvbi5lbmRBbmdsZSk7XHJcbiAgdmFyIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgeDogb3B0cy53aWR0aCAvIDIsXHJcbiAgICB5OiBvcHRzLmhlaWdodCAvIDJcclxuICB9O1xyXG4gIHZhciByYWRpdXMgPSBNYXRoLm1pbihjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICByYWRpdXMgLT0gNSAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyAtPSBnYXVnZU9wdGlvbi53aWR0aCAvIDI7XHJcbiAgcmFkaXVzID0gcmFkaXVzIDwgMTAgPyAxMCA6IHJhZGl1cztcclxuICB2YXIgaW5uZXJSYWRpdXMgPSByYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aDtcclxuICB2YXIgdG90YWxBbmdsZSA9IDA7XHJcbiAgLy/liKTmlq3ku6rooajnm5jnmoTmoLflvI/vvJpkZWZhdWx055m+5bqm5qC35byP77yMcHJvZ3Jlc3PmlrDmoLflvI9cclxuICBpZiAoZ2F1Z2VPcHRpb24udHlwZSA9PSAncHJvZ3Jlc3MnKSB7XHJcbiAgICAvLyMjIOesrOS4gOatpeeUu+S4reW/g+WchuW9ouiDjOaZr+WSjOi/m+W6puadoeiDjOaZr1xyXG4gICAgLy/kuK3lv4PlnIblvaLog4zmma9cclxuICAgIHZhciBwaWVSYWRpdXMgPSByYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDM7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgbGV0IGdyYWRpZW50ID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55IC0gcGllUmFkaXVzLCBjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55ICsgcGllUmFkaXVzKTtcclxuICAgIC8v6YWN572u5riQ5Y+Y5aGr5YWF77yI6LW354K577ya5Lit5b+D54K55ZCR5LiK5YeP5Y2K5b6E77yb57uT5p2f54K55Lit5b+D54K55ZCR5LiL5Yqg5Y2K5b6E77yJXHJcbiAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYihzZXJpZXNbMF0uY29sb3IsIDAuMykpO1xyXG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKCcxLjAnLCBoZXhUb1JnYihcIiNGRkZGRkZcIiwgMC4xKSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShncmFkaWVudCk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBwaWVSYWRpdXMsIDAsIDIgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgIC8v55S76L+b5bqm5p2h6IOM5pmvXHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChnYXVnZU9wdGlvbi53aWR0aCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGhleFRvUmdiKHNlcmllc1swXS5jb2xvciwgMC4zKSk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ3JvdW5kJyk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgaW5uZXJSYWRpdXMsIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgKiBNYXRoLlBJLCBnYXVnZU9wdGlvbi5lbmRBbmdsZSAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAvLyMjIOesrOS6jOatpeeUu+WIu+W6pue6v1xyXG4gICAgaWYgKGdhdWdlT3B0aW9uLmVuZEFuZ2xlIDwgZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gMiArIGdhdWdlT3B0aW9uLmVuZEFuZ2xlIC0gZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3BsaXRBbmdsZSA9IHRvdGFsQW5nbGUgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXI7XHJcbiAgICBsZXQgY2hpbGRBbmdsZSA9IHRvdGFsQW5nbGUgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXIgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuY2hpbGROdW1iZXI7XHJcbiAgICBsZXQgc3RhcnRYID0gLXJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoICogMC41IC0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmZpeFJhZGl1cztcclxuICAgIGxldCBlbmRYID0gLXJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoIC0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmZpeFJhZGl1cyArIGdhdWdlT3B0aW9uLnNwbGl0TGluZS53aWR0aDtcclxuICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LnJvdGF0ZSgoZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSAtIDEpICogTWF0aC5QSSk7XHJcbiAgICBsZXQgbGVuID0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyICogZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNoaWxkTnVtYmVyICsgMTtcclxuICAgIGxldCBwcm9jID0gc2VyaWVzWzBdLmRhdGEgKiBwcm9jZXNzO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAvL+WIu+W6pue6v+maj+i/m+W6puWPmOiJslxyXG4gICAgICBpZiAocHJvYyA+IChpIC8gbGVuKSkge1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAxKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShoZXhUb1JnYihzZXJpZXNbMF0uY29sb3IsIDAuMykpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDMgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKGVuZFgsIDApO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZShjaGlsZEFuZ2xlICogTWF0aC5QSSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgIC8vIyMg56ys5LiJ5q2l55S76L+b5bqm5p2hXHJcbiAgICBzZXJpZXMgPSBnZXRHYXVnZUFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBnYXVnZU9wdGlvbiwgcHJvY2Vzcyk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChnYXVnZU9wdGlvbi53aWR0aCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHNlcmllc1swXS5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ3JvdW5kJyk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgaW5uZXJSYWRpdXMsIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgKiBNYXRoLlBJLCBzZXJpZXNbMF0uX3Byb3BvcnRpb25fICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIC8vIyMg56ys5Zub5q2l55S75oyH6ZKIXHJcbiAgICBsZXQgcG9pbnRlclJhZGl1cyA9IHJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoICogMi41O1xyXG4gICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQucm90YXRlKChzZXJpZXNbMF0uX3Byb3BvcnRpb25fIC0gMSkgKiBNYXRoLlBJKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChnYXVnZU9wdGlvbi53aWR0aCAvIDMpO1xyXG4gICAgbGV0IGdyYWRpZW50MyA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgLXBvaW50ZXJSYWRpdXMgKiAwLjYsIDAsIHBvaW50ZXJSYWRpdXMgKiAwLjYpO1xyXG4gICAgZ3JhZGllbnQzLmFkZENvbG9yU3RvcCgnMCcsIGhleFRvUmdiKCcjRkZGRkZGJywgMCkpO1xyXG4gICAgZ3JhZGllbnQzLmFkZENvbG9yU3RvcCgnMC41JywgaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAxKSk7XHJcbiAgICBncmFkaWVudDMuYWRkQ29sb3JTdG9wKCcxLjAnLCBoZXhUb1JnYignI0ZGRkZGRicsIDApKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZ3JhZGllbnQzKTtcclxuICAgIGNvbnRleHQuYXJjKDAsIDAsIHBvaW50ZXJSYWRpdXMsIDAuODUgKiBNYXRoLlBJLCAxLjE1ICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc2VyaWVzWzBdLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHNlcmllc1swXS5jb2xvcik7XHJcbiAgICBjb250ZXh0Lm1vdmVUbygtcG9pbnRlclJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoIC8gMyAvIDIsIC00KTtcclxuICAgIGNvbnRleHQubGluZVRvKC1wb2ludGVyUmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggLyAzIC8gMiAtIDQsIDApO1xyXG4gICAgY29udGV4dC5saW5lVG8oLXBvaW50ZXJSYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAvIDMgLyAyLCA0KTtcclxuICAgIGNvbnRleHQubGluZVRvKC1wb2ludGVyUmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggLyAzIC8gMiwgLTQpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAvL2RlZmF1bHTnmb7luqbmoLflvI9cclxuICB9IGVsc2Uge1xyXG4gICAgLy/nlLvog4zmma9cclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGdhdWdlT3B0aW9uLndpZHRoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBlYWNoQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNbaV07XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaENhdGVnb3JpZXMuY29sb3IpO1xyXG4gICAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCByYWRpdXMsIGVhY2hDYXRlZ29yaWVzLl9zdGFydEFuZ2xlXyAqIE1hdGguUEksIGVhY2hDYXRlZ29yaWVzLl9lbmRBbmdsZV8gKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIC8v55S75Yi75bqm57q/XHJcbiAgICBpZiAoZ2F1Z2VPcHRpb24uZW5kQW5nbGUgPCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlKSB7XHJcbiAgICAgIHRvdGFsQW5nbGUgPSAyICsgZ2F1Z2VPcHRpb24uZW5kQW5nbGUgLSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG90YWxBbmdsZSA9IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSBnYXVnZU9wdGlvbi5lbmRBbmdsZTtcclxuICAgIH1cclxuICAgIGxldCBzcGxpdEFuZ2xlID0gdG90YWxBbmdsZSAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICAgIGxldCBjaGlsZEFuZ2xlID0gdG90YWxBbmdsZSAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jaGlsZE51bWJlcjtcclxuICAgIGxldCBzdGFydFggPSAtcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAwLjUgLSBnYXVnZU9wdGlvbi5zcGxpdExpbmUuZml4UmFkaXVzO1xyXG4gICAgbGV0IGVuZFggPSAtcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAwLjUgLSBnYXVnZU9wdGlvbi5zcGxpdExpbmUuZml4UmFkaXVzICsgZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLndpZHRoO1xyXG4gICAgbGV0IGNoaWxkZW5kWCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDAuNSAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXMgKyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuY2hpbGRXaWR0aDtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5yb3RhdGUoKGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShnYXVnZU9wdGlvbi5zcGxpdExpbmUuY29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgyICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCAwKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5yb3RhdGUoc3BsaXRBbmdsZSAqIE1hdGguUEkpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5yb3RhdGUoKGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXIgKiBnYXVnZU9wdGlvbi5zcGxpdExpbmUuY2hpbGROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShnYXVnZU9wdGlvbi5zcGxpdExpbmUuY29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhjaGlsZGVuZFgsIDApO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZShjaGlsZEFuZ2xlICogTWF0aC5QSSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgIC8v55S75oyH6ZKIXHJcbiAgICBzZXJpZXMgPSBnZXRHYXVnZURhdGFQb2ludHMoc2VyaWVzLCBjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbiwgcHJvY2Vzcyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZWFjaFNlcmllcyA9IHNlcmllc1tpXTtcclxuICAgICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZSgoZWFjaFNlcmllcy5fcHJvcG9ydGlvbl8gLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oZ2F1Z2VPcHRpb24ucG9pbnRlci53aWR0aCwgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKDAsIC1nYXVnZU9wdGlvbi5wb2ludGVyLndpZHRoIC8gMik7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKC1pbm5lclJhZGl1cywgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKDAsIGdhdWdlT3B0aW9uLnBvaW50ZXIud2lkdGggLyAyKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oZ2F1Z2VPcHRpb24ucG9pbnRlci53aWR0aCwgMCk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZSgnI0ZGRkZGRicpO1xyXG4gICAgICBjb250ZXh0LmFyYygwLCAwLCBnYXVnZU9wdGlvbi5wb2ludGVyLndpZHRoIC8gNiwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSkge1xyXG4gICAgICBkcmF3R2F1Z2VMYWJlbChnYXVnZU9wdGlvbiwgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbiwgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy/nlLvku6rooajnm5jmoIfpopjvvIzlia/moIfpophcclxuICBkcmF3UmluZ1RpdGxlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIGlmIChwcm9jZXNzID09PSAxICYmIG9wdHMudHlwZSA9PT0gJ2dhdWdlJykge1xyXG4gICAgb3B0cy5leHRyYS5nYXVnZS5vbGRBbmdsZSA9IHNlcmllc1swXS5fcHJvcG9ydGlvbl87XHJcbiAgICBvcHRzLmV4dHJhLmdhdWdlLm9sZERhdGEgPSBzZXJpZXNbMF0uZGF0YTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcclxuICAgIGNhdGVnb3JpZXM6IGNhdGVnb3JpZXMsXHJcbiAgICB0b3RhbEFuZ2xlOiB0b3RhbEFuZ2xlXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JhZGFyRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciByYWRhck9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgZ3JpZENvbG9yOiAnI2NjY2NjYycsXHJcbiAgICBncmlkVHlwZTogJ3JhZGFyJyxcclxuICAgIGdyaWRFdmFsOjEsXHJcbiAgICBheGlzTGFiZWw6ZmFsc2UsXHJcbiAgICBheGlzTGFiZWxUb2ZpeDowLFxyXG4gICAgbGFiZWxTaG93OnRydWUsXHJcbiAgICBsYWJlbENvbG9yOicjNjY2NjY2JyxcclxuICAgIGxhYmVsUG9pbnRTaG93OmZhbHNlLFxyXG4gICAgbGFiZWxQb2ludFJhZGl1czozLFxyXG4gICAgbGFiZWxQb2ludENvbG9yOicjY2NjY2NjJyxcclxuICAgIG9wYWNpdHk6IDAuMixcclxuICAgIGdyaWRDb3VudDogMyxcclxuICAgIGJvcmRlcjpmYWxzZSxcclxuICAgIGJvcmRlcldpZHRoOjIsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgfSwgb3B0cy5leHRyYS5yYWRhcik7XHJcbiAgdmFyIGNvb3JkaW5hdGVBbmdsZSA9IGdldFJhZGFyQ29vcmRpbmF0ZVNlcmllcyhvcHRzLmNhdGVnb3JpZXMubGVuZ3RoKTtcclxuICB2YXIgY2VudGVyUG9zaXRpb24gPSB7XHJcbiAgICB4OiBvcHRzLmFyZWFbM10gKyAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyLFxyXG4gICAgeTogb3B0cy5hcmVhWzBdICsgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDJcclxuICB9O1xyXG4gIHZhciB4ciA9IChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDJcclxuICB2YXIgeXIgPSAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMlxyXG4gIHZhciByYWRpdXMgPSBNYXRoLm1pbih4ciAtIChnZXRNYXhUZXh0TGlzdExlbmd0aChvcHRzLmNhdGVnb3JpZXMsIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCkgKyBjb25maWcucmFkYXJMYWJlbFRleHRNYXJnaW4pLCB5ciAtIGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbik7XHJcbiAgcmFkaXVzIC09IGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbiAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgcmFkaXVzID0gcmFkYXJPcHRpb24ucmFkaXVzID8gcmFkYXJPcHRpb24ucmFkaXVzIDogcmFkaXVzO1xyXG4gIC8vIOeUu+WIhuWJsue6v1xyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHJhZGFyT3B0aW9uLmdyaWRDb2xvcik7XHJcbiAgY29vcmRpbmF0ZUFuZ2xlLmZvckVhY2goZnVuY3Rpb24oYW5nbGUsaW5kZXgpIHtcclxuICAgIHZhciBwb3MgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSksIHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKSwgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBpZiAoaW5kZXggJSByYWRhck9wdGlvbi5ncmlkRXZhbCA9PSAwKSB7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKHBvcy54LCBwb3MueSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgY29udGV4dC5zdHJva2UoKTtcclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIFxyXG4gIC8vIOeUu+iDjOaZr+e9keagvFxyXG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHtcclxuICAgIHZhciBzdGFydFBvcyA9IHt9O1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHJhZGFyT3B0aW9uLmdyaWRDb2xvcik7XHJcbiAgICBpZiAocmFkYXJPcHRpb24uZ3JpZFR5cGUgPT0gJ3JhZGFyJykge1xyXG4gICAgICBjb29yZGluYXRlQW5nbGUuZm9yRWFjaChmdW5jdGlvbihhbmdsZSwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgcG9zID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocmFkaXVzIC8gcmFkYXJPcHRpb24uZ3JpZENvdW50ICogaSAqIE1hdGguY29zKGFuZ2xlKSwgcmFkaXVzIC9cclxuICAgICAgICAgIHJhZGFyT3B0aW9uLmdyaWRDb3VudCAqIGkgKiBNYXRoLnNpbihhbmdsZSksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgICAgIHN0YXJ0UG9zID0gcG9zO1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9zLngsIHBvcy55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocG9zLngsIHBvcy55KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFBvcy54LCBzdGFydFBvcy55KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb3MgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgLyByYWRhck9wdGlvbi5ncmlkQ291bnQgKiBpICogTWF0aC5jb3MoMS41KSwgcmFkaXVzIC8gcmFkYXJPcHRpb24uZ3JpZENvdW50ICogaSAqIE1hdGguc2luKDEuNSksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgY2VudGVyUG9zaXRpb24ueSAtIHBvcy55LCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgfTtcclxuICBmb3IgKHZhciBpID0gMTsgaSA8PSByYWRhck9wdGlvbi5ncmlkQ291bnQ7IGkrKykge1xyXG4gICAgX2xvb3AoaSk7XHJcbiAgfVxyXG4gIHJhZGFyT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKHJhZGFyT3B0aW9uLmxpbmVhclR5cGUsIHJhZGFyT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgdmFyIHJhZGFyRGF0YVBvaW50cyA9IGdldFJhZGFyRGF0YVBvaW50cyhjb29yZGluYXRlQW5nbGUsIGNlbnRlclBvc2l0aW9uLCByYWRpdXMsIHNlcmllcywgb3B0cywgcHJvY2Vzcyk7XHJcbiAgcmFkYXJEYXRhUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIC8vIOe7mOWItuWMuuWfn+aVsOaNrlxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKHJhZGFyT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIFxyXG4gICAgdmFyIGZpbGxjb2xvciA9IGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIHJhZGFyT3B0aW9uLm9wYWNpdHkpO1xyXG4gICAgaWYgKHJhZGFyT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgdmFyIGdyZDtcclxuICAgICAgaWYoY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZUNpcmN1bGFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIDAsY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzKVxyXG4gICAgICB9XHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IocmFkYXJPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW3Nlcmllc0luZGV4XS5saW5lYXJJbmRleF0sIHJhZGFyT3B0aW9uLm9wYWNpdHkpKVxyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIHJhZGFyT3B0aW9uLm9wYWNpdHkpKVxyXG4gICAgICBmaWxsY29sb3IgPSBncmRcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbGNvbG9yKTtcclxuICAgIGVhY2hTZXJpZXMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ucG9zaXRpb24ueCwgaXRlbS5wb3NpdGlvbi55KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnBvc2l0aW9uLngsIGl0ZW0ucG9zaXRpb24ueSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgaWYocmFkYXJPcHRpb24uYm9yZGVyID09PSB0cnVlKXtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZSAhPT0gZmFsc2UpIHtcclxuICAgICAgdmFyIHBvaW50cyA9IGVhY2hTZXJpZXMuZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnBvc2l0aW9uO1xyXG4gICAgICB9KTtcclxuICAgICAgZHJhd1BvaW50U2hhcGUocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIC8vIOeUu+WIu+W6puWAvFxyXG4gIGlmKHJhZGFyT3B0aW9uLmF4aXNMYWJlbCA9PT0gdHJ1ZSl7XHJcbiAgICBjb25zdCBtYXhEYXRhID0gTWF0aC5tYXgocmFkYXJPcHRpb24ubWF4LCBNYXRoLm1heC5hcHBseShudWxsLCBkYXRhQ29tYmluZShzZXJpZXMpKSk7XHJcbiAgICBjb25zdCBzdGVwTGVuZ3RoID0gcmFkaXVzIC8gcmFkYXJPcHRpb24uZ3JpZENvdW50O1xyXG4gICAgY29uc3QgZm9udFNpemUgPSBvcHRzLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMuZm9udENvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGFyT3B0aW9uLmdyaWRDb3VudCArIDE7IGkrKykge1xyXG4gICAgICBsZXQgbGFiZWwgPSBpICogbWF4RGF0YSAvIHJhZGFyT3B0aW9uLmdyaWRDb3VudDtcclxuICAgICAgbGFiZWwgPSBsYWJlbC50b0ZpeGVkKHJhZGFyT3B0aW9uLmF4aXNMYWJlbFRvZml4KTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcobGFiZWwpLCBjZW50ZXJQb3NpdGlvbi54ICsgMyAqIG9wdHMucGl4LCBjZW50ZXJQb3NpdGlvbi55IC0gaSAqIHN0ZXBMZW5ndGggKyBmb250U2l6ZSAvIDIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICAvLyBkcmF3IGxhYmVsIHRleHRcclxuICBkcmF3UmFkYXJMYWJlbChjb29yZGluYXRlQW5nbGUsIHJhZGl1cywgY2VudGVyUG9zaXRpb24sIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgXHJcbiAgLy8gZHJhdyBkYXRhTGFiZWxcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHJhZGFyRGF0YVBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIHZhciBmb250U2l6ZSA9IGVhY2hTZXJpZXMudGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGVhY2hTZXJpZXMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgLy/lpoLmnpzmmK/kuK3lv4PngrnlnoLnm7TnmoTkuIrkuIvngrnkvY1cclxuICAgICAgICBpZihNYXRoLmFicyhpdGVtLnBvc2l0aW9uLnggLSBjZW50ZXJQb3NpdGlvbi54KTwyKXtcclxuICAgICAgICAgIC8v5aaC5p6c5Zyo5LiK6Z2iXHJcbiAgICAgICAgICBpZihpdGVtLnBvc2l0aW9uLnkgPCBjZW50ZXJQb3NpdGlvbi55KXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udmFsdWUsIGl0ZW0ucG9zaXRpb24ueCwgaXRlbS5wb3NpdGlvbi55IC0gNCk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udmFsdWUsIGl0ZW0ucG9zaXRpb24ueCwgaXRlbS5wb3NpdGlvbi55ICsgZm9udFNpemUgKyAyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIC8v5aaC5p6c5Zyo5bem5L6nXHJcbiAgICAgICAgICBpZihpdGVtLnBvc2l0aW9uLnggPCBjZW50ZXJQb3NpdGlvbi54KXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS52YWx1ZSwgaXRlbS5wb3NpdGlvbi54IC0gNCwgaXRlbS5wb3NpdGlvbi55ICsgZm9udFNpemUgLyAyIC0gMik7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2xlZnQnKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLnZhbHVlLCBpdGVtLnBvc2l0aW9uLnggKyA0LCBpdGVtLnBvc2l0aW9uLnkgKyBmb250U2l6ZSAvIDIgLSAyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gIH1cclxuICBcclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgYW5nbGVMaXN0OiBjb29yZGluYXRlQW5nbGVcclxuICB9O1xyXG59XHJcblxyXG4vLyDnu4/nuqzluqbovazloqjljaHmiZhcclxuZnVuY3Rpb24gbG9ubGF0Mm1lcmNhdG9yKGxvbmdpdHVkZSwgbGF0aXR1ZGUpIHtcclxuICB2YXIgbWVyY2F0b3IgPSBBcnJheSgyKTtcclxuICB2YXIgeCA9IGxvbmdpdHVkZSAqIDIwMDM3NTA4LjM0IC8gMTgwO1xyXG4gIHZhciB5ID0gTWF0aC5sb2coTWF0aC50YW4oKDkwICsgbGF0aXR1ZGUpICogTWF0aC5QSSAvIDM2MCkpIC8gKE1hdGguUEkgLyAxODApO1xyXG4gIHkgPSB5ICogMjAwMzc1MDguMzQgLyAxODA7XHJcbiAgbWVyY2F0b3JbMF0gPSB4O1xyXG4gIG1lcmNhdG9yWzFdID0geTtcclxuICByZXR1cm4gbWVyY2F0b3I7XHJcbn1cclxuXHJcbi8vIOWiqOWNoeaJmOi9rOe7j+e6rOW6plxyXG5mdW5jdGlvbiBtZXJjYXRvcjJsb25sYXQobG9uZ2l0dWRlLCBsYXRpdHVkZSkge1xyXG4gIHZhciBsb25sYXQgPSBBcnJheSgyKVxyXG4gIHZhciB4ID0gbG9uZ2l0dWRlIC8gMjAwMzc1MDguMzQgKiAxODA7XHJcbiAgdmFyIHkgPSBsYXRpdHVkZSAvIDIwMDM3NTA4LjM0ICogMTgwO1xyXG4gIHkgPSAxODAgLyBNYXRoLlBJICogKDIgKiBNYXRoLmF0YW4oTWF0aC5leHAoeSAqIE1hdGguUEkgLyAxODApKSAtIE1hdGguUEkgLyAyKTtcclxuICBsb25sYXRbMF0gPSB4O1xyXG4gIGxvbmxhdFsxXSA9IHk7XHJcbiAgcmV0dXJuIGxvbmxhdDtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdCb3goZGF0YSkge1xyXG4gIHZhciBib3VuZHMgPSB7fSxjb29yZHM7XHJcbiAgYm91bmRzLnhNaW4gPSAxODA7XHJcbiAgYm91bmRzLnhNYXggPSAwO1xyXG4gIGJvdW5kcy55TWluID0gOTA7XHJcbiAgYm91bmRzLnlNYXggPSAwXHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB2YXIgY29vcmRhID0gZGF0YVtpXS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBjb29yZGEubGVuZ3RoOyBrKyspIHtcclxuICAgICAgY29vcmRzID0gY29vcmRhW2tdO1xyXG4gICAgICBpZiAoY29vcmRzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgY29vcmRzID0gY29vcmRzWzBdXHJcbiAgICAgIH1cclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb29yZHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB2YXIgbG9uZ2l0dWRlID0gY29vcmRzW2pdWzBdO1xyXG4gICAgICAgIHZhciBsYXRpdHVkZSA9IGNvb3Jkc1tqXVsxXTtcclxuICAgICAgICB2YXIgcG9pbnQgPSB7XHJcbiAgICAgICAgICB4OiBsb25naXR1ZGUsXHJcbiAgICAgICAgICB5OiBsYXRpdHVkZVxyXG4gICAgICAgIH1cclxuICAgICAgICBib3VuZHMueE1pbiA9IGJvdW5kcy54TWluIDwgcG9pbnQueCA/IGJvdW5kcy54TWluIDogcG9pbnQueDtcclxuICAgICAgICBib3VuZHMueE1heCA9IGJvdW5kcy54TWF4ID4gcG9pbnQueCA/IGJvdW5kcy54TWF4IDogcG9pbnQueDtcclxuICAgICAgICBib3VuZHMueU1pbiA9IGJvdW5kcy55TWluIDwgcG9pbnQueSA/IGJvdW5kcy55TWluIDogcG9pbnQueTtcclxuICAgICAgICBib3VuZHMueU1heCA9IGJvdW5kcy55TWF4ID4gcG9pbnQueSA/IGJvdW5kcy55TWF4IDogcG9pbnQueTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gYm91bmRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjb29yZGluYXRlVG9Qb2ludChsYXRpdHVkZSwgbG9uZ2l0dWRlLCBib3VuZHMsIHNjYWxlLCB4b2Zmc2V0LCB5b2Zmc2V0KSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHg6IChsb25naXR1ZGUgLSBib3VuZHMueE1pbikgKiBzY2FsZSArIHhvZmZzZXQsXHJcbiAgICB5OiAoYm91bmRzLnlNYXggLSBsYXRpdHVkZSkgKiBzY2FsZSArIHlvZmZzZXRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBwb2ludFRvQ29vcmRpbmF0ZShwb2ludFksIHBvaW50WCwgYm91bmRzLCBzY2FsZSwgeG9mZnNldCwgeW9mZnNldCkge1xyXG4gIHJldHVybiB7XHJcbiAgICB4OiAocG9pbnRYIC0geG9mZnNldCkgLyBzY2FsZSArIGJvdW5kcy54TWluLFxyXG4gICAgeTogYm91bmRzLnlNYXggLSAocG9pbnRZIC0geW9mZnNldCkgLyBzY2FsZVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUmF5SW50ZXJzZWN0c1NlZ21lbnQocG9pLCBzX3BvaSwgZV9wb2kpIHtcclxuICBpZiAoc19wb2lbMV0gPT0gZV9wb2lbMV0pIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKHNfcG9pWzFdID4gcG9pWzFdICYmIGVfcG9pWzFdID4gcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChzX3BvaVsxXSA8IHBvaVsxXSAmJiBlX3BvaVsxXSA8IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBpZiAoc19wb2lbMV0gPT0gcG9pWzFdICYmIGVfcG9pWzFdID4gcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChlX3BvaVsxXSA9PSBwb2lbMV0gJiYgc19wb2lbMV0gPiBwb2lbMV0pIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKHNfcG9pWzBdIDwgcG9pWzBdICYmIGVfcG9pWzFdIDwgcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGxldCB4c2VnID0gZV9wb2lbMF0gLSAoZV9wb2lbMF0gLSBzX3BvaVswXSkgKiAoZV9wb2lbMV0gLSBwb2lbMV0pIC8gKGVfcG9pWzFdIC0gc19wb2lbMV0pO1xyXG4gIGlmICh4c2VnIDwgcG9pWzBdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNQb2lXaXRoaW5Qb2x5KHBvaSwgcG9seSwgbWVyY2F0b3IpIHtcclxuICBsZXQgc2luc2MgPSAwO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9seS5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGVwb2x5ID0gcG9seVtpXVswXTtcclxuICAgIGlmIChwb2x5Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIGVwb2x5ID0gcG9seVtpXVswXVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBlcG9seS5sZW5ndGggLSAxOyBqKyspIHtcclxuICAgICAgbGV0IHNfcG9pID0gZXBvbHlbal07XHJcbiAgICAgIGxldCBlX3BvaSA9IGVwb2x5W2ogKyAxXTtcclxuICAgICAgaWYgKG1lcmNhdG9yKSB7XHJcbiAgICAgICAgc19wb2kgPSBsb25sYXQybWVyY2F0b3IoZXBvbHlbal1bMF0sIGVwb2x5W2pdWzFdKTtcclxuICAgICAgICBlX3BvaSA9IGxvbmxhdDJtZXJjYXRvcihlcG9seVtqICsgMV1bMF0sIGVwb2x5W2ogKyAxXVsxXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzUmF5SW50ZXJzZWN0c1NlZ21lbnQocG9pLCBzX3BvaSwgZV9wb2kpKSB7XHJcbiAgICAgICAgc2luc2MgKz0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoc2luc2MgJSAyID09IDEpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TWFwRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBtYXBPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGJvcmRlcjogdHJ1ZSxcclxuICAgIG1lcmNhdG9yOiBmYWxzZSxcclxuICAgIGJvcmRlcldpZHRoOiAxLFxyXG4gICAgYWN0aXZlOnRydWUsXHJcbiAgICBib3JkZXJDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgZmlsbE9wYWNpdHk6IDAuNixcclxuICAgIGFjdGl2ZUJvcmRlckNvbG9yOiAnI2YwNDg2NCcsXHJcbiAgICBhY3RpdmVGaWxsQ29sb3I6ICcjZmFjYzE0JyxcclxuICAgIGFjdGl2ZUZpbGxPcGFjaXR5OiAxXHJcbiAgfSwgb3B0cy5leHRyYS5tYXApO1xyXG4gIHZhciBjb29yZHMsIHBvaW50O1xyXG4gIHZhciBkYXRhID0gc2VyaWVzO1xyXG4gIHZhciBib3VuZHMgPSBnZXRCb3VuZGluZ0JveChkYXRhKTtcclxuICBpZiAobWFwT3B0aW9uLm1lcmNhdG9yKSB7XHJcbiAgICB2YXIgbWF4ID0gbG9ubGF0Mm1lcmNhdG9yKGJvdW5kcy54TWF4LCBib3VuZHMueU1heClcclxuICAgIHZhciBtaW4gPSBsb25sYXQybWVyY2F0b3IoYm91bmRzLnhNaW4sIGJvdW5kcy55TWluKVxyXG4gICAgYm91bmRzLnhNYXggPSBtYXhbMF1cclxuICAgIGJvdW5kcy55TWF4ID0gbWF4WzFdXHJcbiAgICBib3VuZHMueE1pbiA9IG1pblswXVxyXG4gICAgYm91bmRzLnlNaW4gPSBtaW5bMV1cclxuICB9XHJcbiAgdmFyIHhTY2FsZSA9IG9wdHMud2lkdGggLyBNYXRoLmFicyhib3VuZHMueE1heCAtIGJvdW5kcy54TWluKTtcclxuICB2YXIgeVNjYWxlID0gb3B0cy5oZWlnaHQgLyBNYXRoLmFicyhib3VuZHMueU1heCAtIGJvdW5kcy55TWluKTtcclxuICB2YXIgc2NhbGUgPSB4U2NhbGUgPCB5U2NhbGUgPyB4U2NhbGUgOiB5U2NhbGU7XHJcbiAgdmFyIHhvZmZzZXQgPSBvcHRzLndpZHRoIC8gMiAtIE1hdGguYWJzKGJvdW5kcy54TWF4IC0gYm91bmRzLnhNaW4pIC8gMiAqIHNjYWxlO1xyXG4gIHZhciB5b2Zmc2V0ID0gb3B0cy5oZWlnaHQgLyAyIC0gTWF0aC5hYnMoYm91bmRzLnlNYXggLSBib3VuZHMueU1pbikgLyAyICogc2NhbGU7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgobWFwT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShtYXBPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBzZXJpZXNbaV0uZmlsbE9wYWNpdHl8fG1hcE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgaWYgKG1hcE9wdGlvbi5hY3RpdmUgPT0gdHJ1ZSAmJiBvcHRzLnRvb2x0aXApIHtcclxuICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShtYXBPcHRpb24uYWN0aXZlQm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKG1hcE9wdGlvbi5hY3RpdmVGaWxsQ29sb3IsIG1hcE9wdGlvbi5hY3RpdmVGaWxsT3BhY2l0eSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB2YXIgY29vcmRhID0gZGF0YVtpXS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBjb29yZGEubGVuZ3RoOyBrKyspIHtcclxuICAgICAgY29vcmRzID0gY29vcmRhW2tdO1xyXG4gICAgICBpZiAoY29vcmRzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgY29vcmRzID0gY29vcmRzWzBdXHJcbiAgICAgIH1cclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb29yZHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB2YXIgZ2Fvc2kgPSBBcnJheSgyKTtcclxuICAgICAgICBpZiAobWFwT3B0aW9uLm1lcmNhdG9yKSB7XHJcbiAgICAgICAgICBnYW9zaSA9IGxvbmxhdDJtZXJjYXRvcihjb29yZHNbal1bMF0sIGNvb3Jkc1tqXVsxXSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ2Fvc2kgPSBjb29yZHNbal1cclxuICAgICAgICB9XHJcbiAgICAgICAgcG9pbnQgPSBjb29yZGluYXRlVG9Qb2ludChnYW9zaVsxXSwgZ2Fvc2lbMF0sIGJvdW5kcywgc2NhbGUsIHhvZmZzZXQsIHlvZmZzZXQpXHJcbiAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludC54LCBwb2ludC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBpZiAobWFwT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciBjZW50ZXJQb2ludCA9IGRhdGFbaV0ucHJvcGVydGllcy5jZW50cm9pZDtcclxuICAgICAgaWYgKGNlbnRlclBvaW50KSB7XHJcbiAgICAgICAgaWYgKG1hcE9wdGlvbi5tZXJjYXRvcikge1xyXG4gICAgICAgICAgY2VudGVyUG9pbnQgPSBsb25sYXQybWVyY2F0b3IoZGF0YVtpXS5wcm9wZXJ0aWVzLmNlbnRyb2lkWzBdLCBkYXRhW2ldLnByb3BlcnRpZXMuY2VudHJvaWRbMV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvaW50ID0gY29vcmRpbmF0ZVRvUG9pbnQoY2VudGVyUG9pbnRbMV0sIGNlbnRlclBvaW50WzBdLCBib3VuZHMsIHNjYWxlLCB4b2Zmc2V0LCB5b2Zmc2V0KTtcclxuICAgICAgICBsZXQgZm9udFNpemUgPSBkYXRhW2ldLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICAgIGxldCBmb250Q29sb3IgPSBkYXRhW2ldLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcjtcclxuICAgICAgICBpZihtYXBPcHRpb24uYWN0aXZlICYmIG1hcE9wdGlvbi5hY3RpdmVUZXh0Q29sb3IgJiYgb3B0cy50b29sdGlwICYmIG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKXtcclxuICAgICAgICAgIGZvbnRDb2xvciA9IG1hcE9wdGlvbi5hY3RpdmVUZXh0Q29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0ZXh0ID0gZGF0YVtpXS5wcm9wZXJ0aWVzLm5hbWU7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKVxyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZvbnRDb2xvcilcclxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIHBvaW50LnggLSBtZWFzdXJlVGV4dCh0ZXh0LCBmb250U2l6ZSwgY29udGV4dCkgLyAyLCBwb2ludC55ICsgZm9udFNpemUgLyAyKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb3B0cy5jaGFydERhdGEubWFwRGF0YSA9IHtcclxuICAgIGJvdW5kczogYm91bmRzLFxyXG4gICAgc2NhbGU6IHNjYWxlLFxyXG4gICAgeG9mZnNldDogeG9mZnNldCxcclxuICAgIHlvZmZzZXQ6IHlvZmZzZXQsXHJcbiAgICBtZXJjYXRvcjogbWFwT3B0aW9uLm1lcmNhdG9yXHJcbiAgfVxyXG4gIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgMSk7XHJcbiAgY29udGV4dC5kcmF3KCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG5vcm1hbEludChtaW4sIG1heCwgaXRlcikge1xyXG4gIGl0ZXIgPSBpdGVyID09IDAgPyAxIDogaXRlcjtcclxuICB2YXIgYXJyID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyOyBpKyspIHtcclxuICAgIGFycltpXSA9IE1hdGgucmFuZG9tKCk7XHJcbiAgfTtcclxuICByZXR1cm4gTWF0aC5mbG9vcihhcnIucmVkdWNlKGZ1bmN0aW9uKGksIGopIHtcclxuICAgIHJldHVybiBpICsgalxyXG4gIH0pIC8gaXRlciAqIChtYXggLSBtaW4pKSArIG1pbjtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGNvbGxpc2lvbk5ldyhhcmVhLCBwb2ludHMsIHdpZHRoLCBoZWlnaHQpIHtcclxuICB2YXIgaXNJbiA9IGZhbHNlO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAocG9pbnRzW2ldLmFyZWEpIHtcclxuICAgICAgaWYgKGFyZWFbM10gPCBwb2ludHNbaV0uYXJlYVsxXSB8fCBhcmVhWzBdID4gcG9pbnRzW2ldLmFyZWFbMl0gfHwgYXJlYVsxXSA+IHBvaW50c1tpXS5hcmVhWzNdIHx8IGFyZWFbMl0gPCBwb2ludHNbaV0uYXJlYVswXSkge1xyXG4gICAgICAgIGlmIChhcmVhWzBdIDwgMCB8fCBhcmVhWzFdIDwgMCB8fCBhcmVhWzJdID4gd2lkdGggfHwgYXJlYVszXSA+IGhlaWdodCkge1xyXG4gICAgICAgICAgaXNJbiA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc0luID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gaXNJbjtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGdldFdvcmRDbG91ZFBvaW50KG9wdHMsIHR5cGUsIGNvbnRleHQpIHtcclxuICBsZXQgcG9pbnRzID0gb3B0cy5zZXJpZXM7XHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICdub3JtYWwnOlxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCB0ZXh0ID0gcG9pbnRzW2ldLm5hbWU7XHJcbiAgICAgICAgbGV0IHRIZWlnaHQgPSBwb2ludHNbaV0udGV4dFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgICBsZXQgdFdpZHRoID0gbWVhc3VyZVRleHQodGV4dCwgdEhlaWdodCwgY29udGV4dCk7XHJcbiAgICAgICAgbGV0IHgsIHk7XHJcbiAgICAgICAgbGV0IGFyZWE7XHJcbiAgICAgICAgbGV0IGJyZWFrbnVtID0gMDtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgYnJlYWtudW0rKztcclxuICAgICAgICAgIHggPSBub3JtYWxJbnQoLW9wdHMud2lkdGggLyAyLCBvcHRzLndpZHRoIC8gMiwgNSkgLSB0V2lkdGggLyAyO1xyXG4gICAgICAgICAgeSA9IG5vcm1hbEludCgtb3B0cy5oZWlnaHQgLyAyLCBvcHRzLmhlaWdodCAvIDIsIDUpICsgdEhlaWdodCAvIDI7XHJcbiAgICAgICAgICBhcmVhID0gW3ggLSA1ICsgb3B0cy53aWR0aCAvIDIsIHkgLSA1IC0gdEhlaWdodCArIG9wdHMuaGVpZ2h0IC8gMiwgeCArIHRXaWR0aCArIDUgKyBvcHRzLndpZHRoIC8gMiwgeSArIDUgK1xyXG4gICAgICAgICAgICBvcHRzLmhlaWdodCAvIDJcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBsZXQgaXNDb2xsaXNpb24gPSBjb2xsaXNpb25OZXcoYXJlYSwgcG9pbnRzLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAoIWlzQ29sbGlzaW9uKSBicmVhaztcclxuICAgICAgICAgIGlmIChicmVha251bSA9PSAxMDAwKSB7XHJcbiAgICAgICAgICAgIGFyZWEgPSBbLTEwMCwgLTEwMCwgLTEwMCwgLTEwMF07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcG9pbnRzW2ldLmFyZWEgPSBhcmVhO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAndmVydGljYWwnOlxyXG4gICAgICBmdW5jdGlvbiBTcGluKCkge1xyXG4gICAgICAgIC8v6I635Y+W5Z2H5YyA6ZqP5py65YC877yM5piv5ZCm5peL6L2s77yM5peL6L2s55qE5qaC546H5Li677yIMS0wLjXvvIlcclxuICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IDAuNykge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH07XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHRleHQgPSBwb2ludHNbaV0ubmFtZTtcclxuICAgICAgICBsZXQgdEhlaWdodCA9IHBvaW50c1tpXS50ZXh0U2l6ZSAqIG9wdHMucGl4O1xyXG4gICAgICAgIGxldCB0V2lkdGggPSBtZWFzdXJlVGV4dCh0ZXh0LCB0SGVpZ2h0LCBjb250ZXh0KTtcclxuICAgICAgICBsZXQgaXNTcGluID0gU3BpbigpO1xyXG4gICAgICAgIGxldCB4LCB5LCBhcmVhLCBhcmVhdjtcclxuICAgICAgICBsZXQgYnJlYWtudW0gPSAwO1xyXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICBicmVha251bSsrO1xyXG4gICAgICAgICAgbGV0IGlzQ29sbGlzaW9uO1xyXG4gICAgICAgICAgaWYgKGlzU3Bpbikge1xyXG4gICAgICAgICAgICB4ID0gbm9ybWFsSW50KC1vcHRzLndpZHRoIC8gMiwgb3B0cy53aWR0aCAvIDIsIDUpIC0gdFdpZHRoIC8gMjtcclxuICAgICAgICAgICAgeSA9IG5vcm1hbEludCgtb3B0cy5oZWlnaHQgLyAyLCBvcHRzLmhlaWdodCAvIDIsIDUpICsgdEhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgIGFyZWEgPSBbeSAtIDUgLSB0V2lkdGggKyBvcHRzLndpZHRoIC8gMiwgKC14IC0gNSArIG9wdHMuaGVpZ2h0IC8gMiksIHkgKyA1ICsgb3B0cy53aWR0aCAvIDIsICgteCArIHRIZWlnaHQgKyA1ICsgb3B0cy5oZWlnaHQgLyAyKV07XHJcbiAgICAgICAgICAgIGFyZWF2ID0gW29wdHMud2lkdGggLSAob3B0cy53aWR0aCAvIDIgLSBvcHRzLmhlaWdodCAvIDIpIC0gKC14ICsgdEhlaWdodCArIDUgKyBvcHRzLmhlaWdodCAvIDIpIC0gNSwgKG9wdHMuaGVpZ2h0IC8gMiAtIG9wdHMud2lkdGggLyAyKSArICh5IC0gNSAtIHRXaWR0aCArIG9wdHMud2lkdGggLyAyKSAtIDUsIG9wdHMud2lkdGggLSAob3B0cy53aWR0aCAvIDIgLSBvcHRzLmhlaWdodCAvIDIpIC0gKC14ICsgdEhlaWdodCArIDUgKyBvcHRzLmhlaWdodCAvIDIpICsgdEhlaWdodCwgKG9wdHMuaGVpZ2h0IC8gMiAtIG9wdHMud2lkdGggLyAyKSArICh5IC0gNSAtIHRXaWR0aCArIG9wdHMud2lkdGggLyAyKSArIHRXaWR0aCArIDVdO1xyXG4gICAgICAgICAgICBpc0NvbGxpc2lvbiA9IGNvbGxpc2lvbk5ldyhhcmVhdiwgcG9pbnRzLCBvcHRzLmhlaWdodCwgb3B0cy53aWR0aCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4ID0gbm9ybWFsSW50KC1vcHRzLndpZHRoIC8gMiwgb3B0cy53aWR0aCAvIDIsIDUpIC0gdFdpZHRoIC8gMjtcclxuICAgICAgICAgICAgeSA9IG5vcm1hbEludCgtb3B0cy5oZWlnaHQgLyAyLCBvcHRzLmhlaWdodCAvIDIsIDUpICsgdEhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgIGFyZWEgPSBbeCAtIDUgKyBvcHRzLndpZHRoIC8gMiwgeSAtIDUgLSB0SGVpZ2h0ICsgb3B0cy5oZWlnaHQgLyAyLCB4ICsgdFdpZHRoICsgNSArIG9wdHMud2lkdGggLyAyLCB5ICsgNSArIG9wdHMuaGVpZ2h0IC8gMl07XHJcbiAgICAgICAgICAgIGlzQ29sbGlzaW9uID0gY29sbGlzaW9uTmV3KGFyZWEsIHBvaW50cywgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFpc0NvbGxpc2lvbikgYnJlYWs7XHJcbiAgICAgICAgICBpZiAoYnJlYWtudW0gPT0gMTAwMCkge1xyXG4gICAgICAgICAgICBhcmVhID0gWy0xMDAwLCAtMTAwMCwgLTEwMDAsIC0xMDAwXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoaXNTcGluKSB7XHJcbiAgICAgICAgICBwb2ludHNbaV0uYXJlYSA9IGFyZWF2O1xyXG4gICAgICAgICAgcG9pbnRzW2ldLmFyZWF2ID0gYXJlYTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcG9pbnRzW2ldLmFyZWEgPSBhcmVhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwb2ludHNbaV0ucm90YXRlID0gaXNTcGluO1xyXG4gICAgICB9O1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1dvcmRDbG91ZERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICBsZXQgd29yZE9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ25vcm1hbCcsXHJcbiAgICBhdXRvQ29sb3JzOiB0cnVlXHJcbiAgfSwgb3B0cy5leHRyYS53b3JkKTtcclxuICBpZiAoIW9wdHMuY2hhcnREYXRhLndvcmRDbG91ZERhdGEpIHtcclxuICAgIG9wdHMuY2hhcnREYXRhLndvcmRDbG91ZERhdGEgPSBnZXRXb3JkQ2xvdWRQb2ludChvcHRzLCB3b3JkT3B0aW9uLnR5cGUsIGNvbnRleHQpO1xyXG4gIH1cclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMuYmFja2dyb3VuZCk7XHJcbiAgY29udGV4dC5yZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgcG9pbnRzID0gb3B0cy5jaGFydERhdGEud29yZENsb3VkRGF0YTtcclxuICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLndpZHRoIC8gMiwgb3B0cy5oZWlnaHQgLyAyKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICBpZiAocG9pbnRzW2ldLnJvdGF0ZSkge1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZSg5MCAqIE1hdGguUEkgLyAxODApO1xyXG4gICAgfVxyXG4gICAgbGV0IHRleHQgPSBwb2ludHNbaV0ubmFtZTtcclxuICAgIGxldCB0SGVpZ2h0ID0gcG9pbnRzW2ldLnRleHRTaXplICogb3B0cy5waXg7XHJcbiAgICBsZXQgdFdpZHRoID0gbWVhc3VyZVRleHQodGV4dCwgdEhlaWdodCwgY29udGV4dCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShwb2ludHNbaV0uY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUocG9pbnRzW2ldLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUodEhlaWdodCk7XHJcbiAgICBpZiAocG9pbnRzW2ldLnJvdGF0ZSkge1xyXG4gICAgICBpZiAocG9pbnRzW2ldLmFyZWF2WzBdID4gMCkge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhdlswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYXZbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhdlswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYXZbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCAocG9pbnRzW2ldLmFyZWF2WzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhdlsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHBvaW50c1tpXS5hcmVhWzBdID4gMCkge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhWzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhWzFdICsgNSArIHRIZWlnaHQgLSBvcHRzLmhlaWdodCAvIDIpICogcHJvY2Vzcyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYVswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYVsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYVswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYVsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0Z1bm5lbERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICBsZXQgZnVubmVsT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOidmdW5uZWwnLFxyXG4gICAgYWN0aXZlV2lkdGg6IDEwLFxyXG4gICAgYWN0aXZlT3BhY2l0eTogMC4zLFxyXG4gICAgYm9yZGVyOiBmYWxzZSxcclxuICAgIGJvcmRlcldpZHRoOiAyLFxyXG4gICAgYm9yZGVyQ29sb3I6ICcjRkZGRkZGJyxcclxuICAgIGZpbGxPcGFjaXR5OiAxLFxyXG4gICAgbWluU2l6ZTogMCxcclxuICAgIGxhYmVsQWxpZ246ICdyaWdodCcsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgfSwgb3B0cy5leHRyYS5mdW5uZWwpO1xyXG4gIGxldCBlYWNoU3BhY2luZyA9IChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyBzZXJpZXMubGVuZ3RoO1xyXG4gIGxldCBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIsXHJcbiAgICB5OiBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXVxyXG4gIH07XHJcbiAgbGV0IGFjdGl2ZVdpZHRoID0gZnVubmVsT3B0aW9uLmFjdGl2ZVdpZHRoICogb3B0cy5waXg7XHJcbiAgbGV0IHJhZGl1cyA9IE1hdGgubWluKChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIgLSBhY3RpdmVXaWR0aCwgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDIgLSBhY3RpdmVXaWR0aCk7XHJcbiAgbGV0IHNlcmllc05ldyA9IGdldEZ1bm5lbERhdGFQb2ludHMoc2VyaWVzLCByYWRpdXMsIGZ1bm5lbE9wdGlvbiwgZWFjaFNwYWNpbmcsIHByb2Nlc3MpO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gIGZ1bm5lbE9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihmdW5uZWxPcHRpb24ubGluZWFyVHlwZSwgZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgaWYoZnVubmVsT3B0aW9uLnR5cGUgPT0gJ3B5cmFtaWQnKXtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzTmV3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllc05ldy5sZW5ndGggLTEpIHtcclxuICAgICAgICBpZiAob3B0cy50b29sdGlwKSB7XHJcbiAgICAgICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IGkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uYWN0aXZlT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbygtYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLWFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzTmV3W2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIChpICsgMSksIGNlbnRlclBvc2l0aW9uLnggKyBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiBpXTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGZ1bm5lbE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGZ1bm5lbE9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICAgICAgdmFyIGZpbGxDb2xvciA9IGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZywgLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAuNSwgaGV4VG9SZ2IoZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc05ld1tpXS5saW5lYXJJbmRleF0sIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2ldLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oMCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24uYm9yZGVyID09IHRydWUpIHtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5hY3RpdmVPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2ldLnJhZGl1cyAtIGFjdGl2ZVdpZHRoLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpICsgMV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpICsgMV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzTmV3W2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIChpICsgMSksIGNlbnRlclBvc2l0aW9uLnggKyBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiBpXTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGZ1bm5lbE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGZ1bm5lbE9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICAgICAgdmFyIGZpbGxDb2xvciA9IGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZywgLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAuNSwgaGV4VG9SZ2IoZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc05ld1tpXS5saW5lYXJJbmRleF0sIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaV0ucmFkaXVzLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24uYm9yZGVyID09IHRydWUpIHtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1lYWNoU3BhY2luZylcclxuICAgIH1cclxuICB9ZWxzZXtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC0gKHNlcmllc05ldy5sZW5ndGggLSAxKSAqIGVhY2hTcGFjaW5nKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzTmV3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllc05ldy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmFjdGl2ZU9wYWNpdHkpKTtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oLWFjdGl2ZVdpZHRoIC0gZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oYWN0aXZlV2lkdGggKyBmdW5uZWxPcHRpb24ubWluU2l6ZS8yLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLWFjdGl2ZVdpZHRoIC0gZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXJpZXNOZXdbaV0uZnVubmVsQXJlYSA9IFtjZW50ZXJQb3NpdGlvbi54IC0gc2VyaWVzTmV3W2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nLCBjZW50ZXJQb3NpdGlvbi54ICsgc2VyaWVzTmV3W2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSBdO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZnVubmVsT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZnVubmVsT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB2YXIgZmlsbENvbG9yID0gaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nLCAtc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMC41LCBoZXhUb1JnYihmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzTmV3W2ldLmxpbmVhckluZGV4XSwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhmdW5uZWxPcHRpb24ubWluU2l6ZS8yLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24uYm9yZGVyID09IHRydWUpIHtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5hY3RpdmVPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMgLSBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzTmV3W2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIChzZXJpZXNOZXcubGVuZ3RoIC0gaSksIGNlbnRlclBvc2l0aW9uLnggKyBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiAoc2VyaWVzTmV3Lmxlbmd0aCAtIGkgLSAxKV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChmdW5uZWxPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShmdW5uZWxPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIHZhciBmaWxsQ29sb3IgPSBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcsIC1zZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLjUsIGhleFRvUmdiKGZ1bm5lbE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNOZXdbaV0ubGluZWFySW5kZXhdLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oMCwgMCk7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBlYWNoU3BhY2luZylcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3RnVubmVsVGV4dChzZXJpZXNOZXcsIG9wdHMsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCBmdW5uZWxPcHRpb24ubGFiZWxBbGlnbiwgYWN0aXZlV2lkdGgsIGNlbnRlclBvc2l0aW9uKTtcclxuICB9XHJcbiAgaWYgKHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdGdW5uZWxDZW50ZXJUZXh0KHNlcmllc05ldywgb3B0cywgY29udGV4dCwgZWFjaFNwYWNpbmcsIGZ1bm5lbE9wdGlvbi5sYWJlbEFsaWduLCBhY3RpdmVXaWR0aCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgc2VyaWVzOiBzZXJpZXNOZXdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3RnVubmVsVGV4dChzZXJpZXMsIG9wdHMsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCBsYWJlbEFsaWduLCBhY3RpdmVXaWR0aCwgY2VudGVyUG9zaXRpb24pIHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpZihpdGVtLmxhYmVsU2hvdyA9PT0gZmFsc2Upe1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGxldCBzdGFydFgsIGVuZFgsIHN0YXJ0WSwgZm9udFNpemU7XHJcbiAgICBsZXQgdGV4dCA9IGl0ZW0uZm9ybWF0dGVyID8gaXRlbS5mb3JtYXR0ZXIoaXRlbSxpLHNlcmllcyxvcHRzKSA6IHV0aWwudG9GaXhlZChpdGVtLl9wcm9wb3J0aW9uXyAqIDEwMCkgKyAnJSc7XHJcbiAgICB0ZXh0ID0gaXRlbS5sYWJlbFRleHQgPyBpdGVtLmxhYmVsVGV4dCA6IHRleHQ7XHJcbiAgICBpZiAobGFiZWxBbGlnbiA9PSAncmlnaHQnKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllcy5sZW5ndGggLTEpIHtcclxuICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzJdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0YXJ0WCA9IChpdGVtLmZ1bm5lbEFyZWFbMl0gKyBzZXJpZXNbaSArIDFdLmZ1bm5lbEFyZWFbMl0pIC8gMjtcclxuICAgICAgfVxyXG4gICAgICBlbmRYID0gc3RhcnRYICsgYWN0aXZlV2lkdGggKiAyO1xyXG4gICAgICBzdGFydFkgPSBpdGVtLmZ1bm5lbEFyZWFbMV0gKyBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgIGZvbnRTaXplID0gaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5hcmMoZW5kWCwgc3RhcnRZLCAyICogb3B0cy5waXgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgZW5kWCArIDUsIHN0YXJ0WSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsQWxpZ24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllcy5sZW5ndGggLTEpIHtcclxuICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzBdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0YXJ0WCA9IChpdGVtLmZ1bm5lbEFyZWFbMF0gKyBzZXJpZXNbaSArIDFdLmZ1bm5lbEFyZWFbMF0pIC8gMjtcclxuICAgICAgfVxyXG4gICAgICBlbmRYID0gc3RhcnRYIC0gYWN0aXZlV2lkdGggKiAyO1xyXG4gICAgICBzdGFydFkgPSBpdGVtLmZ1bm5lbEFyZWFbMV0gKyBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgIGZvbnRTaXplID0gaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5hcmMoZW5kWCwgc3RhcnRZLCAyLCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIGVuZFggLSA1IC0gbWVhc3VyZVRleHQodGV4dCwgZm9udFNpemUsIGNvbnRleHQpLCBzdGFydFkgKyBmb250U2l6ZSAvIDIgLSAyKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdGdW5uZWxDZW50ZXJUZXh0KHNlcmllcywgb3B0cywgY29udGV4dCwgZWFjaFNwYWNpbmcsIGxhYmVsQWxpZ24sIGFjdGl2ZVdpZHRoLCBjZW50ZXJQb3NpdGlvbikge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGxldCBzdGFydFksIGZvbnRTaXplO1xyXG4gICAgaWYgKGl0ZW0uY2VudGVyVGV4dCkge1xyXG4gICAgICBzdGFydFkgPSBpdGVtLmZ1bm5lbEFyZWFbMV0gKyBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgIGZvbnRTaXplID0gaXRlbS5jZW50ZXJUZXh0U2l6ZSAqIG9wdHMucGl4IHx8IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY2VudGVyVGV4dENvbG9yIHx8IFwiI0ZGRkZGRlwiKTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLmNlbnRlclRleHQsIGNlbnRlclBvc2l0aW9uLnggLSBtZWFzdXJlVGV4dChpdGVtLmNlbnRlclRleHQsIGZvbnRTaXplLCBjb250ZXh0KSAvIDIsIHN0YXJ0WSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGRyYXdDYW52YXMob3B0cywgY29udGV4dCkge1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGNvbnRleHQudHJhbnNsYXRlKDAsIDAuNSk7XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgY29udGV4dC5kcmF3KCk7XHJcbn1cclxuXHJcbnZhciBUaW1pbmcgPSB7XHJcbiAgZWFzZUluOiBmdW5jdGlvbiBlYXNlSW4ocG9zKSB7XHJcbiAgICByZXR1cm4gTWF0aC5wb3cocG9zLCAzKTtcclxuICB9LFxyXG4gIGVhc2VPdXQ6IGZ1bmN0aW9uIGVhc2VPdXQocG9zKSB7XHJcbiAgICByZXR1cm4gTWF0aC5wb3cocG9zIC0gMSwgMykgKyAxO1xyXG4gIH0sXHJcbiAgZWFzZUluT3V0OiBmdW5jdGlvbiBlYXNlSW5PdXQocG9zKSB7XHJcbiAgICBpZiAoKHBvcyAvPSAwLjUpIDwgMSkge1xyXG4gICAgICByZXR1cm4gMC41ICogTWF0aC5wb3cocG9zLCAzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAwLjUgKiAoTWF0aC5wb3cocG9zIC0gMiwgMykgKyAyKTtcclxuICAgIH1cclxuICB9LFxyXG4gIGxpbmVhcjogZnVuY3Rpb24gbGluZWFyKHBvcykge1xyXG4gICAgcmV0dXJuIHBvcztcclxuICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBBbmltYXRpb24ob3B0cykge1xyXG4gIHRoaXMuaXNTdG9wID0gZmFsc2U7XHJcbiAgb3B0cy5kdXJhdGlvbiA9IHR5cGVvZiBvcHRzLmR1cmF0aW9uID09PSAndW5kZWZpbmVkJyA/IDEwMDAgOiBvcHRzLmR1cmF0aW9uO1xyXG4gIG9wdHMudGltaW5nID0gb3B0cy50aW1pbmcgfHwgJ2Vhc2VJbk91dCc7XHJcbiAgdmFyIGRlbGF5ID0gMTc7XHJcbiAgZnVuY3Rpb24gY3JlYXRlQW5pbWF0aW9uRnJhbWUoKSB7XHJcbiAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGVwLCBkZWxheSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICB2YXIgdGltZVN0YW1wID0gK25ldyBEYXRlKCk7XHJcbiAgICAgICAgICBzdGVwKHRpbWVTdGFtcCk7XHJcbiAgICAgICAgfSwgZGVsYXkpO1xyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0ZXApIHtcclxuICAgICAgICBzdGVwKG51bGwpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH07XHJcbiAgdmFyIGFuaW1hdGlvbkZyYW1lID0gY3JlYXRlQW5pbWF0aW9uRnJhbWUoKTtcclxuICB2YXIgc3RhcnRUaW1lU3RhbXAgPSBudWxsO1xyXG4gIHZhciBfc3RlcCA9IGZ1bmN0aW9uIHN0ZXAodGltZXN0YW1wKSB7XHJcbiAgICBpZiAodGltZXN0YW1wID09PSBudWxsIHx8IHRoaXMuaXNTdG9wID09PSB0cnVlKSB7XHJcbiAgICAgIG9wdHMub25Qcm9jZXNzICYmIG9wdHMub25Qcm9jZXNzKDEpO1xyXG4gICAgICBvcHRzLm9uQW5pbWF0aW9uRmluaXNoICYmIG9wdHMub25BbmltYXRpb25GaW5pc2goKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0YXJ0VGltZVN0YW1wID09PSBudWxsKSB7XHJcbiAgICAgIHN0YXJ0VGltZVN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgfVxyXG4gICAgaWYgKHRpbWVzdGFtcCAtIHN0YXJ0VGltZVN0YW1wIDwgb3B0cy5kdXJhdGlvbikge1xyXG4gICAgICB2YXIgcHJvY2VzcyA9ICh0aW1lc3RhbXAgLSBzdGFydFRpbWVTdGFtcCkgLyBvcHRzLmR1cmF0aW9uO1xyXG4gICAgICB2YXIgdGltaW5nRnVuY3Rpb24gPSBUaW1pbmdbb3B0cy50aW1pbmddO1xyXG4gICAgICBwcm9jZXNzID0gdGltaW5nRnVuY3Rpb24ocHJvY2Vzcyk7XHJcbiAgICAgIG9wdHMub25Qcm9jZXNzICYmIG9wdHMub25Qcm9jZXNzKHByb2Nlc3MpO1xyXG4gICAgICBhbmltYXRpb25GcmFtZShfc3RlcCwgZGVsYXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb3B0cy5vblByb2Nlc3MgJiYgb3B0cy5vblByb2Nlc3MoMSk7XHJcbiAgICAgIG9wdHMub25BbmltYXRpb25GaW5pc2ggJiYgb3B0cy5vbkFuaW1hdGlvbkZpbmlzaCgpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgX3N0ZXAgPSBfc3RlcC5iaW5kKHRoaXMpO1xyXG4gIGFuaW1hdGlvbkZyYW1lKF9zdGVwLCBkZWxheSk7XHJcbn1cclxuXHJcbkFuaW1hdGlvbi5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uKCkge1xyXG4gIHRoaXMuaXNTdG9wID0gdHJ1ZTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGRyYXdDaGFydHModHlwZSwgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIF90aGlzID0gdGhpcztcclxuICB2YXIgc2VyaWVzID0gb3B0cy5zZXJpZXM7XHJcbiAgLy/lhbzlrrlFQ2hhcnRz6aW85Zu+57G75pWw5o2u5qC85byPXHJcbiAgaWYgKHR5cGUgPT09ICdwaWUnIHx8IHR5cGUgPT09ICdyaW5nJyB8fCB0eXBlID09PSAnbW91bnQnIHx8IHR5cGUgPT09ICdyb3NlJyB8fCB0eXBlID09PSAnZnVubmVsJykge1xyXG4gICAgc2VyaWVzID0gZml4UGllU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKTtcclxuICB9XHJcbiAgdmFyIGNhdGVnb3JpZXMgPSBvcHRzLmNhdGVnb3JpZXM7XHJcbiAgaWYgKHR5cGUgPT09ICdtb3VudCcpIHtcclxuICAgIGNhdGVnb3JpZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2VyaWVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIGlmKHNlcmllc1tqXS5zaG93ICE9PSBmYWxzZSkgY2F0ZWdvcmllcy5wdXNoKHNlcmllc1tqXS5uYW1lKVxyXG4gICAgfVxyXG4gICAgb3B0cy5jYXRlZ29yaWVzID0gY2F0ZWdvcmllcztcclxuICB9XHJcbiAgc2VyaWVzID0gZmlsbFNlcmllcyhzZXJpZXMsIG9wdHMsIGNvbmZpZyk7XHJcbiAgdmFyIGR1cmF0aW9uID0gb3B0cy5hbmltYXRpb24gPyBvcHRzLmR1cmF0aW9uIDogMDtcclxuICBfdGhpcy5hbmltYXRpb25JbnN0YW5jZSAmJiBfdGhpcy5hbmltYXRpb25JbnN0YW5jZS5zdG9wKCk7XHJcbiAgdmFyIHNlcmllc01BID0gbnVsbDtcclxuICBpZiAodHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgbGV0IGF2ZXJhZ2UgPSBhc3NpZ24oe30sIG9wdHMuZXh0cmEuY2FuZGxlLmF2ZXJhZ2UpO1xyXG4gICAgaWYgKGF2ZXJhZ2Uuc2hvdykge1xyXG4gICAgICBzZXJpZXNNQSA9IGNhbENhbmRsZU1BKGF2ZXJhZ2UuZGF5LCBhdmVyYWdlLm5hbWUsIGF2ZXJhZ2UuY29sb3IsIHNlcmllc1swXS5kYXRhKTtcclxuICAgICAgc2VyaWVzTUEgPSBmaWxsU2VyaWVzKHNlcmllc01BLCBvcHRzLCBjb25maWcpO1xyXG4gICAgICBvcHRzLnNlcmllc01BID0gc2VyaWVzTUE7XHJcbiAgICB9IGVsc2UgaWYgKG9wdHMuc2VyaWVzTUEpIHtcclxuICAgICAgc2VyaWVzTUEgPSBvcHRzLnNlcmllc01BID0gZmlsbFNlcmllcyhvcHRzLnNlcmllc01BLCBvcHRzLCBjb25maWcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VyaWVzTUEgPSBzZXJpZXM7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHNlcmllc01BID0gc2VyaWVzO1xyXG4gIH1cclxuICAvKiDov4fmu6TmjolzaG93PWZhbHNl55qEc2VyaWVzICovXHJcbiAgb3B0cy5fc2VyaWVzXyA9IHNlcmllcyA9IGZpbHRlclNlcmllcyhzZXJpZXMpO1xyXG4gIC8v6YeN5paw6K6h566X5Zu+6KGo5Yy65Z+fXHJcbiAgb3B0cy5hcmVhID0gbmV3IEFycmF5KDQpO1xyXG4gIC8v5aSN5L2N57uY5Zu+5Yy65Z+fXHJcbiAgZm9yIChsZXQgaiA9IDA7IGogPCA0OyBqKyspIHtcclxuICAgIG9wdHMuYXJlYVtqXSA9IG9wdHMucGFkZGluZ1tqXSAqIG9wdHMucGl4O1xyXG4gIH1cclxuICAvL+mAmui/h+iuoeeul+S4ieWkp+WMuuWfn++8muWbvuS+i+OAgVjovbTjgIFZ6L2055qE5aSn5bCP77yM56Gu5a6a57uY5Zu+5Yy65Z+fXHJcbiAgdmFyIF9jYWxMZWdlbmREYXRhID0gY2FsTGVnZW5kRGF0YShzZXJpZXNNQSwgb3B0cywgY29uZmlnLCBvcHRzLmNoYXJ0RGF0YSwgY29udGV4dCksXHJcbiAgICBsZWdlbmRIZWlnaHQgPSBfY2FsTGVnZW5kRGF0YS5hcmVhLndob2xlSGVpZ2h0LFxyXG4gICAgbGVnZW5kV2lkdGggPSBfY2FsTGVnZW5kRGF0YS5hcmVhLndob2xlV2lkdGg7XHJcblxyXG4gIHN3aXRjaCAob3B0cy5sZWdlbmQucG9zaXRpb24pIHtcclxuICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgIG9wdHMuYXJlYVswXSArPSBsZWdlbmRIZWlnaHQ7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgb3B0cy5hcmVhWzJdICs9IGxlZ2VuZEhlaWdodDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgb3B0cy5hcmVhWzNdICs9IGxlZ2VuZFdpZHRoO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgb3B0cy5hcmVhWzFdICs9IGxlZ2VuZFdpZHRoO1xyXG4gICAgICBicmVhaztcclxuICB9XHJcblxyXG4gIGxldCBfY2FsWUF4aXNEYXRhID0ge30sXHJcbiAgICB5QXhpc1dpZHRoID0gMDtcclxuICBpZiAob3B0cy50eXBlID09PSAnbGluZScgfHwgb3B0cy50eXBlID09PSAnY29sdW1uJ3x8IG9wdHMudHlwZSA9PT0gJ21vdW50JyB8fCBvcHRzLnR5cGUgPT09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT09ICdtaXgnIHx8IG9wdHMudHlwZSA9PT0gJ2NhbmRsZScgfHwgb3B0cy50eXBlID09PSAnc2NhdHRlcicgIHx8IG9wdHMudHlwZSA9PT0gJ2J1YmJsZScgfHwgb3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgICBfY2FsWUF4aXNEYXRhID0gY2FsWUF4aXNEYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgeUF4aXNXaWR0aCA9IF9jYWxZQXhpc0RhdGEueUF4aXNXaWR0aDtcclxuICAgIC8v5aaC5p6c5pi+56S6Wei9tOagh+mimFxyXG4gICAgaWYgKG9wdHMueUF4aXMuc2hvd1RpdGxlKSB7XHJcbiAgICAgIGxldCBtYXhUaXRsZUhlaWdodCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0cy55QXhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbWF4VGl0bGVIZWlnaHQgPSBNYXRoLm1heChtYXhUaXRsZUhlaWdodCwgb3B0cy55QXhpcy5kYXRhW2ldLnRpdGxlRm9udFNpemUgPyBvcHRzLnlBeGlzLmRhdGFbaV0udGl0bGVGb250U2l6ZSAqIG9wdHMucGl4IDogY29uZmlnLmZvbnRTaXplKVxyXG4gICAgICB9XHJcbiAgICAgIG9wdHMuYXJlYVswXSArPSBtYXhUaXRsZUhlaWdodDtcclxuICAgIH1cclxuICAgIGxldCByaWdodEluZGV4ID0gMCxcclxuICAgICAgbGVmdEluZGV4ID0gMDtcclxuICAgIC8v6K6h566X5Li757uY5Zu+5Yy65Z+f5bem5Y+z5L2N572uXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHlBeGlzV2lkdGgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHlBeGlzV2lkdGhbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgaWYgKGxlZnRJbmRleCA+IDApIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVszXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoICsgb3B0cy55QXhpcy5wYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVszXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZWZ0SW5kZXggKz0gMTtcclxuICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoW2ldLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICBpZiAocmlnaHRJbmRleCA+IDApIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVsxXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoICsgb3B0cy55QXhpcy5wYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVsxXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByaWdodEluZGV4ICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uZmlnLnlBeGlzV2lkdGggPSB5QXhpc1dpZHRoO1xyXG4gIH1cclxuICBvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEgPSBfY2FsWUF4aXNEYXRhO1xyXG5cclxuICBpZiAob3B0cy5jYXRlZ29yaWVzICYmIG9wdHMuY2F0ZWdvcmllcy5sZW5ndGggJiYgb3B0cy50eXBlICE9PSAncmFkYXInICYmIG9wdHMudHlwZSAhPT0gJ2dhdWdlJyAmJiBvcHRzLnR5cGUgIT09ICdiYXInKSB7XHJcbiAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEgPSBnZXRYQXhpc1BvaW50cyhvcHRzLmNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZyk7XHJcbiAgICBsZXQgX2NhbENhdGVnb3JpZXNEYXRhID0gY2FsQ2F0ZWdvcmllc0RhdGEob3B0cy5jYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lYWNoU3BhY2luZywgY29udGV4dCksXHJcbiAgICAgIHhBeGlzSGVpZ2h0ID0gX2NhbENhdGVnb3JpZXNEYXRhLnhBeGlzSGVpZ2h0LFxyXG4gICAgICBhbmdsZSA9IF9jYWxDYXRlZ29yaWVzRGF0YS5hbmdsZTtcclxuICAgIGNvbmZpZy54QXhpc0hlaWdodCA9IHhBeGlzSGVpZ2h0O1xyXG4gICAgY29uZmlnLl94QXhpc1RleHRBbmdsZV8gPSBhbmdsZTtcclxuICAgIG9wdHMuYXJlYVsyXSArPSB4QXhpc0hlaWdodDtcclxuICAgIG9wdHMuY2hhcnREYXRhLmNhdGVnb3JpZXNEYXRhID0gX2NhbENhdGVnb3JpZXNEYXRhO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAob3B0cy50eXBlID09PSAnbGluZScgfHwgb3B0cy50eXBlID09PSAnYXJlYScgfHwgb3B0cy50eXBlID09PSAnc2NhdHRlcicgfHwgb3B0cy50eXBlID09PSAnYnViYmxlJyB8fCBvcHRzLnR5cGUgPT09ICdiYXInKSB7XHJcbiAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSA9IGNhbFhBeGlzRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgIGNhdGVnb3JpZXMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEucmFuZ2VzRm9ybWF0O1xyXG4gICAgICBsZXQgX2NhbENhdGVnb3JpZXNEYXRhID0gY2FsQ2F0ZWdvcmllc0RhdGEoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZWFjaFNwYWNpbmcsIGNvbnRleHQpLFxyXG4gICAgICAgIHhBeGlzSGVpZ2h0ID0gX2NhbENhdGVnb3JpZXNEYXRhLnhBeGlzSGVpZ2h0LFxyXG4gICAgICAgIGFuZ2xlID0gX2NhbENhdGVnb3JpZXNEYXRhLmFuZ2xlO1xyXG4gICAgICBjb25maWcueEF4aXNIZWlnaHQgPSB4QXhpc0hlaWdodDtcclxuICAgICAgY29uZmlnLl94QXhpc1RleHRBbmdsZV8gPSBhbmdsZTtcclxuICAgICAgb3B0cy5hcmVhWzJdICs9IHhBeGlzSGVpZ2h0O1xyXG4gICAgICBvcHRzLmNoYXJ0RGF0YS5jYXRlZ29yaWVzRGF0YSA9IF9jYWxDYXRlZ29yaWVzRGF0YTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSA9IHtcclxuICAgICAgICB4QXhpc1BvaW50czogW11cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v6K6h566X5Y+z5a+56b2Q5YGP56e76Led56a7XHJcbiAgaWYgKG9wdHMuZW5hYmxlU2Nyb2xsICYmIG9wdHMueEF4aXMuc2Nyb2xsQWxpZ24gPT0gJ3JpZ2h0JyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgbGV0IG9mZnNldExlZnQgPSAwLFxyXG4gICAgICB4QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgICAgc3RhcnRYID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnN0YXJ0WCxcclxuICAgICAgZW5kWCA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lbmRYLFxyXG4gICAgICBlYWNoU3BhY2luZyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICAgIGxldCB0b3RhbFdpZHRoID0gZWFjaFNwYWNpbmcgKiAoeEF4aXNQb2ludHMubGVuZ3RoIC0gMSk7XHJcbiAgICBsZXQgc2NyZWVuV2lkdGggPSBlbmRYIC0gc3RhcnRYO1xyXG4gICAgb2Zmc2V0TGVmdCA9IHNjcmVlbldpZHRoIC0gdG90YWxXaWR0aDtcclxuICAgIF90aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0ID0gb2Zmc2V0TGVmdDtcclxuICAgIF90aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWCA9IG9mZnNldExlZnQ7XHJcbiAgICBfdGhpcy5zY3JvbGxPcHRpb24uZGlzdGFuY2UgPSAwO1xyXG4gICAgX3RoaXMuc2Nyb2xsT3B0aW9uLmxhc3RNb3ZlVGltZSA9IDA7XHJcbiAgICBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gIH1cclxuXHJcbiAgaWYgKHR5cGUgPT09ICdwaWUnIHx8IHR5cGUgPT09ICdyaW5nJyB8fCB0eXBlID09PSAncm9zZScpIHtcclxuICAgIGNvbmZpZy5fcGllVGV4dE1heExlbmd0aF8gPSBvcHRzLmRhdGFMYWJlbCA9PT0gZmFsc2UgPyAwIDogZ2V0UGllVGV4dE1heExlbmd0aChzZXJpZXNNQSwgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICB9XHJcbiAgXHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICd3b3JkJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24ocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3V29yZENsb3VkRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdtYXAnOlxyXG4gICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgIGRyYXdNYXBEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgIHRoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgIH0sNTApXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZnVubmVsJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24ocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5mdW5uZWxEYXRhID0gZHJhd0Z1bm5lbERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbGluZSc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3TGluZURhdGFQb2ludHMgPSBkcmF3TGluZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TGluZURhdGFQb2ludHMueEF4aXNQb2ludHMsXHJcbiAgICAgICAgICAgIGNhbFBvaW50cyA9IF9kcmF3TGluZURhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3TGluZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnc2NhdHRlcic6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3U2NhdHRlckRhdGFQb2ludHMgPSBkcmF3U2NhdHRlckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMueEF4aXNQb2ludHMsXHJcbiAgICAgICAgICAgIGNhbFBvaW50cyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYnViYmxlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdCdWJibGVEYXRhUG9pbnRzID0gZHJhd0J1YmJsZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3QnViYmxlRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdCdWJibGVEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0J1YmJsZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbWl4JzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdNaXhEYXRhUG9pbnRzID0gZHJhd01peERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TWl4RGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdNaXhEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd01peERhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnY29sdW1uJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdDb2x1bW5EYXRhUG9pbnRzID0gZHJhd0NvbHVtbkRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3Q29sdW1uRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdDb2x1bW5EYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0NvbHVtbkRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbW91bnQnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd01vdW50RGF0YVBvaW50cyA9IGRyYXdNb3VudERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TW91bnREYXRhUG9pbnRzLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd01vdW50RGF0YVBvaW50cy5jYWxQb2ludHMsXHJcbiAgICAgICAgICAgIGVhY2hTcGFjaW5nID0gX2RyYXdNb3VudERhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYmFyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdCYXJEYXRhUG9pbnRzID0gZHJhd0JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB5QXhpc1BvaW50cyA9IF9kcmF3QmFyRGF0YVBvaW50cy55QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdCYXJEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0JhckRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS55QXhpc1BvaW50cyA9IHlBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEueEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB5QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdhcmVhJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdBcmVhRGF0YVBvaW50cyA9IGRyYXdBcmVhRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdBcmVhRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdBcmVhRGF0YVBvaW50cy5jYWxQb2ludHMsXHJcbiAgICAgICAgICAgIGVhY2hTcGFjaW5nID0gX2RyYXdBcmVhRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyaW5nJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEucGllRGF0YSA9IGRyYXdQaWVEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnBpZURhdGEgPSBkcmF3UGllRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyb3NlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEucGllRGF0YSA9IGRyYXdSb3NlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyYWRhcic6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnJhZGFyRGF0YSA9IGRyYXdSYWRhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYXJjYmFyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuYXJjYmFyRGF0YSA9IGRyYXdBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2dhdWdlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZ2F1Z2VEYXRhID0gZHJhd0dhdWdlRGF0YVBvaW50cyhjYXRlZ29yaWVzLCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdjYW5kbGUnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd0NhbmRsZURhdGFQb2ludHMgPSBkcmF3Q2FuZGxlRGF0YVBvaW50cyhzZXJpZXMsIHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3Q2FuZGxlRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdDYW5kbGVEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0NhbmRsZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzZXJpZXNNQSkge1xyXG4gICAgICAgICAgICBkcmF3TGVnZW5kKHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdUNoYXJ0c0V2ZW50KCkge1xyXG4gIHRoaXMuZXZlbnRzID0ge307XHJcbn1cclxuXHJcbnVDaGFydHNFdmVudC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgdGhpcy5ldmVudHNbdHlwZV0gPSB0aGlzLmV2ZW50c1t0eXBlXSB8fCBbXTtcclxuICB0aGlzLmV2ZW50c1t0eXBlXS5wdXNoKGxpc3RlbmVyKTtcclxufTtcclxuXHJcbnVDaGFydHNFdmVudC5wcm90b3R5cGUuZGVsRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUpIHtcclxuICB0aGlzLmV2ZW50c1t0eXBlXSA9IFtdO1xyXG59O1xyXG5cclxudUNoYXJ0c0V2ZW50LnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24oKSB7XHJcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcclxuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XHJcbiAgfVxyXG4gIHZhciB0eXBlID0gYXJnc1swXTtcclxuICB2YXIgcGFyYW1zID0gYXJncy5zbGljZSgxKTtcclxuICBpZiAoISF0aGlzLmV2ZW50c1t0eXBlXSkge1xyXG4gICAgdGhpcy5ldmVudHNbdHlwZV0uZm9yRWFjaChmdW5jdGlvbihsaXN0ZW5lcikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxpc3RlbmVyLmFwcGx5KG51bGwsIHBhcmFtcyk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coJ1t1Q2hhcnRzXSAnK2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG52YXIgdUNoYXJ0cyA9IGZ1bmN0aW9uIHVDaGFydHMob3B0cykge1xyXG4gIG9wdHMucGl4ID0gb3B0cy5waXhlbFJhdGlvID8gb3B0cy5waXhlbFJhdGlvIDogMTtcclxuICBvcHRzLmZvbnRTaXplID0gb3B0cy5mb250U2l6ZSA/IG9wdHMuZm9udFNpemUgOiAxMztcclxuICBvcHRzLmZvbnRDb2xvciA9IG9wdHMuZm9udENvbG9yID8gb3B0cy5mb250Q29sb3IgOiBjb25maWcuZm9udENvbG9yO1xyXG4gIGlmIChvcHRzLmJhY2tncm91bmQgPT0gXCJcIiB8fCBvcHRzLmJhY2tncm91bmQgPT0gXCJub25lXCIpIHtcclxuICAgIG9wdHMuYmFja2dyb3VuZCA9IFwiI0ZGRkZGRlwiXHJcbiAgfVxyXG4gIG9wdHMudGl0bGUgPSBhc3NpZ24oe30sIG9wdHMudGl0bGUpO1xyXG4gIG9wdHMuc3VidGl0bGUgPSBhc3NpZ24oe30sIG9wdHMuc3VidGl0bGUpO1xyXG4gIG9wdHMuZHVyYXRpb24gPSBvcHRzLmR1cmF0aW9uID8gb3B0cy5kdXJhdGlvbiA6IDEwMDA7XHJcbiAgb3B0cy55QXhpcyA9IGFzc2lnbih7fSwge1xyXG4gICAgZGF0YTogW10sXHJcbiAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgZGlzYWJsZUdyaWQ6IGZhbHNlLFxyXG4gICAgZ3JpZFNldDogJ251bWJlcicsXHJcbiAgICBzcGxpdE51bWJlcjogNSxcclxuICAgIGdyaWRUeXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNCAqIG9wdHMucGl4LFxyXG4gICAgZ3JpZENvbG9yOiAnI2NjY2NjYycsXHJcbiAgICBwYWRkaW5nOiAxMCxcclxuICAgIGZvbnRDb2xvcjogJyM2NjY2NjYnXHJcbiAgfSwgb3B0cy55QXhpcyk7XHJcbiAgb3B0cy54QXhpcyA9IGFzc2lnbih7fSwge1xyXG4gICAgcm90YXRlTGFiZWw6IGZhbHNlLFxyXG4gICAgcm90YXRlQW5nbGU6NDUsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICBkaXNhYmxlR3JpZDogZmFsc2UsXHJcbiAgICBzcGxpdE51bWJlcjogNSxcclxuICAgIGNhbGlicmF0aW9uOmZhbHNlLFxyXG4gICAgZm9udENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICBmb250U2l6ZTogMTMsXHJcbiAgICBsaW5lSGVpZ2h0OiAyMCxcclxuICAgIG1hcmdpblRvcDogMCxcclxuICAgIGdyaWRUeXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNCxcclxuICAgIHNjcm9sbEFsaWduOiAnbGVmdCcsXHJcbiAgICBib3VuZGFyeUdhcDogJ2NlbnRlcicsXHJcbiAgICBheGlzTGluZTogdHJ1ZSxcclxuICAgIGF4aXNMaW5lQ29sb3I6ICcjY2NjY2NjJyxcclxuICAgIHRpdGxlRm9udFNpemU6IDEzLFxyXG4gICAgdGl0bGVPZmZzZXRZOiAwLFxyXG4gICAgdGl0bGVPZmZzZXRYOiAwLFxyXG4gICAgdGl0bGVGb250Q29sb3I6ICcjNjY2NjY2J1xyXG4gIH0sIG9wdHMueEF4aXMpO1xyXG4gIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSBvcHRzLnhBeGlzLnNjcm9sbEFsaWduO1xyXG4gIG9wdHMubGVnZW5kID0gYXNzaWduKHt9LCB7XHJcbiAgICBzaG93OiB0cnVlLFxyXG4gICAgcG9zaXRpb246ICdib3R0b20nLFxyXG4gICAgZmxvYXQ6ICdjZW50ZXInLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwwKScsXHJcbiAgICBib3JkZXJDb2xvcjogJ3JnYmEoMCwwLDAsMCknLFxyXG4gICAgYm9yZGVyV2lkdGg6IDAsXHJcbiAgICBwYWRkaW5nOiA1LFxyXG4gICAgbWFyZ2luOiA1LFxyXG4gICAgaXRlbUdhcDogMTAsXHJcbiAgICBmb250U2l6ZTogb3B0cy5mb250U2l6ZSxcclxuICAgIGxpbmVIZWlnaHQ6IG9wdHMuZm9udFNpemUsXHJcbiAgICBmb250Q29sb3I6IG9wdHMuZm9udENvbG9yLFxyXG4gICAgZm9ybWF0dGVyOiB7fSxcclxuICAgIGhpZGRlbkNvbG9yOiAnI0NFQ0VDRSdcclxuICB9LCBvcHRzLmxlZ2VuZCk7XHJcbiAgb3B0cy5leHRyYSA9IGFzc2lnbih7XHJcbiAgICB0b29sdGlwOntcclxuICAgICAgbGVnZW5kU2hhcGU6ICdhdXRvJ1xyXG4gICAgfVxyXG4gIH0sIG9wdHMuZXh0cmEpO1xyXG4gIG9wdHMucm90YXRlID0gb3B0cy5yb3RhdGUgPyB0cnVlIDogZmFsc2U7XHJcbiAgb3B0cy5hbmltYXRpb24gPSBvcHRzLmFuaW1hdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICBvcHRzLnJvdGF0ZSA9IG9wdHMucm90YXRlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIG9wdHMuY2FudmFzMmQgPSBvcHRzLmNhbnZhczJkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIFxyXG4gIGxldCBjb25maWckJDEgPSBhc3NpZ24oe30sIGNvbmZpZyk7XHJcbiAgY29uZmlnJCQxLmNvbG9yID0gb3B0cy5jb2xvciA/IG9wdHMuY29sb3IgOiBjb25maWckJDEuY29sb3I7XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAncGllJykge1xyXG4gICAgY29uZmlnJCQxLnBpZUNoYXJ0TGluZVBhZGRpbmcgPSBvcHRzLmRhdGFMYWJlbCA9PT0gZmFsc2UgPyAwIDogb3B0cy5leHRyYS5waWUubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnR5cGUgPT0gJ3JpbmcnKSB7XHJcbiAgICBjb25maWckJDEucGllQ2hhcnRMaW5lUGFkZGluZyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBvcHRzLmV4dHJhLnJpbmcubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnR5cGUgPT0gJ3Jvc2UnKSB7XHJcbiAgICBjb25maWckJDEucGllQ2hhcnRMaW5lUGFkZGluZyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBvcHRzLmV4dHJhLnJvc2UubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGNvbmZpZyQkMS5waWVDaGFydFRleHRQYWRkaW5nID0gb3B0cy5kYXRhTGFiZWwgPT09IGZhbHNlID8gMCA6IGNvbmZpZyQkMS5waWVDaGFydFRleHRQYWRkaW5nICogb3B0cy5waXg7XHJcblxyXG4gIC8v5bGP5bmV5peL6L2sXHJcbiAgY29uZmlnJCQxLnJvdGF0ZSA9IG9wdHMucm90YXRlO1xyXG4gIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgbGV0IHRlbXBXaWR0aCA9IG9wdHMud2lkdGg7XHJcbiAgICBsZXQgdGVtcEhlaWdodCA9IG9wdHMuaGVpZ2h0O1xyXG4gICAgb3B0cy53aWR0aCA9IHRlbXBIZWlnaHQ7XHJcbiAgICBvcHRzLmhlaWdodCA9IHRlbXBXaWR0aDtcclxuICB9XHJcblxyXG4gIC8v6YCC6YWN6auY5YiG5bGPXHJcbiAgb3B0cy5wYWRkaW5nID0gb3B0cy5wYWRkaW5nID8gb3B0cy5wYWRkaW5nIDogY29uZmlnJCQxLnBhZGRpbmc7XHJcbiAgY29uZmlnJCQxLnlBeGlzV2lkdGggPSBjb25maWcueUF4aXNXaWR0aCAqIG9wdHMucGl4O1xyXG4gIGNvbmZpZyQkMS5mb250U2l6ZSA9IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICBjb25maWckJDEudGl0bGVGb250U2l6ZSA9IGNvbmZpZy50aXRsZUZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgY29uZmlnJCQxLnN1YnRpdGxlRm9udFNpemUgPSBjb25maWcuc3VidGl0bGVGb250U2l6ZSAqIG9wdHMucGl4O1xyXG4gIGlmKCFvcHRzLmNvbnRleHQpe1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdbdUNoYXJ0c10g5pyq6I635Y+W5YiwY29udGV4dO+8geazqOaEj++8mnYyLjDniYjmnKzlkI7vvIzpnIDopoHoh6rooYzojrflj5ZjYW52YXPnmoTnu5jlm77kuIrkuIvmloflubbkvKDlhaVvcHRzLmNvbnRleHTvvIEnKTtcclxuICB9XHJcbiAgdGhpcy5jb250ZXh0ID0gb3B0cy5jb250ZXh0O1xyXG4gIGlmICghdGhpcy5jb250ZXh0LnNldFRleHRBbGlnbikge1xyXG4gICAgdGhpcy5jb250ZXh0LnNldFN0cm9rZVN0eWxlID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdHJva2VTdHlsZSA9IGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRleHQuc2V0TGluZVdpZHRoID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5saW5lV2lkdGggPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldExpbmVDYXAgPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxpbmVDYXAgPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldEZvbnRTaXplID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb250ID0gZSArIFwicHggc2Fucy1zZXJpZlwiO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldEZpbGxTdHlsZSA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsbFN0eWxlID0gZTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5zZXRUZXh0QWxpZ24gPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRleHRBbGlnbiA9IGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRleHQuc2V0VGV4dEJhc2VsaW5lID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50ZXh0QmFzZWxpbmUgPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldFNoYWRvdyA9IGZ1bmN0aW9uKG9mZnNldFgsb2Zmc2V0WSxibHVyLGNvbG9yKSB7XHJcbiAgICAgIHRoaXMuc2hhZG93Q29sb3IgPSBjb2xvcjtcclxuICAgICAgdGhpcy5zaGFkb3dPZmZzZXRYID0gb2Zmc2V0WDtcclxuICAgICAgdGhpcy5zaGFkb3dPZmZzZXRZID0gb2Zmc2V0WTtcclxuICAgICAgdGhpcy5zaGFkb3dCbHVyID0gYmx1cjtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5kcmF3ID0gZnVuY3Rpb24oKSB7fVxyXG4gIH1cclxuICAvL+WFvOWuuU5WVUVzZXRMaW5lRGFzaFxyXG4gIGlmKCF0aGlzLmNvbnRleHQuc2V0TGluZURhc2gpe1xyXG4gICAgdGhpcy5jb250ZXh0LnNldExpbmVEYXNoID0gZnVuY3Rpb24oZSkge31cclxuICB9XHJcbiAgb3B0cy5jaGFydERhdGEgPSB7fTtcclxuICB0aGlzLnVldmVudCA9IG5ldyB1Q2hhcnRzRXZlbnQoKTtcclxuICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgIGN1cnJlbnRPZmZzZXQ6IDAsXHJcbiAgICBzdGFydFRvdWNoWDogMCxcclxuICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgfTtcclxuICB0aGlzLm9wdHMgPSBvcHRzO1xyXG4gIHRoaXMuY29uZmlnID0gY29uZmlnJCQxO1xyXG4gIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIGNvbmZpZyQkMSwgdGhpcy5jb250ZXh0KTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnVwZGF0ZURhdGEgPSBmdW5jdGlvbigpIHtcclxuICBsZXQgZGF0YSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XHJcbiAgdGhpcy5vcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIGRhdGEpO1xyXG4gIHRoaXMub3B0cy51cGRhdGVEYXRhID0gdHJ1ZTtcclxuICBsZXQgc2Nyb2xsUG9zaXRpb24gPSBkYXRhLnNjcm9sbFBvc2l0aW9uIHx8ICdjdXJyZW50JztcclxuICBzd2l0Y2ggKHNjcm9sbFBvc2l0aW9uKSB7XHJcbiAgICBjYXNlICdjdXJyZW50JzpcclxuICAgICAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IDA7XHJcbiAgICAgIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgICAgIGN1cnJlbnRPZmZzZXQ6IDAsXHJcbiAgICAgICAgc3RhcnRUb3VjaFg6IDAsXHJcbiAgICAgICAgZGlzdGFuY2U6IDAsXHJcbiAgICAgICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICBsZXQgX2NhbFlBeGlzRGF0YSA9IGNhbFlBeGlzRGF0YSh0aGlzLm9wdHMuc2VyaWVzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpLCB5QXhpc1dpZHRoID0gX2NhbFlBeGlzRGF0YS55QXhpc1dpZHRoO1xyXG4gICAgICB0aGlzLmNvbmZpZy55QXhpc1dpZHRoID0geUF4aXNXaWR0aDtcclxuICAgICAgbGV0IG9mZnNldExlZnQgPSAwO1xyXG4gICAgICBsZXQgX2dldFhBeGlzUG9pbnRzMCA9IGdldFhBeGlzUG9pbnRzKHRoaXMub3B0cy5jYXRlZ29yaWVzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnKSwgeEF4aXNQb2ludHMgPSBfZ2V0WEF4aXNQb2ludHMwLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgIHN0YXJ0WCA9IF9nZXRYQXhpc1BvaW50czAuc3RhcnRYLFxyXG4gICAgICAgIGVuZFggPSBfZ2V0WEF4aXNQb2ludHMwLmVuZFgsXHJcbiAgICAgICAgZWFjaFNwYWNpbmcgPSBfZ2V0WEF4aXNQb2ludHMwLmVhY2hTcGFjaW5nO1xyXG4gICAgICBsZXQgdG90YWxXaWR0aCA9IGVhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gICAgICBsZXQgc2NyZWVuV2lkdGggPSBlbmRYIC0gc3RhcnRYO1xyXG4gICAgICBvZmZzZXRMZWZ0ID0gc2NyZWVuV2lkdGggLSB0b3RhbFdpZHRoO1xyXG4gICAgICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgICAgICBjdXJyZW50T2Zmc2V0OiBvZmZzZXRMZWZ0LFxyXG4gICAgICAgIHN0YXJ0VG91Y2hYOiBvZmZzZXRMZWZ0LFxyXG4gICAgICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IG9mZnNldExlZnQ7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxuICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgdGhpcy5vcHRzLnR5cGUsIHRoaXMub3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS56b29tID0gZnVuY3Rpb24oKSB7XHJcbiAgdmFyIHZhbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdGhpcy5vcHRzLnhBeGlzLml0ZW1Db3VudDtcclxuICBpZiAodGhpcy5vcHRzLmVuYWJsZVNjcm9sbCAhPT0gdHJ1ZSkge1xyXG4gICAgY29uc29sZS5sb2coJ1t1Q2hhcnRzXSDor7flkK/nlKjmu5rliqjmnaHlkI7kvb/nlKgnKVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICAvL+W9k+WJjeWxj+W5leS4remXtOeCuVxyXG4gIGxldCBjZW50ZXJQb2ludCA9IE1hdGgucm91bmQoTWF0aC5hYnModGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldCkgLyB0aGlzLm9wdHMuY2hhcnREYXRhLmVhY2hTcGFjaW5nKSArIE1hdGgucm91bmQodGhpcy5vcHRzLnhBeGlzLml0ZW1Db3VudCAvIDIpO1xyXG4gIHRoaXMub3B0cy5hbmltYXRpb24gPSBmYWxzZTtcclxuICB0aGlzLm9wdHMueEF4aXMuaXRlbUNvdW50ID0gdmFsLml0ZW1Db3VudDtcclxuICAvL+mHjeaWsOiuoeeul3jovbTlgY/np7vot53nprtcclxuICBsZXQgX2NhbFlBeGlzRGF0YSA9IGNhbFlBeGlzRGF0YSh0aGlzLm9wdHMuc2VyaWVzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpLFxyXG4gICAgeUF4aXNXaWR0aCA9IF9jYWxZQXhpc0RhdGEueUF4aXNXaWR0aDtcclxuICB0aGlzLmNvbmZpZy55QXhpc1dpZHRoID0geUF4aXNXaWR0aDtcclxuICBsZXQgb2Zmc2V0TGVmdCA9IDA7XHJcbiAgbGV0IF9nZXRYQXhpc1BvaW50czAgPSBnZXRYQXhpc1BvaW50cyh0aGlzLm9wdHMuY2F0ZWdvcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZyksXHJcbiAgICB4QXhpc1BvaW50cyA9IF9nZXRYQXhpc1BvaW50czAueEF4aXNQb2ludHMsXHJcbiAgICBzdGFydFggPSBfZ2V0WEF4aXNQb2ludHMwLnN0YXJ0WCxcclxuICAgIGVuZFggPSBfZ2V0WEF4aXNQb2ludHMwLmVuZFgsXHJcbiAgICBlYWNoU3BhY2luZyA9IF9nZXRYQXhpc1BvaW50czAuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNlbnRlckxlZnQgPSBlYWNoU3BhY2luZyAqIGNlbnRlclBvaW50O1xyXG4gIGxldCBzY3JlZW5XaWR0aCA9IGVuZFggLSBzdGFydFg7XHJcbiAgbGV0IE1heExlZnQgPSBzY3JlZW5XaWR0aCAtIGVhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gIG9mZnNldExlZnQgPSBzY3JlZW5XaWR0aCAvIDIgLSBjZW50ZXJMZWZ0O1xyXG4gIGlmIChvZmZzZXRMZWZ0ID4gMCkge1xyXG4gICAgb2Zmc2V0TGVmdCA9IDA7XHJcbiAgfVxyXG4gIGlmIChvZmZzZXRMZWZ0IDwgTWF4TGVmdCkge1xyXG4gICAgb2Zmc2V0TGVmdCA9IE1heExlZnQ7XHJcbiAgfVxyXG4gIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgY3VycmVudE9mZnNldDogb2Zmc2V0TGVmdCxcclxuICAgIHN0YXJ0VG91Y2hYOiAwLFxyXG4gICAgZGlzdGFuY2U6IDAsXHJcbiAgICBsYXN0TW92ZVRpbWU6IDBcclxuICB9O1xyXG4gIGNhbFZhbGlkRGlzdGFuY2UodGhpcywgb2Zmc2V0TGVmdCwgdGhpcy5vcHRzLmNoYXJ0RGF0YSwgdGhpcy5jb25maWcsIHRoaXMub3B0cyk7XHJcbiAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gIGRyYXdDaGFydHMuY2FsbCh0aGlzLCB0aGlzLm9wdHMudHlwZSwgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmRvYnVsZVpvb20gPSBmdW5jdGlvbihlKSB7XHJcbiAgaWYgKHRoaXMub3B0cy5lbmFibGVTY3JvbGwgIT09IHRydWUpIHtcclxuICAgIGNvbnNvbGUubG9nKCdbdUNoYXJ0c10g6K+35ZCv55So5rua5Yqo5p2h5ZCO5L2/55SoJylcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3QgdGNzID0gZS5jaGFuZ2VkVG91Y2hlcztcclxuICBpZiAodGNzLmxlbmd0aCA8IDIpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0Y3MubGVuZ3RoOyBpKyspIHtcclxuICAgIHRjc1tpXS54ID0gdGNzW2ldLnggPyB0Y3NbaV0ueCA6IHRjc1tpXS5jbGllbnRYO1xyXG4gICAgdGNzW2ldLnkgPSB0Y3NbaV0ueSA/IHRjc1tpXS55IDogdGNzW2ldLmNsaWVudFk7XHJcbiAgfVxyXG4gIGNvbnN0IG50Y3MgPSBbZ2V0VG91Y2hlcyh0Y3NbMF0sIHRoaXMub3B0cywgZSksZ2V0VG91Y2hlcyh0Y3NbMV0sIHRoaXMub3B0cywgZSldOyBcclxuICBjb25zdCB4bGVuZ3RoID0gTWF0aC5hYnMobnRjc1swXS54IC0gbnRjc1sxXS54KTtcclxuICAvLyDorrDlvZXliJ3lp4vnmoTkuKTmjIfkuYvpl7TnmoTmlbDmja5cclxuICBpZighdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50KXtcclxuICAgIGxldCBjdHMwID0ge2NoYW5nZWRUb3VjaGVzOlt7eDp0Y3NbMF0ueCx5OnRoaXMub3B0cy5hcmVhWzBdIC8gdGhpcy5vcHRzLnBpeCArIDJ9XX07XHJcbiAgICBsZXQgY3RzMSA9IHtjaGFuZ2VkVG91Y2hlczpbe3g6dGNzWzFdLngseTp0aGlzLm9wdHMuYXJlYVswXSAvIHRoaXMub3B0cy5waXggKyAyfV19O1xyXG4gICAgaWYodGhpcy5vcHRzLnJvdGF0ZSl7XHJcbiAgICAgIGN0czAgPSB7Y2hhbmdlZFRvdWNoZXM6W3t4OnRoaXMub3B0cy5oZWlnaHQgLyB0aGlzLm9wdHMucGl4IC0gdGhpcy5vcHRzLmFyZWFbMF0gLyB0aGlzLm9wdHMucGl4IC0gMix5OnRjc1swXS55fV19O1xyXG4gICAgICBjdHMxID0ge2NoYW5nZWRUb3VjaGVzOlt7eDp0aGlzLm9wdHMuaGVpZ2h0IC8gdGhpcy5vcHRzLnBpeCAtIHRoaXMub3B0cy5hcmVhWzBdIC8gdGhpcy5vcHRzLnBpeCAtIDIseTp0Y3NbMV0ueX1dfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1vdmVDdXJyZW50MSA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChjdHMwKS5pbmRleDtcclxuICAgIGNvbnN0IG1vdmVDdXJyZW50MiA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChjdHMxKS5pbmRleDtcclxuICAgIGNvbnN0IG1vdmVDb3VudCA9IE1hdGguYWJzKG1vdmVDdXJyZW50MSAtIG1vdmVDdXJyZW50Mik7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5tb3ZlQ291bnQgPSBtb3ZlQ291bnQ7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5tb3ZlQ3VycmVudDEgPSBNYXRoLm1pbihtb3ZlQ3VycmVudDEsIG1vdmVDdXJyZW50Mik7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5tb3ZlQ3VycmVudDIgPSBNYXRoLm1heChtb3ZlQ3VycmVudDEsIG1vdmVDdXJyZW50Mik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIFxyXG4gIGxldCBjdXJyZW50RWFjaFNwYWNpbmcgPSB4bGVuZ3RoIC8gdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50O1xyXG4gIGxldCBpdGVtQ291bnQgPSAodGhpcy5vcHRzLndpZHRoIC0gdGhpcy5vcHRzLmFyZWFbMV0gLSB0aGlzLm9wdHMuYXJlYVszXSkgLyBjdXJyZW50RWFjaFNwYWNpbmc7XHJcbiAgaXRlbUNvdW50ID0gaXRlbUNvdW50IDw9IDIgPyAyIDogaXRlbUNvdW50O1xyXG4gIGl0ZW1Db3VudCA9IGl0ZW1Db3VudCA+PSB0aGlzLm9wdHMuY2F0ZWdvcmllcy5sZW5ndGggPyB0aGlzLm9wdHMuY2F0ZWdvcmllcy5sZW5ndGggOiBpdGVtQ291bnQ7XHJcbiAgdGhpcy5vcHRzLmFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gIHRoaXMub3B0cy54QXhpcy5pdGVtQ291bnQgPSBpdGVtQ291bnQ7XHJcbiAgLy8g6YeN5paw6K6h566X5rua5Yqo5p2h5YGP56e76Led56a7XHJcbiAgbGV0IG9mZnNldExlZnQgPSAwO1xyXG4gIGxldCBfZ2V0WEF4aXNQb2ludHMwID0gZ2V0WEF4aXNQb2ludHModGhpcy5vcHRzLmNhdGVnb3JpZXMsIHRoaXMub3B0cywgdGhpcy5jb25maWcpLFxyXG4gICAgeEF4aXNQb2ludHMgPSBfZ2V0WEF4aXNQb2ludHMwLnhBeGlzUG9pbnRzLFxyXG4gICAgc3RhcnRYID0gX2dldFhBeGlzUG9pbnRzMC5zdGFydFgsXHJcbiAgICBlbmRYID0gX2dldFhBeGlzUG9pbnRzMC5lbmRYLFxyXG4gICAgZWFjaFNwYWNpbmcgPSBfZ2V0WEF4aXNQb2ludHMwLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBjdXJyZW50TGVmdCA9IGVhY2hTcGFjaW5nICogdGhpcy5zY3JvbGxPcHRpb24ubW92ZUN1cnJlbnQxO1xyXG4gIGxldCBzY3JlZW5XaWR0aCA9IGVuZFggLSBzdGFydFg7XHJcbiAgbGV0IE1heExlZnQgPSBzY3JlZW5XaWR0aCAtIGVhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gIG9mZnNldExlZnQgPSAtY3VycmVudExlZnQrTWF0aC5taW4obnRjc1swXS54LG50Y3NbMV0ueCktdGhpcy5vcHRzLmFyZWFbM10tZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9mZnNldExlZnQgPiAwKSB7XHJcbiAgICBvZmZzZXRMZWZ0ID0gMDtcclxuICB9XHJcbiAgaWYgKG9mZnNldExlZnQgPCBNYXhMZWZ0KSB7XHJcbiAgICBvZmZzZXRMZWZ0ID0gTWF4TGVmdDtcclxuICB9XHJcbiAgdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldD0gb2Zmc2V0TGVmdDtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWD0gMDtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5kaXN0YW5jZT0wO1xyXG4gIGNhbFZhbGlkRGlzdGFuY2UodGhpcywgb2Zmc2V0TGVmdCwgdGhpcy5vcHRzLmNoYXJ0RGF0YSwgdGhpcy5jb25maWcsIHRoaXMub3B0cyk7XHJcbiAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gIGRyYXdDaGFydHMuY2FsbCh0aGlzLCB0aGlzLm9wdHMudHlwZSwgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxufVxyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc3RvcEFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xyXG4gIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgJiYgdGhpcy5hbmltYXRpb25JbnN0YW5jZS5zdG9wKCk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcclxuICB0aGlzLnVldmVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmRlbEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlKSB7XHJcbiAgdGhpcy51ZXZlbnQuZGVsRXZlbnRMaXN0ZW5lcih0eXBlKTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmdldEN1cnJlbnREYXRhSW5kZXggPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzKSB7XHJcbiAgICBsZXQgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gICAgaWYgKHRoaXMub3B0cy50eXBlID09PSAncGllJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ3JpbmcnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kUGllQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEucGllRGF0YSwgdGhpcy5vcHRzKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdyb3NlJykge1xyXG4gICAgICByZXR1cm4gZmluZFJvc2VDaGFydEN1cnJlbnRJbmRleCh7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5waWVEYXRhLCB0aGlzLm9wdHMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3JhZGFyJykge1xyXG4gICAgICByZXR1cm4gZmluZFJhZGFyQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEucmFkYXJEYXRhLCB0aGlzLm9wdHMuY2F0ZWdvcmllcy5sZW5ndGgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ2Z1bm5lbCcpIHtcclxuICAgICAgcmV0dXJuIGZpbmRGdW5uZWxDaGFydEN1cnJlbnRJbmRleCh7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5mdW5uZWxEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdtYXAnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kTWFwQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAnd29yZCcpIHtcclxuICAgICAgcmV0dXJuIGZpbmRXb3JkQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEud29yZENsb3VkRGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgICByZXR1cm4gZmluZEJhckNoYXJ0Q3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLmNhbFBvaW50cywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgTWF0aC5hYnModGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZpbmRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEuY2FsUG9pbnRzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCBNYXRoLmFicyh0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiAtMTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmdldExlZ2VuZERhdGFJbmRleCA9IGZ1bmN0aW9uKGUpIHtcclxuICB2YXIgdG91Y2hlcyA9IG51bGw7XHJcbiAgaWYgKGUuY2hhbmdlZFRvdWNoZXMpIHtcclxuICAgIHRvdWNoZXMgPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0b3VjaGVzID0gZS5tcC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9XHJcbiAgaWYgKHRvdWNoZXMpIHtcclxuICAgIGxldCBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICByZXR1cm4gZmluZExlZ2VuZEluZGV4KHtcclxuICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLmxlZ2VuZERhdGEpO1xyXG4gIH1cclxuICByZXR1cm4gLTE7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS50b3VjaExlZ2VuZCA9IGZ1bmN0aW9uKGUpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcclxuICB2YXIgdG91Y2hlcyA9IG51bGw7XHJcbiAgaWYgKGUuY2hhbmdlZFRvdWNoZXMpIHtcclxuICAgIHRvdWNoZXMgPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0b3VjaGVzID0gZS5tcC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9XHJcbiAgaWYgKHRvdWNoZXMpIHtcclxuICAgIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmdldExlZ2VuZERhdGFJbmRleChlKTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdHMudHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgICAgIHRoaXMub3B0cy5zZXJpZXNNQVtpbmRleF0uc2hvdyA9ICF0aGlzLm9wdHMuc2VyaWVzTUFbaW5kZXhdLnNob3c7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRzLnNlcmllc1tpbmRleF0uc2hvdyA9ICF0aGlzLm9wdHMuc2VyaWVzW2luZGV4XS5zaG93O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0cy5hbmltYXRpb24gPSBvcHRpb24uYW5pbWF0aW9uID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ7XHJcbiAgICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCB0aGlzLm9wdHMudHlwZSwgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2hvd1Rvb2xUaXAgPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICghdG91Y2hlcykge1xyXG4gICAgY29uc29sZS5sb2coXCJbdUNoYXJ0c10g5pyq6I635Y+W5YiwZXZlbnTlnZDmoIfkv6Hmga9cIik7XHJcbiAgfVxyXG4gIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcclxuICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQsXHJcbiAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgfSk7XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnbGluZScgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdhcmVhJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2NvbHVtbicgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdzY2F0dGVyJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2J1YmJsZScpIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IGN1cnJlbnQuaW5kZXggOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSB8fCBpbmRleC5sZW5ndGg+MCkge1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4LCBjdXJyZW50Lmdyb3VwKTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIF9nZXRUb29sVGlwRGF0YSA9IGdldFRvb2xUaXBEYXRhKHNlcmllc0RhdGEsIHRoaXMub3B0cywgaW5kZXgsIGN1cnJlbnQuZ3JvdXAsIHRoaXMub3B0cy5jYXRlZ29yaWVzLCBvcHRpb24pLFxyXG4gICAgICAgICAgdGV4dExpc3QgPSBfZ2V0VG9vbFRpcERhdGEudGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQgPSBfZ2V0VG9vbFRpcERhdGEub2Zmc2V0O1xyXG4gICAgICAgIG9mZnNldC55ID0gX3RvdWNoZXMkLnk7XHJcbiAgICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgIGdyb3VwOiBjdXJyZW50Lmdyb3VwXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21vdW50Jykge1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKS5pbmRleCA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHthbmltYXRpb246IGZhbHNlfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gYXNzaWduKHt9LCBvcHRzLl9zZXJpZXNfW2luZGV4XSk7XHJcbiAgICAgIHZhciB0ZXh0TGlzdCA9IFt7XHJcbiAgICAgICAgdGV4dDogb3B0aW9uLmZvcm1hdHRlciA/IG9wdGlvbi5mb3JtYXR0ZXIoc2VyaWVzRGF0YSwgdW5kZWZpbmVkLCBpbmRleCwgb3B0cykgOiBzZXJpZXNEYXRhLm5hbWUgKyAnOiAnICsgc2VyaWVzRGF0YS5kYXRhLFxyXG4gICAgICAgIGNvbG9yOiBzZXJpZXNEYXRhLmNvbG9yLFxyXG4gICAgICAgIGxlZ2VuZFNoYXBlOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0bycgPyBzZXJpZXNEYXRhLmxlZ2VuZFNoYXBlIDogdGhpcy5vcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgICAgfV07XHJcbiAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgeDogb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzW2luZGV4XS54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH07XHJcbiAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gY3VycmVudC5pbmRleCA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xIHx8IGluZGV4Lmxlbmd0aD4wKSB7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgsIGN1cnJlbnQuZ3JvdXApO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgX2dldFRvb2xUaXBEYXRhID0gZ2V0VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgY3VycmVudC5ncm91cCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnggPSBfdG91Y2hlcyQueDtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21peCcpIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IGN1cnJlbnQuaW5kZXggOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcclxuICAgICAgICBfc2Nyb2xsRGlzdGFuY2VfOiBjdXJyZW50T2Zmc2V0LFxyXG4gICAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgpO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgX2dldE1peFRvb2xUaXBEYXRhID0gZ2V0TWl4VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRNaXhUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRNaXhUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnkgPSBfdG91Y2hlcyQueTtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdjYW5kbGUnKSB7XHJcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKTtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyBjdXJyZW50LmluZGV4IDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICAgICAgX3Njcm9sbERpc3RhbmNlXzogY3VycmVudE9mZnNldCxcclxuICAgICAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4KTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIF9nZXRUb29sVGlwRGF0YSA9IGdldENhbmRsZVRvb2xUaXBEYXRhKHRoaXMub3B0cy5zZXJpZXNbMF0uZGF0YSwgc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIHRoaXMub3B0cy5leHRyYS5jYW5kbGUsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnkgPSBfdG91Y2hlcyQueTtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdwaWUnIHx8IHRoaXMub3B0cy50eXBlID09PSAncmluZycgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdyb3NlJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2Z1bm5lbCcpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGFzc2lnbih7fSwgb3B0cy5fc2VyaWVzX1tpbmRleF0pO1xyXG4gICAgICB2YXIgdGV4dExpc3QgPSBbe1xyXG4gICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKHNlcmllc0RhdGEsIHVuZGVmaW5lZCwgaW5kZXgsIG9wdHMpIDogc2VyaWVzRGF0YS5uYW1lICsgJzogJyArIHNlcmllc0RhdGEuZGF0YSxcclxuICAgICAgICBjb2xvcjogc2VyaWVzRGF0YS5jb2xvcixcclxuICAgICAgICBsZWdlbmRTaGFwZTogdGhpcy5vcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGUgPT0gJ2F1dG8nID8gc2VyaWVzRGF0YS5sZWdlbmRTaGFwZSA6IHRoaXMub3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlXHJcbiAgICAgIH1dO1xyXG4gICAgICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH07XHJcbiAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21hcCcpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLnNlcmllc1tpbmRleF0pO1xyXG4gICAgICBzZXJpZXNEYXRhLm5hbWUgPSBzZXJpZXNEYXRhLnByb3BlcnRpZXMubmFtZVxyXG4gICAgICB2YXIgdGV4dExpc3QgPSBbe1xyXG4gICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKHNlcmllc0RhdGEsIHVuZGVmaW5lZCwgaW5kZXgsIHRoaXMub3B0cykgOiBzZXJpZXNEYXRhLm5hbWUsXHJcbiAgICAgICAgY29sb3I6IHNlcmllc0RhdGEuY29sb3IsXHJcbiAgICAgICAgbGVnZW5kU2hhcGU6IHRoaXMub3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJyA/IHNlcmllc0RhdGEubGVnZW5kU2hhcGUgOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgICB9XTtcclxuICAgICAgdmFyIG9mZnNldCA9IHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9O1xyXG4gICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIG9wdHMudXBkYXRlRGF0YSA9IGZhbHNlO1xyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3dvcmQnKSB7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpIDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge2FuaW1hdGlvbjogZmFsc2V9KTtcclxuICAgICAgdmFyIHNlcmllc0RhdGEgPSBhc3NpZ24oe30sIHRoaXMub3B0cy5zZXJpZXNbaW5kZXhdKTtcclxuICAgICAgdmFyIHRleHRMaXN0ID0gW3tcclxuICAgICAgICB0ZXh0OiBvcHRpb24uZm9ybWF0dGVyID8gb3B0aW9uLmZvcm1hdHRlcihzZXJpZXNEYXRhLCB1bmRlZmluZWQsIGluZGV4LCB0aGlzLm9wdHMpIDogc2VyaWVzRGF0YS5uYW1lLFxyXG4gICAgICAgIGNvbG9yOiBzZXJpZXNEYXRhLmNvbG9yLFxyXG4gICAgICAgIGxlZ2VuZFNoYXBlOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0bycgPyBzZXJpZXNEYXRhLmxlZ2VuZFNoYXBlIDogdGhpcy5vcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgICAgfV07XHJcbiAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfTtcclxuICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBvcHRzLnVwZGF0ZURhdGEgPSBmYWxzZTtcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdyYWRhcicpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4KTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIHRleHRMaXN0ID0gc2VyaWVzRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKGl0ZW0sIHRoaXMub3B0cy5jYXRlZ29yaWVzW2luZGV4XSwgaW5kZXgsIHRoaXMub3B0cykgOiBpdGVtLm5hbWUgKyAnOiAnICsgaXRlbS5kYXRhLFxyXG4gICAgICAgICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgICAgICAgbGVnZW5kU2hhcGU6IHRoaXMub3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJyA/IGl0ZW0ubGVnZW5kU2hhcGUgOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbihkaXN0YW5jZSkge1xyXG4gIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgY3VycmVudE9mZnNldDogZGlzdGFuY2UsXHJcbiAgICBzdGFydFRvdWNoWDogZGlzdGFuY2UsXHJcbiAgICBkaXN0YW5jZTogMCxcclxuICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gIH07XHJcbiAgbGV0IG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge1xyXG4gICAgX3Njcm9sbERpc3RhbmNlXzogZGlzdGFuY2UsXHJcbiAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgfSk7XHJcbiAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIHRoaXMub3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnNjcm9sbFN0YXJ0ID0gZnVuY3Rpb24oZSkge1xyXG4gIHZhciB0b3VjaGVzID0gbnVsbDtcclxuICBpZiAoZS5jaGFuZ2VkVG91Y2hlcykge1xyXG4gICAgdG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdWNoZXMgPSBlLm1wLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH1cclxuICB2YXIgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gIGlmICh0b3VjaGVzICYmIHRoaXMub3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLnN0YXJ0VG91Y2hYID0gX3RvdWNoZXMkLng7XHJcbiAgfVxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWUgPT09IDApIHtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLmxhc3RNb3ZlVGltZSA9IERhdGUubm93KCk7XHJcbiAgfVxyXG4gIGxldCBMaW1pdCA9IHRoaXMub3B0cy50b3VjaE1vdmVMaW1pdCB8fCA2MDtcclxuICBsZXQgY3Vyck1vdmVUaW1lID0gRGF0ZS5ub3coKTtcclxuICBsZXQgZHVyYXRpb24gPSBjdXJyTW92ZVRpbWUgLSB0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWU7XHJcbiAgaWYgKGR1cmF0aW9uIDwgTWF0aC5mbG9vcigxMDAwIC8gTGltaXQpKSByZXR1cm47XHJcbiAgaWYgKHRoaXMuc2Nyb2xsT3B0aW9uLnN0YXJ0VG91Y2hYID09IDApIHJldHVybjtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWUgPSBjdXJyTW92ZVRpbWU7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzICYmIHRoaXMub3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICB2YXIgX2Rpc3RhbmNlO1xyXG4gICAgX2Rpc3RhbmNlID0gX3RvdWNoZXMkLnggLSB0aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWDtcclxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICAgIHZhciB2YWxpZERpc3RhbmNlID0gY2FsVmFsaWREaXN0YW5jZSh0aGlzLCBjdXJyZW50T2Zmc2V0ICsgX2Rpc3RhbmNlLCB0aGlzLm9wdHMuY2hhcnREYXRhLCB0aGlzLmNvbmZpZywgdGhpcy5vcHRzKTtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLmRpc3RhbmNlID0gX2Rpc3RhbmNlID0gdmFsaWREaXN0YW5jZSAtIGN1cnJlbnRPZmZzZXQ7XHJcbiAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2UsXHJcbiAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgIH0pO1xyXG5cdFx0dGhpcy5vcHRzID0gb3B0cztcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2U7XHJcbiAgfVxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsRW5kID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLm9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICB2YXIgX3Njcm9sbE9wdGlvbiA9IHRoaXMuc2Nyb2xsT3B0aW9uLFxyXG4gICAgICBjdXJyZW50T2Zmc2V0ID0gX3Njcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0LFxyXG4gICAgICBkaXN0YW5jZSA9IF9zY3JvbGxPcHRpb24uZGlzdGFuY2U7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0ID0gY3VycmVudE9mZnNldCArIGRpc3RhbmNlO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24uZGlzdGFuY2UgPSAwO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50ID0gMDtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCB1Q2hhcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///122\n"); /***/ }), /* 123 */ /*!******************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.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/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\n\n//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改\nvar formatDateTime = function formatDateTime(timeStamp, returnType) {\n var date = new Date();\n date.setTime(timeStamp * 1000);\n var y = date.getFullYear();\n var m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n var d = date.getDate();\n d = d < 10 ? '0' + d : d;\n var h = date.getHours();\n h = h < 10 ? '0' + h : h;\n var minute = date.getMinutes();\n var second = date.getSeconds();\n minute = minute < 10 ? '0' + minute : minute;\n second = second < 10 ? '0' + second : second;\n if (returnType == 'full') {\n return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;\n }\n if (returnType == 'y-m-d') {\n return y + '-' + m + '-' + d;\n }\n if (returnType == 'h:m') {\n return h + ':' + minute;\n }\n if (returnType == 'h:m:s') {\n return h + ':' + minute + ':' + second;\n }\n return [y, m, d, h, minute, second];\n};\nvar cfu = {\n //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可\n \"type\": [\"pie\", \"ring\", \"rose\", \"word\", \"funnel\", \"map\", \"arcbar\", \"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"tline\", \"tarea\", \"scatter\", \"bubble\", \"demotype\"],\n \"range\": [\"饼状图\", \"圆环图\", \"玫瑰图\", \"词云图\", \"漏斗图\", \"地图\", \"圆弧进度条\", \"折线图\", \"柱状图\", \"山峰图\", \"条状图\", \"区域图\", \"雷达图\", \"仪表盘\", \"K线图\", \"混合图\", \"时间轴折线\", \"时间轴区域\", \"散点图\", \"气泡图\", \"自定义类型\"],\n //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的\"demotype\"\n //自定义类型时需要注意\"tline\",\"tarea\",\"scatter\",\"bubble\"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories\n \"categories\": [\"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"demotype\"],\n //instance为实例变量承载属性,不要删除\n \"instance\": {},\n //option为opts及eopts承载属性,不要删除\n \"option\": {},\n //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n \"formatter\": {\n \"yAxisDemo1\": function yAxisDemo1(val, index, opts) {\n return val + '元';\n },\n \"yAxisDemo2\": function yAxisDemo2(val, index, opts) {\n return val.toFixed(2);\n },\n \"xAxisDemo1\": function xAxisDemo1(val, index, opts) {\n return val + '年';\n },\n \"xAxisDemo2\": function xAxisDemo2(val, index, opts) {\n return formatDateTime(val, 'h:m');\n },\n \"seriesDemo1\": function seriesDemo1(val, index, series, opts) {\n return val + '元';\n },\n \"tooltipDemo1\": function tooltipDemo1(item, category, index, opts) {\n if (index == 0) {\n return '随便用' + item.data + '年';\n } else {\n return '其他我没改' + item.data + '天';\n }\n },\n \"pieDemo\": function pieDemo(val, index, series, opts) {\n if (index !== undefined) {\n return series[index].name + ':' + series[index].data + '元';\n }\n }\n },\n //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。\n \"demotype\": {\n //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置\n \"type\": \"line\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2\n },\n \"legend\": {},\n \"extra\": {\n \"line\": {\n \"type\": \"curve\",\n \"width\": 2\n }\n }\n },\n //下面是自定义配置,请添加项目所需的通用配置\n \"pie\": {\n \"type\": \"pie\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"extra\": {\n \"pie\": {\n \"activeOpacity\": 0.5,\n \"activeRadius\": 10,\n \"offsetAngle\": 0,\n \"labelWidth\": 15,\n \"border\": true,\n \"borderWidth\": 3,\n \"borderColor\": \"#FFFFFF\"\n }\n }\n },\n \"ring\": {\n \"type\": \"ring\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"rotate\": false,\n \"dataLabel\": true,\n \"legend\": {\n \"show\": true,\n \"position\": \"right\",\n \"lineHeight\": 25\n },\n \"title\": {\n \"name\": \"收益率\",\n \"fontSize\": 15,\n \"color\": \"#666666\"\n },\n \"subtitle\": {\n \"name\": \"70%\",\n \"fontSize\": 25,\n \"color\": \"#7cb5ec\"\n },\n \"extra\": {\n \"ring\": {\n \"ringWidth\": 30,\n \"activeOpacity\": 0.5,\n \"activeRadius\": 10,\n \"offsetAngle\": 0,\n \"labelWidth\": 15,\n \"border\": true,\n \"borderWidth\": 3,\n \"borderColor\": \"#FFFFFF\"\n }\n }\n },\n \"rose\": {\n \"type\": \"rose\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"legend\": {\n \"show\": true,\n \"position\": \"left\",\n \"lineHeight\": 25\n },\n \"extra\": {\n \"rose\": {\n \"type\": \"area\",\n \"minRadius\": 50,\n \"activeOpacity\": 0.5,\n \"activeRadius\": 10,\n \"offsetAngle\": 0,\n \"labelWidth\": 15,\n \"border\": false,\n \"borderWidth\": 2,\n \"borderColor\": \"#FFFFFF\"\n }\n }\n },\n \"word\": {\n \"type\": \"word\",\n \"color\": color,\n \"extra\": {\n \"word\": {\n \"type\": \"normal\",\n \"autoColors\": false\n }\n }\n },\n \"funnel\": {\n \"type\": \"funnel\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"extra\": {\n \"funnel\": {\n \"activeOpacity\": 0.3,\n \"activeWidth\": 10,\n \"border\": true,\n \"borderWidth\": 2,\n \"borderColor\": \"#FFFFFF\",\n \"fillOpacity\": 1,\n \"labelAlign\": \"right\"\n }\n }\n },\n \"map\": {\n \"type\": \"map\",\n \"color\": color,\n \"padding\": [0, 0, 0, 0],\n \"dataLabel\": true,\n \"extra\": {\n \"map\": {\n \"border\": true,\n \"borderWidth\": 1,\n \"borderColor\": \"#666666\",\n \"fillOpacity\": 0.6,\n \"activeBorderColor\": \"#F04864\",\n \"activeFillColor\": \"#FACC14\",\n \"activeFillOpacity\": 1\n }\n }\n },\n \"arcbar\": {\n \"type\": \"arcbar\",\n \"color\": color,\n \"title\": {\n \"name\": \"百分比\",\n \"fontSize\": 25,\n \"color\": \"#00FF00\"\n },\n \"subtitle\": {\n \"name\": \"默认标题\",\n \"fontSize\": 15,\n \"color\": \"#666666\"\n },\n \"extra\": {\n \"arcbar\": {\n \"type\": \"default\",\n \"width\": 12,\n \"backgroundColor\": \"#E9E9E9\",\n \"startAngle\": 0.75,\n \"endAngle\": 0.25,\n \"gap\": 2\n }\n }\n },\n \"line\": {\n \"type\": \"line\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2\n },\n \"legend\": {},\n \"extra\": {\n \"line\": {\n \"type\": \"straight\",\n \"width\": 2,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"tline\": {\n \"type\": \"line\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": false,\n \"boundaryGap\": \"justify\"\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2,\n \"data\": [{\n \"min\": 0,\n \"max\": 80\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"line\": {\n \"type\": \"curve\",\n \"width\": 2,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"tarea\": {\n \"type\": \"area\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true,\n \"boundaryGap\": \"justify\"\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2,\n \"data\": [{\n \"min\": 0,\n \"max\": 80\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"area\": {\n \"type\": \"curve\",\n \"opacity\": 0.2,\n \"addLine\": true,\n \"width\": 2,\n \"gradient\": true,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"column\": {\n \"type\": \"column\",\n \"color\": color,\n \"padding\": [15, 15, 0, 5],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"data\": [{\n \"min\": 0\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"column\": {\n \"type\": \"group\",\n \"width\": 30,\n \"activeBgColor\": \"#000000\",\n \"activeBgOpacity\": 0.08\n }\n }\n },\n \"mount\": {\n \"type\": \"mount\",\n \"color\": color,\n \"padding\": [15, 15, 0, 5],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"data\": [{\n \"min\": 0\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"mount\": {\n \"type\": \"mount\",\n \"widthRatio\": 1.5\n }\n }\n },\n \"bar\": {\n \"type\": \"bar\",\n \"color\": color,\n \"padding\": [15, 30, 0, 5],\n \"xAxis\": {\n \"boundaryGap\": \"justify\",\n \"disableGrid\": false,\n \"min\": 0,\n \"axisLine\": false\n },\n \"yAxis\": {},\n \"legend\": {},\n \"extra\": {\n \"bar\": {\n \"type\": \"group\",\n \"width\": 30,\n \"meterBorde\": 1,\n \"meterFillColor\": \"#FFFFFF\",\n \"activeBgColor\": \"#000000\",\n \"activeBgOpacity\": 0.08\n }\n }\n },\n \"area\": {\n \"type\": \"area\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2\n },\n \"legend\": {},\n \"extra\": {\n \"area\": {\n \"type\": \"straight\",\n \"opacity\": 0.2,\n \"addLine\": true,\n \"width\": 2,\n \"gradient\": false,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"radar\": {\n \"type\": \"radar\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"dataLabel\": false,\n \"legend\": {\n \"show\": true,\n \"position\": \"right\",\n \"lineHeight\": 25\n },\n \"extra\": {\n \"radar\": {\n \"gridType\": \"radar\",\n \"gridColor\": \"#CCCCCC\",\n \"gridCount\": 3,\n \"opacity\": 0.2,\n \"max\": 200,\n \"labelShow\": true\n }\n }\n },\n \"gauge\": {\n \"type\": \"gauge\",\n \"color\": color,\n \"title\": {\n \"name\": \"66Km/H\",\n \"fontSize\": 25,\n \"color\": \"#2fc25b\",\n \"offsetY\": 50\n },\n \"subtitle\": {\n \"name\": \"实时速度\",\n \"fontSize\": 15,\n \"color\": \"#1890ff\",\n \"offsetY\": -50\n },\n \"extra\": {\n \"gauge\": {\n \"type\": \"default\",\n \"width\": 30,\n \"labelColor\": \"#666666\",\n \"startAngle\": 0.75,\n \"endAngle\": 0.25,\n \"startNumber\": 0,\n \"endNumber\": 100,\n \"labelFormat\": \"\",\n \"splitLine\": {\n \"fixRadius\": 0,\n \"splitNumber\": 10,\n \"width\": 30,\n \"color\": \"#FFFFFF\",\n \"childNumber\": 5,\n \"childWidth\": 12\n },\n \"pointer\": {\n \"width\": 24,\n \"color\": \"auto\"\n }\n }\n }\n },\n \"candle\": {\n \"type\": \"candle\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"enableScroll\": true,\n \"enableMarkLine\": true,\n \"dataLabel\": false,\n \"xAxis\": {\n \"labelCount\": 4,\n \"itemCount\": 40,\n \"disableGrid\": true,\n \"gridColor\": \"#CCCCCC\",\n \"gridType\": \"solid\",\n \"dashLength\": 4,\n \"scrollShow\": true,\n \"scrollAlign\": \"left\",\n \"scrollColor\": \"#A6A6A6\",\n \"scrollBackgroundColor\": \"#EFEBEF\"\n },\n \"yAxis\": {},\n \"legend\": {},\n \"extra\": {\n \"candle\": {\n \"color\": {\n \"upLine\": \"#f04864\",\n \"upFill\": \"#f04864\",\n \"downLine\": \"#2fc25b\",\n \"downFill\": \"#2fc25b\"\n },\n \"average\": {\n \"show\": true,\n \"name\": [\"MA5\", \"MA10\", \"MA30\"],\n \"day\": [5, 10, 20],\n \"color\": [\"#1890ff\", \"#2fc25b\", \"#facc14\"]\n }\n },\n \"markLine\": {\n \"type\": \"dash\",\n \"dashLength\": 5,\n \"data\": [{\n \"value\": 2150,\n \"lineColor\": \"#f04864\",\n \"showLabel\": true\n }, {\n \"value\": 2350,\n \"lineColor\": \"#f04864\",\n \"showLabel\": true\n }]\n }\n }\n },\n \"mix\": {\n \"type\": \"mix\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"disabled\": false,\n \"disableGrid\": false,\n \"splitNumber\": 5,\n \"gridType\": \"dash\",\n \"dashLength\": 4,\n \"gridColor\": \"#CCCCCC\",\n \"padding\": 10,\n \"showTitle\": true,\n \"data\": []\n },\n \"legend\": {},\n \"extra\": {\n \"mix\": {\n \"column\": {\n \"width\": 20\n }\n }\n }\n },\n \"scatter\": {\n \"type\": \"scatter\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"dataLabel\": false,\n \"xAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\",\n \"splitNumber\": 5,\n \"boundaryGap\": \"justify\",\n \"min\": 0\n },\n \"yAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\"\n },\n \"legend\": {},\n \"extra\": {\n \"scatter\": {}\n }\n },\n \"bubble\": {\n \"type\": \"bubble\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"xAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\",\n \"splitNumber\": 5,\n \"boundaryGap\": \"justify\",\n \"min\": 0,\n \"max\": 250\n },\n \"yAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\",\n \"data\": [{\n \"min\": 0,\n \"max\": 150\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"bubble\": {\n \"border\": 2,\n \"opacity\": 0.5\n }\n }\n }\n};\nvar _default = cfu;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLXVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJmb3JtYXREYXRlVGltZSIsInRpbWVTdGFtcCIsInJldHVyblR5cGUiLCJkYXRlIiwiRGF0ZSIsInNldFRpbWUiLCJ5IiwiZ2V0RnVsbFllYXIiLCJtIiwiZ2V0TW9udGgiLCJkIiwiZ2V0RGF0ZSIsImgiLCJnZXRIb3VycyIsIm1pbnV0ZSIsImdldE1pbnV0ZXMiLCJzZWNvbmQiLCJnZXRTZWNvbmRzIiwiY2Z1IiwidmFsIiwiaW5kZXgiLCJvcHRzIiwidG9GaXhlZCIsInNlcmllcyIsIml0ZW0iLCJjYXRlZ29yeSIsImRhdGEiLCJ1bmRlZmluZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBTUEsS0FBSyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7O0FBRWpIO0FBQ0EsSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjLENBQUlDLFNBQVMsRUFBRUMsVUFBVSxFQUFHO0VBQzlDLElBQUlDLElBQUksR0FBRyxJQUFJQyxJQUFJLEVBQUU7RUFDckJELElBQUksQ0FBQ0UsT0FBTyxDQUFDSixTQUFTLEdBQUcsSUFBSSxDQUFDO0VBQzlCLElBQUlLLENBQUMsR0FBR0gsSUFBSSxDQUFDSSxXQUFXLEVBQUU7RUFDMUIsSUFBSUMsQ0FBQyxHQUFHTCxJQUFJLENBQUNNLFFBQVEsRUFBRSxHQUFHLENBQUM7RUFDM0JELENBQUMsR0FBR0EsQ0FBQyxHQUFHLEVBQUUsR0FBSSxHQUFH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LENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUSxFQUFFLENBQ1YsQ0FBQztJQUNELE9BQU8sRUFBRTtNQUNSLFFBQVEsRUFBRTtRQUNQLFFBQVEsRUFBQyxDQUFDO1FBQ1YsU0FBUyxFQUFFO01BQ2Q7SUFDRDtFQUNIO0FBQ0QsQ0FBQztBQUFBLGVBRWNtQixHQUFHO0FBQUEiLCJmaWxlIjoiMTIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogdUNoYXJ0c8KuXHJcbiAqIOmrmOaAp+iDvei3qOW5s+WPsOWbvuihqOW6k++8jOaUr+aMgUg144CBQVBQ44CB5bCP56iL5bqP77yI5b6u5L+hL+aUr+S7mOWunS/nmb7luqYv5aS05p2hL1FRLzM2MO+8ieOAgVZ1ZeOAgVRhcm/nrYnmlK/mjIFjYW52YXPnmoTmoYbmnrblubPlj7BcclxuICogQ29weXJpZ2h0IChjKSAyMDIxIFFJVU7Crueni+S6kSBodHRwczovL3d3dy51Y2hhcnRzLmNuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkICggaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIClcclxuICog5aSN5Yi25L2/55So6K+35L+d55WZ5pys5q615rOo6YeK77yM5oSf6LCi5pSv5oyB5byA5rqQ77yBXHJcbiAqIFxyXG4gKiB1Q2hhcnRzwq7lrpjmlrnnvZHnq5lcclxuICogaHR0cHM6Ly93d3cudUNoYXJ0cy5jblxyXG4gKiBcclxuICog5byA5rqQ5Zyw5Z2AOlxyXG4gKiBodHRwczovL2dpdGVlLmNvbS91Q2hhcnRzL3VDaGFydHNcclxuICogXHJcbiAqIHVuaS1hcHDmj5Lku7bluILlnLrlnLDlnYDvvJpcclxuICogaHR0cDovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNzFcclxuICogXHJcbiAqL1xyXG5cclxuLy8g5Li76aKY6aKc6Imy6YWN572u77ya5aaC5q+P5Liq5Zu+6KGo57G75Z6L6ZyA6KaB5LiN5ZCM5Li76aKY77yM6K+35Zyo5a+55bqU5Zu+6KGo57G75Z6L5LiK5pu05pS5Y29sb3LlsZ7mgKdcclxuY29uc3QgY29sb3IgPSBbJyMxODkwRkYnLCAnIzkxQ0I3NCcsICcjRkFDODU4JywgJyNFRTY2NjYnLCAnIzczQzBERScsICcjM0NBMjcyJywgJyNGQzg0NTInLCAnIzlBNjBCNCcsICcjZWE3Y2NjJ107XHJcblxyXG4vL+S6i+S7tui9rOaNouWHveaVsO+8jOS4u+imgeeUqOS9nOagvOW8j+WMlnjovbTkuLrml7bpl7TovbTvvIzmoLnmja7pnIDmsYLoh6rooYzkv67mlLlcclxuY29uc3QgZm9ybWF0RGF0ZVRpbWUgPSAodGltZVN0YW1wLCByZXR1cm5UeXBlKT0+e1xyXG4gIHZhciBkYXRlID0gbmV3IERhdGUoKTtcclxuICBkYXRlLnNldFRpbWUodGltZVN0YW1wICogMTAwMCk7XHJcbiAgdmFyIHkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgdmFyIG0gPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gIG0gPSBtIDwgMTAgPyAoJzAnICsgbSkgOiBtO1xyXG4gIHZhciBkID0gZGF0ZS5nZXREYXRlKCk7XHJcbiAgZCA9IGQgPCAxMCA/ICgnMCcgKyBkKSA6IGQ7XHJcbiAgdmFyIGggPSBkYXRlLmdldEhvdXJzKCk7XHJcbiAgaCA9IGggPCAxMCA/ICgnMCcgKyBoKSA6IGg7XHJcbiAgdmFyIG1pbnV0ZSA9IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gIHZhciBzZWNvbmQgPSBkYXRlLmdldFNlY29uZHMoKTtcclxuICBtaW51dGUgPSBtaW51dGUgPCAxMCA/ICgnMCcgKyBtaW51dGUpIDogbWludXRlO1xyXG4gIHNlY29uZCA9IHNlY29uZCA8IDEwID8gKCcwJyArIHNlY29uZCkgOiBzZWNvbmQ7XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAnZnVsbCcpe3JldHVybiB5ICsgJy0nICsgbSArICctJyArIGQgKyAnICcrIGggKyc6JyArIG1pbnV0ZSArICc6JyArIHNlY29uZDt9XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAneS1tLWQnKXtyZXR1cm4geSArICctJyArIG0gKyAnLScgKyBkO31cclxuICBpZihyZXR1cm5UeXBlID09ICdoOm0nKXtyZXR1cm4gIGggKyc6JyArIG1pbnV0ZTt9XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAnaDptOnMnKXtyZXR1cm4gIGggKyc6JyArIG1pbnV0ZSArJzonICsgc2Vjb25kO31cclxuICByZXR1cm4gW3ksIG0sIGQsIGgsIG1pbnV0ZSwgc2Vjb25kXTtcclxufVxyXG5cclxuY29uc3QgY2Z1ID0ge1xyXG4gIC8vZGVtb3R5cGXkuLroh6rlrprkuYnlm77ooajnsbvlnovvvIzkuIDoiKzkuI3pnIDopoHoh6rlrprkuYnlm77ooajnsbvlnovvvIzlj6rpnIDopoHmlLnmoLnoioLngrnkuIrlr7nlupTnmoTnsbvlnovljbPlj69cclxuXHRcInR5cGVcIjpbXCJwaWVcIixcInJpbmdcIixcInJvc2VcIixcIndvcmRcIixcImZ1bm5lbFwiLFwibWFwXCIsXCJhcmNiYXJcIixcImxpbmVcIixcImNvbHVtblwiLFwibW91bnRcIixcImJhclwiLFwiYXJlYVwiLFwicmFkYXJcIixcImdhdWdlXCIsXCJjYW5kbGVcIixcIm1peFwiLFwidGxpbmVcIixcInRhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIixcImRlbW90eXBlXCJdLFxyXG5cdFwicmFuZ2VcIjpbXCLppbznirblm75cIixcIuWchueOr+WbvlwiLFwi546r55Gw5Zu+XCIsXCLor43kupHlm75cIixcIua8j+aWl+WbvlwiLFwi5Zyw5Zu+XCIsXCLlnIblvKfov5vluqbmnaFcIixcIuaKmOe6v+WbvlwiLFwi5p+x54q25Zu+XCIsXCLlsbHls7Dlm75cIixcIuadoeeKtuWbvlwiLFwi5Yy65Z+f5Zu+XCIsXCLpm7fovr7lm75cIixcIuS7quihqOebmFwiLFwiS+e6v+WbvlwiLFwi5re35ZCI5Zu+XCIsXCLml7bpl7TovbTmipjnur9cIixcIuaXtumXtOi9tOWMuuWfn1wiLFwi5pWj54K55Zu+XCIsXCLmsJTms6Hlm75cIixcIuiHquWumuS5ieexu+Wei1wiXSxcclxuICAvL+WinuWKoOiHquWumuS5ieWbvuihqOexu+Wei++8jOWmguaenOmcgOimgWNhdGVnb3JpZXPvvIzor7flnKjov5nph4zliqDlhaXmgqjnmoTlm77ooajnsbvlnovvvIzkvovlpoLmnIDlkI7nmoRcImRlbW90eXBlXCJcclxuICAvL+iHquWumuS5ieexu+Wei+aXtumcgOimgeazqOaEj1widGxpbmVcIixcInRhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIuetieaXtumXtOi9tO+8iOefoumHj3jovbTvvInnsbvlm77ooajvvIzmsqHmnIljYXRlZ29yaWVz77yM5LiN6ZyA6KaB5Yqg5YWlY2F0ZWdvcmllc1xyXG5cdFwiY2F0ZWdvcmllc1wiOltcImxpbmVcIixcImNvbHVtblwiLFwibW91bnRcIixcImJhclwiLFwiYXJlYVwiLFwicmFkYXJcIixcImdhdWdlXCIsXCJjYW5kbGVcIixcIm1peFwiLFwiZGVtb3R5cGVcIl0sXHJcbiAgLy9pbnN0YW5jZeS4uuWunuS+i+WPmOmHj+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG4gIFwiaW5zdGFuY2VcIjp7fSxcclxuICAvL29wdGlvbuS4um9wdHPlj4plb3B0c+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG4gIFwib3B0aW9uXCI6e30sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYlmb3JtYXTphY3nva7vvIzlm6DpmaRINeerr+WklueahOWFtuS7luerr+aXoOazlemAmui/h3Byb3Bz5Lyg6YCS5Ye95pWw77yM5Y+q6IO96YCa6L+H5q2k5bGe5oCn5a+55bqU5LiL5qCH55qE5pa55byP5p2l5pu/5o2iXHJcbiAgXCJmb3JtYXR0ZXJcIjp7XHJcbiAgICBcInlBeGlzRGVtbzFcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gdmFsKyflhYMnfSxcclxuICAgIFwieUF4aXNEZW1vMlwiOmZ1bmN0aW9uKHZhbCwgaW5kZXgsIG9wdHMpe3JldHVybiB2YWwudG9GaXhlZCgyKX0sXHJcbiAgICBcInhBeGlzRGVtbzFcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gdmFsKyflubQnO30sXHJcbiAgICBcInhBeGlzRGVtbzJcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gZm9ybWF0RGF0ZVRpbWUodmFsLCdoOm0nKX0sXHJcbiAgICBcInNlcmllc0RlbW8xXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgc2VyaWVzLCBvcHRzKXtyZXR1cm4gdmFsKyflhYMnfSxcclxuICAgIFwidG9vbHRpcERlbW8xXCI6ZnVuY3Rpb24oaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKXtcclxuICAgICAgaWYoaW5kZXg9PTApe1xyXG4gICAgICBcdHJldHVybiAn6ZqP5L6/55SoJytpdGVtLmRhdGErJ+W5tCdcclxuICAgICAgfWVsc2V7XHJcbiAgICAgIFx0cmV0dXJuICflhbbku5bmiJHmsqHmlLknK2l0ZW0uZGF0YSsn5aSpJ1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgXCJwaWVEZW1vXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgc2VyaWVzLCBvcHRzKXtcclxuICAgICAgaWYoaW5kZXggIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgcmV0dXJuIHNlcmllc1tpbmRleF0ubmFtZSsn77yaJytzZXJpZXNbaW5kZXhdLmRhdGErJ+WFgydcclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9LFxyXG4gIC8v6L+Z6YeM5ryU56S65LqG6Ieq5a6a5LmJ5oKo55qE5Zu+6KGo57G75Z6L55qEb3B0aW9u77yM5Y+v5Lul6ZqP5oSP5ZG95ZCN77yM5LmL5ZCO5Zyo57uE5Lu25LiKIHR5cGU9XCJkZW1vdHlwZVwiIOWQju+8jOe7hOS7tuS8muiwg+eUqOi/meS4quiKseaLrOWPt+mHjOeahG9wdGlvbu+8jOWmguaenOe7hOS7tuS4iui/mOWtmOWcqG9wdHPlj4LmlbDvvIzkvJrlsIZkZW1vdHlwZeS4jm9wdHPkuK1vcHRpb27lkIjlubblkI7muLLmn5Plm77ooajjgIJcclxuICBcImRlbW90eXBlXCI6e1xyXG4gICAgLy/miJHov5nph4zmiormm7Lnur/lm77lvZPlgZrkuoboh6rlrprkuYnlm77ooajnsbvlnovvvIzmgqjlj6/ku6XmoLnmja7pnIDopoHpmo/mhI/mjIflrprnsbvlnovmiJbphY3nva5cclxuICAgIFwidHlwZVwiOiBcImxpbmVcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcbiAgICBcInBhZGRpbmdcIjogWzE1LDEwLDAsMTVdLFxyXG4gICAgXCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcbiAgICB9LFxyXG4gICAgXCJsZWdlbmRcIjoge1xyXG4gICAgfSxcclxuICAgIFwiZXh0cmFcIjoge1xyXG4gICAgXHRcImxpbmVcIjoge1xyXG4gICAgXHRcdFwidHlwZVwiOiBcImN1cnZlXCIsXHJcbiAgICBcdFx0XCJ3aWR0aFwiOiAyXHJcbiAgICBcdH0sXHJcbiAgICB9XHJcbiAgfSxcclxuICAvL+S4i+mdouaYr+iHquWumuS5iemFjee9ru+8jOivt+a3u+WKoOmhueebruaJgOmcgOeahOmAmueUqOmFjee9rlxyXG5cdFwicGllXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwicGllXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFs1LDUsNSw1XSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcInBpZVwiOiB7XHJcblx0XHRcdFx0XCJhY3RpdmVPcGFjaXR5XCI6IDAuNSxcclxuXHRcdFx0XHRcImFjdGl2ZVJhZGl1c1wiOiAxMCxcclxuXHRcdFx0XHRcIm9mZnNldEFuZ2xlXCI6IDAsXHJcblx0XHRcdFx0XCJsYWJlbFdpZHRoXCI6IDE1LFxyXG5cdFx0XHRcdFwiYm9yZGVyXCI6IHRydWUsXHJcblx0XHRcdFx0XCJib3JkZXJXaWR0aFwiOiAzLFxyXG5cdFx0XHRcdFwiYm9yZGVyQ29sb3JcIjogXCIjRkZGRkZGXCJcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwicmluZ1wiOntcclxuXHRcdFwidHlwZVwiOiBcInJpbmdcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzUsNSw1LDVdLFxyXG5cdFx0XCJyb3RhdGVcIjogZmFsc2UsXHJcblx0XHRcImRhdGFMYWJlbFwiOiB0cnVlLFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJwb3NpdGlvblwiOiBcInJpZ2h0XCIsXHJcbiAgICAgIFwibGluZUhlaWdodFwiOiAyNSxcclxuXHRcdH0sXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi5pS255uK546HXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMTUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjNjY2NjY2XCJcclxuXHRcdH0sXHJcblx0XHRcInN1YnRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwiNzAlXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMjUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjN2NiNWVjXCJcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJyaW5nXCI6IHtcclxuXHRcdFx0XHRcInJpbmdXaWR0aFwiOjMwLFxyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjUsXHJcblx0XHRcdFx0XCJhY3RpdmVSYWRpdXNcIjogMTAsXHJcblx0XHRcdFx0XCJvZmZzZXRBbmdsZVwiOiAwLFxyXG5cdFx0XHRcdFwibGFiZWxXaWR0aFwiOiAxNSxcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMyxcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiI0ZGRkZGRlwiXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJyb3NlXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwicm9zZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHRcdFwic2hvd1wiOiB0cnVlLFxyXG5cdFx0XHRcInBvc2l0aW9uXCI6IFwibGVmdFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicm9zZVwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwiYXJlYVwiLFxyXG5cdFx0XHRcdFwibWluUmFkaXVzXCI6IDUwLFxyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjUsXHJcblx0XHRcdFx0XCJhY3RpdmVSYWRpdXNcIjogMTAsXHJcblx0XHRcdFx0XCJvZmZzZXRBbmdsZVwiOiAwLFxyXG5cdFx0XHRcdFwibGFiZWxXaWR0aFwiOiAxNSxcclxuXHRcdFx0XHRcImJvcmRlclwiOiBmYWxzZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDIsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJ3b3JkXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwid29yZFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIndvcmRcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcIm5vcm1hbFwiLFxyXG5cdFx0XHRcdFwiYXV0b0NvbG9yc1wiOiBmYWxzZVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSxcclxuXHRcImZ1bm5lbFwiOntcclxuXHRcdFwidHlwZVwiOiBcImZ1bm5lbFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCwxNV0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJmdW5uZWxcIjoge1xyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjMsXHJcblx0XHRcdFx0XCJhY3RpdmVXaWR0aFwiOiAxMCxcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMixcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiI0ZGRkZGRlwiLFxyXG5cdFx0XHRcdFwiZmlsbE9wYWNpdHlcIjogMSxcclxuXHRcdFx0XHRcImxhYmVsQWxpZ25cIjogXCJyaWdodFwiXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcIm1hcFwiOntcclxuXHRcdFwidHlwZVwiOiBcIm1hcFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMCwwLDAsMF0sXHJcbiAgICBcImRhdGFMYWJlbFwiOiB0cnVlLFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwibWFwXCI6IHtcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMSxcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiIzY2NjY2NlwiLFxyXG5cdFx0XHRcdFwiZmlsbE9wYWNpdHlcIjogMC42LFxyXG5cdFx0XHRcdFwiYWN0aXZlQm9yZGVyQ29sb3JcIjogXCIjRjA0ODY0XCIsXHJcblx0XHRcdFx0XCJhY3RpdmVGaWxsQ29sb3JcIjogXCIjRkFDQzE0XCIsXHJcblx0XHRcdFx0XCJhY3RpdmVGaWxsT3BhY2l0eVwiOiAxXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcImFyY2JhclwiOntcclxuXHRcdFwidHlwZVwiOiBcImFyY2JhclwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCLnmb7liIbmr5RcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAyNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiMwMEZGMDBcIlxyXG5cdFx0fSxcclxuXHRcdFwic3VidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCLpu5jorqTmoIfpophcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAxNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiM2NjY2NjZcIlxyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImFyY2JhclwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwiZGVmYXVsdFwiLFxyXG5cdFx0XHRcdFwid2lkdGhcIjogMTIsXHJcblx0XHRcdFx0XCJiYWNrZ3JvdW5kQ29sb3JcIjogXCIjRTlFOUU5XCIsXHJcblx0XHRcdFx0XCJzdGFydEFuZ2xlXCI6IDAuNzUsXHJcblx0XHRcdFx0XCJlbmRBbmdsZVwiOiAwLjI1LFxyXG5cdFx0XHRcdFwiZ2FwXCI6IDJcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJsaW5lXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwibGluZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTAsMCwxNV0sXHJcblx0XHRcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiB0cnVlLFxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge1xyXG4gICAgICBcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG4gICAgICBcImRhc2hMZW5ndGhcIjogMixcclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwibGluZVwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwic3RyYWlnaHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDIsXHJcbiAgICAgICAgXCJhY3RpdmVUeXBlXCI6IFwiaG9sbG93XCJcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG4gIFwidGxpbmVcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJsaW5lXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICBcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IGZhbHNlLFxyXG4gICAgICBcImJvdW5kYXJ5R2FwXCI6XCJqdXN0aWZ5XCIsXHJcbiAgXHR9LFxyXG4gIFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG4gICAgICBcImRhdGFcIjpbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXCJtaW5cIjowLFxyXG4gICAgICAgICAgXCJtYXhcIjo4MFxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gIFx0fSxcclxuICBcdFwibGVnZW5kXCI6IHtcclxuICBcdH0sXHJcbiAgXHRcImV4dHJhXCI6IHtcclxuICBcdFx0XCJsaW5lXCI6IHtcclxuICBcdFx0XHRcInR5cGVcIjogXCJjdXJ2ZVwiLFxyXG4gIFx0XHRcdFwid2lkdGhcIjogMixcclxuICAgICAgICBcImFjdGl2ZVR5cGVcIjogXCJob2xsb3dcIlxyXG4gIFx0XHR9LFxyXG4gIFx0fVxyXG4gIH0sXHJcbiAgXCJ0YXJlYVwiOntcclxuICBcdFwidHlwZVwiOiBcImFyZWFcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcbiAgXHRcInBhZGRpbmdcIjogWzE1LDEwLDAsMTVdLFxyXG4gIFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gICAgICBcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG4gICAgICBcImRhc2hMZW5ndGhcIjogMixcclxuICAgICAgXCJkYXRhXCI6W1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwibWluXCI6MCxcclxuICAgICAgICAgIFwibWF4XCI6ODBcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICBcdH0sXHJcbiAgXHRcImxlZ2VuZFwiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJleHRyYVwiOiB7XHJcbiAgXHRcdFwiYXJlYVwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwiY3VydmVcIixcclxuICBcdFx0XHRcIm9wYWNpdHlcIjogMC4yLFxyXG4gIFx0XHRcdFwiYWRkTGluZVwiOiB0cnVlLFxyXG4gIFx0XHRcdFwid2lkdGhcIjogMixcclxuICBcdFx0XHRcImdyYWRpZW50XCI6IHRydWUsXHJcbiAgICAgICAgXCJhY3RpdmVUeXBlXCI6IFwiaG9sbG93XCJcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG5cdFwiY29sdW1uXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwiY29sdW1uXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJkYXRhXCI6W3tcIm1pblwiOjB9XVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJjb2x1bW5cIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImdyb3VwXCIsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuXHRcdFx0XHRcImFjdGl2ZUJnQ29sb3JcIjogXCIjMDAwMDAwXCIsXHJcblx0XHRcdFx0XCJhY3RpdmVCZ09wYWNpdHlcIjogMC4wOFxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcbiAgXCJtb3VudFwiOntcclxuICBcdFwidHlwZVwiOiBcIm1vdW50XCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDVdLFxyXG4gIFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuICBcdH0sXHJcbiAgXHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJkYXRhXCI6W3tcIm1pblwiOjB9XVxyXG4gIFx0fSxcclxuICBcdFwibGVnZW5kXCI6IHtcclxuICBcdH0sXHJcbiAgXHRcImV4dHJhXCI6IHtcclxuICBcdFx0XCJtb3VudFwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwibW91bnRcIixcclxuICBcdFx0XHRcIndpZHRoUmF0aW9cIjogMS41LFxyXG4gIFx0XHR9LFxyXG4gIFx0fVxyXG4gIH0sXHJcbiAgXCJiYXJcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJiYXJcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcbiAgXHRcInBhZGRpbmdcIjogWzE1LDMwLDAsNV0sXHJcbiAgXHRcInhBeGlzXCI6IHtcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcImRpc2FibGVHcmlkXCI6ZmFsc2UsXHJcbiAgICAgIFwibWluXCI6MCxcclxuICAgICAgXCJheGlzTGluZVwiOmZhbHNlXHJcbiAgXHR9LFxyXG4gIFx0XCJ5QXhpc1wiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJsZWdlbmRcIjoge1xyXG4gIFx0fSxcclxuICBcdFwiZXh0cmFcIjoge1xyXG4gIFx0XHRcImJhclwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwiZ3JvdXBcIixcclxuICBcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG4gIFx0XHRcdFwibWV0ZXJCb3JkZVwiOiAxLFxyXG4gIFx0XHRcdFwibWV0ZXJGaWxsQ29sb3JcIjogXCIjRkZGRkZGXCIsXHJcbiAgXHRcdFx0XCJhY3RpdmVCZ0NvbG9yXCI6IFwiIzAwMDAwMFwiLFxyXG4gIFx0XHRcdFwiYWN0aXZlQmdPcGFjaXR5XCI6IDAuMDhcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG5cdFwiYXJlYVwiOntcclxuXHRcdFwidHlwZVwiOiBcImFyZWFcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImFyZWFcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcInN0cmFpZ2h0XCIsXHJcblx0XHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuXHRcdFx0XHRcImFkZExpbmVcIjogdHJ1ZSxcclxuXHRcdFx0XHRcIndpZHRoXCI6IDIsXHJcblx0XHRcdFx0XCJncmFkaWVudFwiOiBmYWxzZSxcclxuICAgICAgICBcImFjdGl2ZVR5cGVcIjogXCJob2xsb3dcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJyYWRhclwiOntcclxuXHRcdFwidHlwZVwiOiBcInJhZGFyXCIsXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFs1LDUsNSw1XSxcclxuICAgIFwiZGF0YUxhYmVsXCI6IGZhbHNlLFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJwb3NpdGlvblwiOiBcInJpZ2h0XCIsXHJcbiAgICAgIFwibGluZUhlaWdodFwiOiAyNSxcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJyYWRhclwiOiB7XHJcblx0XHRcdFx0XCJncmlkVHlwZVwiOiBcInJhZGFyXCIsXHJcblx0XHRcdFx0XCJncmlkQ29sb3JcIjogXCIjQ0NDQ0NDXCIsXHJcblx0XHRcdFx0XCJncmlkQ291bnRcIjogMyxcclxuXHRcdFx0XHRcIm9wYWNpdHlcIjogMC4yLFxyXG5cdFx0XHRcdFwibWF4XCI6IDIwMCxcclxuXHRcdFx0XHRcImxhYmVsU2hvd1wiOiB0cnVlXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcImdhdWdlXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwiZ2F1Z2VcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwiNjZLbS9IXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMjUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjMmZjMjViXCIsXHJcblx0XHRcdFwib2Zmc2V0WVwiOiA1MFxyXG5cdFx0fSxcclxuXHRcdFwic3VidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCLlrp7ml7bpgJ/luqZcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAxNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiMxODkwZmZcIixcclxuXHRcdFx0XCJvZmZzZXRZXCI6IC01MFxyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImdhdWdlXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuXHRcdFx0XHRcImxhYmVsQ29sb3JcIjogXCIjNjY2NjY2XCIsXHJcblx0XHRcdFx0XCJzdGFydEFuZ2xlXCI6IDAuNzUsXHJcblx0XHRcdFx0XCJlbmRBbmdsZVwiOiAwLjI1LFxyXG5cdFx0XHRcdFwic3RhcnROdW1iZXJcIjogMCxcclxuXHRcdFx0XHRcImVuZE51bWJlclwiOiAxMDAsXHJcblx0XHRcdFx0XCJsYWJlbEZvcm1hdFwiOiBcIlwiLFxyXG5cdFx0XHRcdFwic3BsaXRMaW5lXCI6IHtcclxuXHRcdFx0XHRcdFwiZml4UmFkaXVzXCI6IDAsXHJcblx0XHRcdFx0XHRcInNwbGl0TnVtYmVyXCI6IDEwLFxyXG5cdFx0XHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogXCIjRkZGRkZGXCIsXHJcblx0XHRcdFx0XHRcImNoaWxkTnVtYmVyXCI6IDUsXHJcblx0XHRcdFx0XHRcImNoaWxkV2lkdGhcIjogMTJcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdFwicG9pbnRlclwiOiB7XHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDI0LFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBcImF1dG9cIlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJjYW5kbGVcIjp7XHJcblx0XHRcInR5cGVcIjogXCJjYW5kbGVcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJlbmFibGVTY3JvbGxcIjogdHJ1ZSxcclxuXHRcdFwiZW5hYmxlTWFya0xpbmVcIjogdHJ1ZSxcclxuXHRcdFwiZGF0YUxhYmVsXCI6IGZhbHNlLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcblx0XHRcdFwibGFiZWxDb3VudFwiOiA0LFxyXG5cdFx0XHRcIml0ZW1Db3VudFwiOiA0MCxcclxuXHRcdFx0XCJkaXNhYmxlR3JpZFwiOiB0cnVlLFxyXG5cdFx0XHRcImdyaWRDb2xvclwiOiBcIiNDQ0NDQ0NcIixcclxuXHRcdFx0XCJncmlkVHlwZVwiOiBcInNvbGlkXCIsXHJcblx0XHRcdFwiZGFzaExlbmd0aFwiOiA0LFxyXG5cdFx0XHRcInNjcm9sbFNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJzY3JvbGxBbGlnblwiOiBcImxlZnRcIixcclxuXHRcdFx0XCJzY3JvbGxDb2xvclwiOiBcIiNBNkE2QTZcIixcclxuXHRcdFx0XCJzY3JvbGxCYWNrZ3JvdW5kQ29sb3JcIjogXCIjRUZFQkVGXCJcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiY2FuZGxlXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6IHtcclxuXHRcdFx0XHRcdFwidXBMaW5lXCI6IFwiI2YwNDg2NFwiLFxyXG5cdFx0XHRcdFx0XCJ1cEZpbGxcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcImRvd25MaW5lXCI6IFwiIzJmYzI1YlwiLFxyXG5cdFx0XHRcdFx0XCJkb3duRmlsbFwiOiBcIiMyZmMyNWJcIlxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0XCJhdmVyYWdlXCI6IHtcclxuXHRcdFx0XHRcdFwic2hvd1wiOiB0cnVlLFxyXG5cdFx0XHRcdFx0XCJuYW1lXCI6IFtcIk1BNVwiLFwiTUExMFwiLFwiTUEzMFwiXSxcclxuXHRcdFx0XHRcdFwiZGF5XCI6IFs1LDEwLDIwXSxcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogW1wiIzE4OTBmZlwiLFwiIzJmYzI1YlwiLFwiI2ZhY2MxNFwiXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJtYXJrTGluZVwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwiZGFzaFwiLFxyXG5cdFx0XHRcdFwiZGFzaExlbmd0aFwiOiA1LFxyXG5cdFx0XHRcdFwiZGF0YVwiOiBbXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFwidmFsdWVcIjogMjE1MCxcclxuXHRcdFx0XHRcdFx0XCJsaW5lQ29sb3JcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcdFwic2hvd0xhYmVsXCI6IHRydWVcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFwidmFsdWVcIjogMjM1MCxcclxuXHRcdFx0XHRcdFx0XCJsaW5lQ29sb3JcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcdFwic2hvd0xhYmVsXCI6IHRydWVcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRdXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdFwibWl4XCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwibWl4XCIsXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDE1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcblx0XHRcdFwiZGlzYWJsZWRcIjogZmFsc2UsXHJcblx0XHRcdFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcblx0XHRcdFwic3BsaXROdW1iZXJcIjogNSxcclxuXHRcdFx0XCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuXHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDQsXHJcblx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcInBhZGRpbmdcIjogMTAsXHJcblx0XHRcdFwic2hvd1RpdGxlXCI6IHRydWUsXHJcblx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJtaXhcIjoge1xyXG5cdFx0XHRcdFwiY29sdW1uXCI6IHtcclxuXHRcdFx0XHRcdFwid2lkdGhcIjogMjBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcInNjYXR0ZXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJzY2F0dGVyXCIsXHJcblx0XHRcImNvbG9yXCI6Y29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjpbMTUsMTUsMCwxNV0sXHJcbiAgICBcImRhdGFMYWJlbFwiOmZhbHNlLFxyXG4gICAgXCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgICAgXCJzcGxpdE51bWJlclwiOjUsXHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICAgICAgXCJtaW5cIjowXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgIH0sXHJcbiAgICBcImxlZ2VuZFwiOiB7XHJcbiAgICB9LFxyXG4gICAgXCJleHRyYVwiOiB7XHJcbiAgICBcdFwic2NhdHRlclwiOiB7XHJcbiAgICBcdH0sXHJcbiAgICB9XHJcblx0fSxcclxuXHRcImJ1YmJsZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImJ1YmJsZVwiLFxyXG5cdFx0XCJjb2xvclwiOmNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6WzE1LDE1LDAsMTVdLFxyXG4gICAgXCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgICAgXCJzcGxpdE51bWJlclwiOjUsXHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICAgICAgXCJtaW5cIjowLFxyXG4gICAgICBcIm1heFwiOjI1MFxyXG4gICAgfSxcclxuICAgIFwieUF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IGZhbHNlLFxyXG4gICAgICBcImdyaWRUeXBlXCI6XCJkYXNoXCIsXHJcbiAgICAgIFwiZGF0YVwiOlt7XHJcbiAgICAgICAgXCJtaW5cIjowLFxyXG4gICAgICAgIFwibWF4XCI6MTUwXHJcbiAgICAgIH1dXHJcbiAgICB9LFxyXG4gICAgXCJsZWdlbmRcIjoge1xyXG4gICAgfSxcclxuICAgIFwiZXh0cmFcIjoge1xyXG4gICAgXHRcImJ1YmJsZVwiOiB7XHJcbiAgICAgICAgXCJib3JkZXJcIjoyLFxyXG4gICAgICAgIFwib3BhY2l0eVwiOiAwLjUsXHJcbiAgICBcdH0sXHJcbiAgICB9XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjZnU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///123\n"); /***/ }), /* 124 */ /*!******************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.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/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n// 通用配置项\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\nvar cfe = {\n //demotype为自定义图表类型\n \"type\": [\"pie\", \"ring\", \"rose\", \"funnel\", \"line\", \"column\", \"area\", \"radar\", \"gauge\", \"candle\", \"demotype\"],\n //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的\"demotype\"\n \"categories\": [\"line\", \"column\", \"area\", \"radar\", \"gauge\", \"candle\", \"demotype\"],\n //instance为实例变量承载属性,option为eopts承载属性,不要删除\n \"instance\": {},\n \"option\": {},\n //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n \"formatter\": {\n \"tooltipDemo1\": function tooltipDemo1(res) {\n var result = '';\n for (var i in res) {\n if (i == 0) {\n result += res[i].axisValueLabel + '年销售额';\n }\n var value = '--';\n if (res[i].data !== null) {\n value = res[i].data;\n }\n result += '
' + res[i].marker + res[i].seriesName + ':' + value + ' 万元';\n }\n return result;\n },\n legendFormat: function legendFormat(name) {\n return \"自定义图例+\" + name;\n },\n yAxisFormatDemo: function yAxisFormatDemo(value, index) {\n return value + '元';\n },\n seriesFormatDemo: function seriesFormatDemo(res) {\n return res.name + '年' + res.value + '元';\n }\n },\n //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。\n \"demotype\": {\n \"color\": color\n //在这里填写echarts的option即可\n },\n\n //下面是自定义配置,请添加项目所需的通用配置\n \"column\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'axis'\n },\n \"grid\": {\n \"top\": 30,\n \"bottom\": 50,\n \"right\": 15,\n \"left\": 40\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"toolbox\": {\n \"show\": false\n },\n \"xAxis\": {\n \"type\": 'category',\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n },\n \"boundaryGap\": true,\n \"data\": []\n },\n \"yAxis\": {\n \"type\": 'value',\n \"axisTick\": {\n \"show\": false\n },\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n }\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'bar',\n \"data\": [],\n \"barwidth\": 20,\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"line\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'axis'\n },\n \"grid\": {\n \"top\": 30,\n \"bottom\": 50,\n \"right\": 15,\n \"left\": 40\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"toolbox\": {\n \"show\": false\n },\n \"xAxis\": {\n \"type\": 'category',\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n },\n \"boundaryGap\": true,\n \"data\": []\n },\n \"yAxis\": {\n \"type\": 'value',\n \"axisTick\": {\n \"show\": false\n },\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n }\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'line',\n \"data\": [],\n \"barwidth\": 20,\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"area\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'axis'\n },\n \"grid\": {\n \"top\": 30,\n \"bottom\": 50,\n \"right\": 15,\n \"left\": 40\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"toolbox\": {\n \"show\": false\n },\n \"xAxis\": {\n \"type\": 'category',\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n },\n \"boundaryGap\": true,\n \"data\": []\n },\n \"yAxis\": {\n \"type\": 'value',\n \"axisTick\": {\n \"show\": false\n },\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n }\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'line',\n \"data\": [],\n \"areaStyle\": {},\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"pie\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item'\n },\n \"grid\": {\n \"top\": 40,\n \"bottom\": 30,\n \"right\": 15,\n \"left\": 15\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'pie',\n \"data\": [],\n \"radius\": '50%',\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"ring\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item'\n },\n \"grid\": {\n \"top\": 40,\n \"bottom\": 30,\n \"right\": 15,\n \"left\": 15\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'pie',\n \"data\": [],\n \"radius\": ['40%', '70%'],\n \"avoidLabelOverlap\": false,\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n },\n \"labelLine\": {\n \"show\": true\n }\n }\n },\n \"rose\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item'\n },\n \"legend\": {\n \"top\": 'bottom'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'pie',\n \"data\": [],\n \"radius\": \"55%\",\n \"center\": ['50%', '50%'],\n \"roseType\": 'area'\n }\n },\n \"funnel\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item',\n \"formatter\": \"{b} : {c}%\"\n },\n \"legend\": {\n \"top\": 'bottom'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'funnel',\n \"left\": '10%',\n \"top\": 60,\n \"bottom\": 60,\n \"width\": '80%',\n \"min\": 0,\n \"max\": 100,\n \"minSize\": '0%',\n \"maxSize\": '100%',\n \"sort\": 'descending',\n \"gap\": 2,\n \"label\": {\n \"show\": true,\n \"position\": 'inside'\n },\n \"labelLine\": {\n \"length\": 10,\n \"lineStyle\": {\n \"width\": 1,\n \"type\": 'solid'\n }\n },\n \"itemStyle\": {\n \"bordercolor\": '#fff',\n \"borderwidth\": 1\n },\n \"emphasis\": {\n \"label\": {\n \"fontSize\": 20\n }\n },\n \"data\": []\n }\n },\n \"gauge\": {\n \"color\": color,\n \"tooltip\": {\n \"formatter\": '{a}
{b} : {c}%'\n },\n \"seriesTemplate\": {\n \"name\": '业务指标',\n \"type\": 'gauge',\n \"detail\": {\n \"formatter\": '{value}%'\n },\n \"data\": [{\n \"value\": 50,\n \"name\": '完成率'\n }]\n }\n },\n \"candle\": {\n \"xAxis\": {\n \"data\": []\n },\n \"yAxis\": {},\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"dataZoom\": [{\n \"type\": 'inside',\n \"xAxisIndex\": [0, 1],\n \"start\": 10,\n \"end\": 100\n }, {\n \"show\": true,\n \"xAxisIndex\": [0, 1],\n \"type\": 'slider',\n \"bottom\": 10,\n \"start\": 10,\n \"end\": 100\n }],\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'k',\n \"data\": []\n }\n }\n};\nvar _default = cfe;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLWVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJjZmUiLCJyZXMiLCJyZXN1bHQiLCJpIiwiYXhpc1ZhbHVlTGFiZWwiLCJ2YWx1ZSIsImRhdGEiLCJtYXJrZXIiLCJzZXJpZXNOYW1lIiwibGVnZW5kRm9ybWF0IiwibmFtZSIsInlBeGlzRm9ybWF0RGVtbyIsImluZGV4Iiwic2VyaWVzRm9ybWF0RGVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLElBQU1BLEtBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0FBRWpILElBQU1DLEdBQUcsR0FBRztFQUNWO0VBQ0QsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsUUFBUSxFQUFDLFVBQVUsQ0FBQztFQUN4RztFQUNELFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLFVBQVUsQ0FBQztFQUM5RTtFQUNELFVBQVUsRUFBRSxDQUFDLENBQUM7RUFDZCxRQUFRLEVBQUUsQ0FBQyxDQUFDO0VBQ1g7RUFDQSxXQUFXLEVBQUM7SUFDVixjQUFjLEVBQUMsc0JBQVNDLEdBQUcsRUFBQztNQUMxQixJQUFJQyxNQUFNLEdBQUcsRUFBRTtNQUNmLEtBQUssSUFBSUMsQ0FBQyxJQUFJRixHQUFHLEVBQUU7UUFDbEIsSUFBSUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtVQUNYRCxNQUFNLElBQUlELEdBQUcsQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLGNBQWMsR0FBRyxNQUFNO1FBQ3pDO1FBQ0EsSUFBSUMsS0FBSyxHQUFHLElBQUk7UUFDaEIsSUFBSUosR0FBRyxDQUFDRSxDQUFDLENBQUMsQ0FBQ0csSUFBSSxLQUFLLElBQUksRUFBRTtVQUN6QkQsS0FBSyxHQUFHSixHQUFHLENBQUNFLENBQUMsQ0FBQyxDQUFDRyxJQUFJO1FBQ3BCO1FBTUFKLE1BQU0sSUFBSSxPQUFPLEdBQUdELEdBQUcsQ0FBQ0UsQ0FBQyxDQUFDLENBQUNJLE1BQU0sR0FBR04sR0FBRyxDQUFDRSxDQUFDLENBQUMsQ0FBQ0ssVUFBVSxHQUFHLEdBQUcsR0FBR0gsS0FBSyxHQUFHLEtBQUs7TUFFNUU7TUFDQSxPQUFPSCxNQUFNO0lBQ2YsQ0FBQztJQUNETyxZQUFZLEVBQUMsc0JBQVNDLElBQUksRUFBQztNQUN6QixPQUFPLFFBQVEsR0FBQ0EsSUFBSTtJQUN0QixDQUFDO0lBQ0RDLGVBQWUsRUFBQyx5QkFBVU4sS0FBSyxFQUFFTyxLQUFLLEVBQUU7TUFDdEMsT0FBT1AsS0FBSyxHQUFHLEdBQUc7SUFDcEIsQ0FBQztJQUNEUSxnQkFBZ0IsRUFBQywwQkFBU1osR0FBRyxFQUFDO01BQzVCLE9BQU9BLEdBQUcsQ0FBQ1MsSUFBSSxHQUFHLEdBQUcsR0FBR1QsR0FBRyxDQUFDSSxLQUFLLEdBQUcsR0FBRztJQUN6QztFQUNGLENBQUM7RUFDRDtFQUNBLFVBQVUsRUFBQztJQUNULE9BQU8sRUFBRU47SUFDVDtFQUVGLENBQUM7O0VBQ0Q7RUFDRCxRQUFRLEVBQUU7SUFDVCxPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsU0FBUyxFQUFFO0lBQ1osQ0FBQztJQUNELE1BQU0sRUFBRTtNQUNQLEtBQUssRUFBRSxFQUFFO01BQ1QsUUFBUSxFQUFFLEVBQUU7TUFDWixPQUFPLEVBQUUsRUFBRTtNQUNYLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxRQUFRLEVBQUU7TUFDVCxRQUFRLEVBQUU7SUFDWCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRSxVQUFVO01BQ2xCLFdBQVcsRUFBRTtRQUNaLE9BQU8sRUFBRTtNQUNWLENBQUM7TUFDRCxVQUFVLEVBQUU7UUFDWCxXQUFXLEVBQUU7VUFDWixPQUFPLEVBQUU7UUFDVjtNQUNELENBQUM7TUFDRCxhQUFhLEVBQUUsSUFBSTtNQUNuQixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFLE9BQU87TUFDZixVQUFVLEVBQUU7UUFDWCxNQUFNLEVBQUU7TUFDVCxDQUFDO01BQ0QsV0FBVyxFQUFFO1FBQ1osT0FBTyxFQUFFO01BQ1YsQ0FBQztNQUNELFVBQVUsRUFBRTtRQUNYLFdBQVcsRUFBRTtVQUNaLE9BQU8sRUFBRTtRQUNWO01BQ0Q7SUFDRCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLEVBQUU7TUFDVixNQUFNLEVBQUUsS0FBSztNQUNiLE1BQU0sRUFBRSxFQUFFO01BQ1YsVUFBVSxFQUFFLEVBQUU7TUFDZCxPQUFPLEVBQUU7UUFDUixNQUFNLEVBQUUsSUFBSTtRQUNSLE9BQU8sRUFBRSxTQUFTO1FBQ3RCLFVBQVUsRUFBRTtNQUNiO0lBQ0Q7RUFDRCxDQUFDO0VBQ0QsTUFBTSxFQUFFO0lBQ1AsT0FBTyxFQUFFQSxLQUFLO0lBQ2QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELFNBQVMsRUFBRTtNQUNWLFNBQVMsRUFBRTtJQUNaLENBQUM7SUFDRCxNQUFNLEVBQUU7TUFDUCxLQUFLLEVBQUUsRUFBRTtNQUNULFFBQVEsRUFBRSxFQUFFO01BQ1osT0FBTyxFQUFFLEVBQUU7TUFDWCxNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsUUFBUSxFQUFFO01BQ1QsUUFBUSxFQUFFO0lBQ1gsQ0FBQztJQUNELFNBQVMsRUFBRTtNQUNWLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUUsVUFBVTtNQUNsQixXQUFXLEVBQUU7UUFDWixPQUFPLEVBQUU7TUFDVixDQUFDO01BQ0QsVUFBVSxFQUFFO1FBQ1gsV0FBVyxFQUFFO1VBQ1osT0FBTyxFQUFFO1FBQ1Y7TUFDRCxDQUFDO01BQ0QsYUFBYSxFQUFFLElBQUk7TUFDbkIsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRSxPQUFPO01BQ2YsVUFBVSxFQUFFO1FBQ1gsTUFBTSxFQUFFO01BQ1QsQ0FBQztNQUNELFdBQVcsRUFBRTtRQUNaLE9BQU8sRUFBRTtNQUNWLENBQUM7TUFDRCxVQUFVLEVBQUU7UUFDWCxXQUFXLEVBQUU7VUFDWixPQUFPLEVBQUU7UUFDVjtNQUNEO0lBQ0QsQ0FBQztJQUNELGdCQUFnQixFQUFFO01BQ2pCLE1BQU0sRUFBRSxFQUFFO01BQ1YsTUFBTSxFQUFFLE1BQU07TUFDZCxNQUFNLEVBQUUsRUFBRTtNQUNWLFVBQVUsRUFBRSxFQUFFO01BQ2QsT0FBTyxFQUFFO1FBQ1IsTUFBTSxFQUFFLElBQUk7UUFDUixPQUFPLEVBQUUsU0FBUztRQUN0QixVQUFVLEVBQUU7TUFDYjtJQUNEO0VBQ0QsQ0FBQztFQUNELE1BQU0sRUFBRTtJQUNQLE9BQU8sRUFBRUEsS0FBSztJQUNkLE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxTQUFTLEVBQUU7TUFDVixTQUFTLEVBQUU7SUFDWixDQUFDO0lBQ0QsTUFBTSxFQUFFO01BQ1AsS0FBSyxFQUFFLEVBQUU7TUFDVCxRQUFRLEVBQUUsRUFBRTtNQUNaLE9BQU8sRUFBRSxFQUFFO01BQ1gsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELFFBQVEsRUFBRTtNQUNULFFBQVEsRUFBRTtJQUNYLENBQUM7SUFDRCxTQUFTLEVBQUU7TUFDVixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFLFVBQVU7TUFDbEIsV0FBVyxFQUFFO1FBQ1osT0FBTyxFQUFFO01BQ1YsQ0FBQztNQUNELFVBQVUsRUFBRTtRQUNYLFdBQVcsRUFBRTtVQUNaLE9BQU8sRUFBRTtRQUNWO01BQ0QsQ0FBQztNQUNELGFBQWEsRUFBRSxJQUFJO01BQ25CLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUUsT0FBTztNQUNmLFVBQVUsRUFBRTtRQUNYLE1BQU0sRUFBRTtNQUNULENBQUM7TUFDRCxXQUFXLEVBQUU7UUFDWixPQUFPLEVBQUU7TUFDVixDQUFDO01BQ0QsVUFBVSxFQUFFO1FBQ1gsV0FBVyxFQUFFO1VBQ1osT0FBTyxFQUFFO1FBQ1Y7TUFDRDtJQUNELENBQUM7SUFDRCxnQkFBZ0IsRUFBRTtNQUNqQixNQUFNLEVBQUUsRUFBRTtNQUNWLE1BQU0sRUFBRSxNQUFNO01BQ2QsTUFBTSxFQUFFLEVBQUU7TUFDVixXQUFXLEVBQUUsQ0FBQyxDQUFDO01BQ2YsT0FBTyxFQUFFO1FBQ1IsTUFBTSxFQUFFLElBQUk7UUFDUixPQUFPLEVBQUUsU0FBUztRQUN0QixVQUFVLEVBQUU7TUFDYjtJQUNEO0VBQ0QsQ0FBQztFQUNELEtBQUssRUFBRTtJQUNOLE9BQU8sRUFBRUEsS0FBSztJQUNkLE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxTQUFTLEVBQUU7TUFDVixTQUFTLEVBQUU7SUFDWixDQUFDO0lBQ0QsTUFBTSxFQUFFO01BQ1AsS0FBSyxFQUFFLEVBQUU7TUFDVCxRQUFRLEVBQUUsRUFBRTtNQUNaLE9BQU8sRUFBRSxFQUFFO01BQ1gsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELFFBQVEsRUFBRTtNQUNULFFBQVEsRUFBRTtJQUNYLENBQUM7SUFDRCxnQkFBZ0IsRUFBRTtNQUNqQixNQUFNLEVBQUUsRUFBRTtNQUNWLE1BQU0sRUFBRSxLQUFLO01BQ2IsTUFBTSxFQUFFLEVBQUU7TUFDVixRQUFRLEVBQUUsS0FBSztNQUNmLE9BQU8sRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJO1FBQ1IsT0FBTyxFQUFFLFNBQVM7UUFDdEIsVUFBVSxFQUFFO01BQ2I7SUFDRDtFQUNELENBQUM7RUFDRCxNQUFNLEVBQUU7SUFDUCxPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsU0FBUyxFQUFFO01BQ1YsU0FBUyxFQUFFO0lBQ1osQ0FBQztJQUNELE1BQU0sRUFBRTtNQUNQLEtBQUssRUFBRSxFQUFFO01BQ1QsUUFBUSxFQUFFLEVBQUU7TUFDWixPQUFPLEVBQUUsRUFBRTtNQUNYLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxRQUFRLEVBQUU7TUFDVCxRQUFRLEVBQUU7SUFDWCxDQUFDO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLEVBQUU7TUFDVixNQUFNLEVBQUUsS0FBSztNQUNiLE1BQU0sRUFBRSxFQUFFO01BQ1YsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztNQUN4QixtQkFBbUIsRUFBRSxLQUFLO01BQzFCLE9BQU8sRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJO1FBQ1IsT0FBTyxFQUFFLFNBQVM7UUFDdEIsVUFBVSxFQUFFO01BQ2IsQ0FBQztNQUNELFdBQVcsRUFBRTtRQUNaLE1BQU0sRUFBRTtNQUNUO0lBQ0Q7RUFDRCxDQUFDO0VBQ0QsTUFBTSxFQUFFO0lBQ1AsT0FBTyxFQUFFQSxLQUFLO0lBQ2QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELFNBQVMsRUFBRTtNQUNWLFNBQVMsRUFBRTtJQUNaLENBQUM7SUFDRCxRQUFRLEVBQUU7TUFDVCxLQUFLLEVBQUU7SUFDUixDQUFDO0lBQ0QsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLEVBQUU7TUFDVixNQUFNLEVBQUUsS0FBSztNQUNiLE1BQU0sRUFBRSxFQUFFO01BQ1YsUUFBUSxFQUFFLEtBQUs7TUFDZixRQUFRLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO01BQ3hCLFVBQVUsRUFBRTtJQUNiO0VBQ0QsQ0FBQztFQUNELFFBQVEsRUFBRTtJQUNULE9BQU8sRUFBRUEsS0FBSztJQUNkLE9BQU8sRUFBRTtNQUNSLE1BQU0sRUFBRTtJQUNULENBQUM7SUFDRCxTQUFTLEVBQUU7TUFDVixTQUFTLEVBQUUsTUFBTTtNQUNqQixXQUFXLEVBQUU7SUFDZCxDQUFDO0lBQ0QsUUFBUSxFQUFFO01BQ1QsS0FBSyxFQUFFO0lBQ1IsQ0FBQztJQUNELGdCQUFnQixFQUFFO01BQ2pCLE1BQU0sRUFBRSxFQUFFO01BQ1YsTUFBTSxFQUFFLFFBQVE7TUFDaEIsTUFBTSxFQUFFLEtBQUs7TUFDYixLQUFLLEVBQUUsRUFBRTtNQUNULFFBQVEsRUFBRSxFQUFFO01BQ1osT0FBTyxFQUFFLEtBQUs7TUFDZCxLQUFLLEVBQUUsQ0FBQztNQUNSLEtBQUssRUFBRSxHQUFHO01BQ1YsU0FBUyxFQUFFLElBQUk7TUFDZixTQUFTLEVBQUUsTUFBTTtNQUNqQixNQUFNLEVBQUUsWUFBWTtNQUNwQixLQUFLLEVBQUUsQ0FBQztNQUNSLE9BQU8sRUFBRTtRQUNSLE1BQU0sRUFBRSxJQUFJO1FBQ1osVUFBVSxFQUFFO01BQ2IsQ0FBQztNQUNELFdBQVcsRUFBRTtRQUNaLFFBQVEsRUFBRSxFQUFFO1FBQ1osV0FBVyxFQUFFO1VBQ1osT0FBTyxFQUFFLENBQUM7VUFDVixNQUFNLEVBQUU7UUFDVDtNQUNELENBQUM7TUFDRCxXQUFXLEVBQUU7UUFDWixhQUFhLEVBQUUsTUFBTTtRQUNyQixhQUFhLEVBQUU7TUFDaEIsQ0FBQztNQUNELFVBQVUsRUFBRTtRQUNYLE9BQU8sRUFBRTtVQUNSLFVBQVUsRUFBRTtRQUNiO01BQ0QsQ0FBQztNQUNELE1BQU0sRUFBRTtJQUNUO0VBQ0QsQ0FBQztFQUNELE9BQU8sRUFBRTtJQUNSLE9BQU8sRUFBRUEsS0FBSztJQUNkLFNBQVMsRUFBRTtNQUNMLFdBQVcsRUFBRTtJQUNqQixDQUFDO0lBQ0gsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLE1BQU07TUFDWCxNQUFNLEVBQUUsT0FBTztNQUNmLFFBQVEsRUFBRTtRQUFDLFdBQVcsRUFBRTtNQUFVLENBQUM7TUFDbkMsTUFBTSxFQUFFLENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRTtRQUFFLE1BQU0sRUFBRTtNQUFLLENBQUM7SUFDekM7RUFDRCxDQUFDO0VBQ0QsUUFBUSxFQUFFO0lBQ1QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDWCxPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsVUFBVSxFQUFFLENBQUM7TUFDWCxNQUFNLEVBQUUsUUFBUTtNQUNoQixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQ3BCLE9BQU8sRUFBRSxFQUFFO01BQ1gsS0FBSyxFQUFFO0lBQ1IsQ0FBQyxFQUNEO01BQ0MsTUFBTSxFQUFFLElBQUk7TUFDWixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQ3BCLE1BQU0sRUFBRSxRQUFRO01BQ2hCLFFBQVEsRUFBRSxFQUFFO01BQ1osT0FBTyxFQUFFLEVBQUU7TUFDWCxLQUFLLEVBQUU7SUFDUixDQUFDLENBQ0Q7SUFDRCxnQkFBZ0IsRUFBRTtNQUNqQixNQUFNLEVBQUUsRUFBRTtNQUNWLE1BQU0sRUFBRSxHQUFHO01BQ1gsTUFBTSxFQUFFO0lBQ1Q7RUFDRDtBQUNELENBQUM7QUFBQSxlQUVjQyxHQUFHO0FBQUEiLCJmaWxlIjoiMTI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogdUNoYXJ0c8KuXHJcbiAqIOmrmOaAp+iDvei3qOW5s+WPsOWbvuihqOW6k++8jOaUr+aMgUg144CBQVBQ44CB5bCP56iL5bqP77yI5b6u5L+hL+aUr+S7mOWunS/nmb7luqYv5aS05p2hL1FRLzM2MO+8ieOAgVZ1ZeOAgVRhcm/nrYnmlK/mjIFjYW52YXPnmoTmoYbmnrblubPlj7BcclxuICogQ29weXJpZ2h0IChjKSAyMDIxIFFJVU7Crueni+S6kSBodHRwczovL3d3dy51Y2hhcnRzLmNuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkICggaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIClcclxuICog5aSN5Yi25L2/55So6K+35L+d55WZ5pys5q615rOo6YeK77yM5oSf6LCi5pSv5oyB5byA5rqQ77yBXHJcbiAqIFxyXG4gKiB1Q2hhcnRzwq7lrpjmlrnnvZHnq5lcclxuICogaHR0cHM6Ly93d3cudUNoYXJ0cy5jblxyXG4gKiBcclxuICog5byA5rqQ5Zyw5Z2AOlxyXG4gKiBodHRwczovL2dpdGVlLmNvbS91Q2hhcnRzL3VDaGFydHNcclxuICogXHJcbiAqIHVuaS1hcHDmj5Lku7bluILlnLrlnLDlnYDvvJpcclxuICogaHR0cDovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNzFcclxuICogXHJcbiAqL1xyXG5cclxuLy8g6YCa55So6YWN572u6aG5XHJcblxyXG4vLyDkuLvpopjpopzoibLphY3nva7vvJrlpoLmr4/kuKrlm77ooajnsbvlnovpnIDopoHkuI3lkIzkuLvpopjvvIzor7flnKjlr7nlupTlm77ooajnsbvlnovkuIrmm7TmlLljb2xvcuWxnuaAp1xyXG5jb25zdCBjb2xvciA9IFsnIzE4OTBGRicsICcjOTFDQjc0JywgJyNGQUM4NTgnLCAnI0VFNjY2NicsICcjNzNDMERFJywgJyMzQ0EyNzInLCAnI0ZDODQ1MicsICcjOUE2MEI0JywgJyNlYTdjY2MnXTtcclxuXHJcbmNvbnN0IGNmZSA9IHtcclxuICAvL2RlbW90eXBl5Li66Ieq5a6a5LmJ5Zu+6KGo57G75Z6LXHJcblx0XCJ0eXBlXCI6IFtcInBpZVwiLCBcInJpbmdcIiwgXCJyb3NlXCIsIFwiZnVubmVsXCIsIFwibGluZVwiLCBcImNvbHVtblwiLCBcImFyZWFcIiwgXCJyYWRhclwiLCBcImdhdWdlXCIsXCJjYW5kbGVcIixcImRlbW90eXBlXCJdLFxyXG4gIC8v5aKe5Yqg6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5aaC5p6c6ZyA6KaBY2F0ZWdvcmllc++8jOivt+WcqOi/memHjOWKoOWFpeaCqOeahOWbvuihqOexu+Wei+S+i+WmguacgOWQjueahFwiZGVtb3R5cGVcIlxyXG5cdFwiY2F0ZWdvcmllc1wiOiBbXCJsaW5lXCIsIFwiY29sdW1uXCIsIFwiYXJlYVwiLCBcInJhZGFyXCIsIFwiZ2F1Z2VcIiwgXCJjYW5kbGVcIixcImRlbW90eXBlXCJdLFxyXG4gIC8vaW5zdGFuY2XkuLrlrp7kvovlj5jph4/mib/ovb3lsZ7mgKfvvIxvcHRpb27kuLplb3B0c+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG5cdFwiaW5zdGFuY2VcIjoge30sXHJcblx0XCJvcHRpb25cIjoge30sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYlmb3JtYXTphY3nva7vvIzlm6DpmaRINeerr+WklueahOWFtuS7luerr+aXoOazlemAmui/h3Byb3Bz5Lyg6YCS5Ye95pWw77yM5Y+q6IO96YCa6L+H5q2k5bGe5oCn5a+55bqU5LiL5qCH55qE5pa55byP5p2l5pu/5o2iXHJcbiAgXCJmb3JtYXR0ZXJcIjp7XHJcbiAgICBcInRvb2x0aXBEZW1vMVwiOmZ1bmN0aW9uKHJlcyl7XHJcbiAgICAgIGxldCByZXN1bHQgPSAnJ1xyXG4gICAgICBmb3IgKGxldCBpIGluIHJlcykge1xyXG4gICAgICBcdGlmIChpID09IDApIHtcclxuICAgICAgXHRcdHJlc3VsdCArPSByZXNbaV0uYXhpc1ZhbHVlTGFiZWwgKyAn5bm06ZSA5ZSu6aKdJ1xyXG4gICAgICBcdH1cclxuICAgICAgXHRsZXQgdmFsdWUgPSAnLS0nXHJcbiAgICAgIFx0aWYgKHJlc1tpXS5kYXRhICE9PSBudWxsKSB7XHJcbiAgICAgIFx0XHR2YWx1ZSA9IHJlc1tpXS5kYXRhXHJcbiAgICAgIFx0fVxyXG5cclxuXHJcblxyXG4gICAgICBcdFxyXG5cclxuICAgICAgXHRyZXN1bHQgKz0gJzxici8+JyArIHJlc1tpXS5tYXJrZXIgKyByZXNbaV0uc2VyaWVzTmFtZSArICfvvJonICsgdmFsdWUgKyAnIOS4h+WFgydcclxuXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgICBsZWdlbmRGb3JtYXQ6ZnVuY3Rpb24obmFtZSl7XHJcbiAgICAgIHJldHVybiBcIuiHquWumuS5ieWbvuS+iytcIituYW1lO1xyXG4gICAgfSxcclxuICAgIHlBeGlzRm9ybWF0RGVtbzpmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSArICflhYMnO1xyXG4gICAgfSxcclxuICAgIHNlcmllc0Zvcm1hdERlbW86ZnVuY3Rpb24ocmVzKXtcclxuICAgICAgcmV0dXJuIHJlcy5uYW1lICsgJ+W5tCcgKyByZXMudmFsdWUgKyAn5YWDJztcclxuICAgIH1cclxuICB9LFxyXG4gIC8v6L+Z6YeM5ryU56S65LqG6Ieq5a6a5LmJ5oKo55qE5Zu+6KGo57G75Z6L55qEb3B0aW9u77yM5Y+v5Lul6ZqP5oSP5ZG95ZCN77yM5LmL5ZCO5Zyo57uE5Lu25LiKIHR5cGU9XCJkZW1vdHlwZVwiIOWQju+8jOe7hOS7tuS8muiwg+eUqOi/meS4quiKseaLrOWPt+mHjOeahG9wdGlvbu+8jOWmguaenOe7hOS7tuS4iui/mOWtmOWcqGVvcHRz5Y+C5pWw77yM5Lya5bCGZGVtb3R5cGXkuI5lb3B0c+S4rW9wdGlvbuWQiOW5tuWQjua4suafk+WbvuihqOOAglxyXG4gIFwiZGVtb3R5cGVcIjp7XHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gICAgLy/lnKjov5nph4zloavlhpllY2hhcnRz55qEb3B0aW9u5Y2z5Y+vXHJcbiAgICBcclxuICB9LFxyXG4gIC8v5LiL6Z2i5piv6Ieq5a6a5LmJ6YWN572u77yM6K+35re75Yqg6aG555uu5omA6ZyA55qE6YCa55So6YWN572uXHJcblx0XCJjb2x1bW5cIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2F4aXMnXHJcblx0XHR9LFxyXG5cdFx0XCJncmlkXCI6IHtcclxuXHRcdFx0XCJ0b3BcIjogMzAsXHJcblx0XHRcdFwiYm90dG9tXCI6IDUwLFxyXG5cdFx0XHRcInJpZ2h0XCI6IDE1LFxyXG5cdFx0XHRcImxlZnRcIjogNDBcclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHRcdFwiYm90dG9tXCI6ICdsZWZ0JyxcclxuXHRcdH0sXHJcblx0XHRcInRvb2xib3hcIjoge1xyXG5cdFx0XHRcInNob3dcIjogZmFsc2UsXHJcblx0XHR9LFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcblx0XHRcdFwidHlwZVwiOiAnY2F0ZWdvcnknLFxyXG5cdFx0XHRcImF4aXNMYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJjb2xvclwiOiAnIzY2NjY2NidcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGluZVwiOiB7XHJcblx0XHRcdFx0XCJsaW5lU3R5bGVcIjoge1xyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiAnI0NDQ0NDQydcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYm91bmRhcnlHYXBcIjogdHJ1ZSxcclxuXHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcblx0XHRcdFwidHlwZVwiOiAndmFsdWUnLFxyXG5cdFx0XHRcImF4aXNUaWNrXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjNjY2NjY2J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRcInNlcmllc1RlbXBsYXRlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6ICcnLFxyXG5cdFx0XHRcInR5cGVcIjogJ2JhcicsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdFx0XCJiYXJ3aWR0aFwiOiAyMCxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwibGluZVwiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnYXhpcydcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiAzMCxcclxuXHRcdFx0XCJib3R0b21cIjogNTAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiA0MFxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwidG9vbGJveFwiOiB7XHJcblx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdH0sXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICdjYXRlZ29yeScsXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjNjY2NjY2J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJib3VuZGFyeUdhcFwiOiB0cnVlLFxyXG5cdFx0XHRcImRhdGFcIjogW11cclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICd2YWx1ZScsXHJcblx0XHRcdFwiYXhpc1RpY2tcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGFiZWxcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjogJyM2NjY2NjYnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xpbmVcIjoge1xyXG5cdFx0XHRcdFwibGluZVN0eWxlXCI6IHtcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogJyNDQ0NDQ0MnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAnbGluZScsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdFx0XCJiYXJ3aWR0aFwiOiAyMCxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwiYXJlYVwiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnYXhpcydcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiAzMCxcclxuXHRcdFx0XCJib3R0b21cIjogNTAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiA0MFxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwidG9vbGJveFwiOiB7XHJcblx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdH0sXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICdjYXRlZ29yeScsXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjNjY2NjY2J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJib3VuZGFyeUdhcFwiOiB0cnVlLFxyXG5cdFx0XHRcImRhdGFcIjogW11cclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICd2YWx1ZScsXHJcblx0XHRcdFwiYXhpc1RpY2tcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGFiZWxcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjogJyM2NjY2NjYnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xpbmVcIjoge1xyXG5cdFx0XHRcdFwibGluZVN0eWxlXCI6IHtcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogJyNDQ0NDQ0MnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAnbGluZScsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdFx0XCJhcmVhU3R5bGVcIjoge30sXHJcblx0XHRcdFwibGFiZWxcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiB0cnVlLFxyXG4gICAgICAgIFwiY29sb3JcIjogXCIjNjY2NjY2XCIsXHJcblx0XHRcdFx0XCJwb3NpdGlvblwiOiAndG9wJyxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcInBpZVwiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnaXRlbSdcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiA0MCxcclxuXHRcdFx0XCJib3R0b21cIjogMzAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiAxNVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAncGllJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcInJhZGl1c1wiOiAnNTAlJyxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwicmluZ1wiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnaXRlbSdcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiA0MCxcclxuXHRcdFx0XCJib3R0b21cIjogMzAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiAxNVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAncGllJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcInJhZGl1c1wiOiBbJzQwJScsICc3MCUnXSxcclxuXHRcdFx0XCJhdm9pZExhYmVsT3ZlcmxhcFwiOiBmYWxzZSxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImxhYmVsTGluZVwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWVcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcInJvc2VcIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2l0ZW0nXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiAnYm90dG9tJ1xyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAncGllJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcInJhZGl1c1wiOiBcIjU1JVwiLFxyXG5cdFx0XHRcImNlbnRlclwiOiBbJzUwJScsICc1MCUnXSxcclxuXHRcdFx0XCJyb3NlVHlwZVwiOiAnYXJlYScsXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJmdW5uZWxcIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2l0ZW0nLFxyXG5cdFx0XHRcImZvcm1hdHRlclwiOiBcIntifSA6IHtjfSVcIlxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJ0b3BcIjogJ2JvdHRvbSdcclxuXHRcdH0sXHJcblx0XHRcInNlcmllc1RlbXBsYXRlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6ICcnLFxyXG5cdFx0XHRcInR5cGVcIjogJ2Z1bm5lbCcsXHJcblx0XHRcdFwibGVmdFwiOiAnMTAlJyxcclxuXHRcdFx0XCJ0b3BcIjogNjAsXHJcblx0XHRcdFwiYm90dG9tXCI6IDYwLFxyXG5cdFx0XHRcIndpZHRoXCI6ICc4MCUnLFxyXG5cdFx0XHRcIm1pblwiOiAwLFxyXG5cdFx0XHRcIm1heFwiOiAxMDAsXHJcblx0XHRcdFwibWluU2l6ZVwiOiAnMCUnLFxyXG5cdFx0XHRcIm1heFNpemVcIjogJzEwMCUnLFxyXG5cdFx0XHRcInNvcnRcIjogJ2Rlc2NlbmRpbmcnLFxyXG5cdFx0XHRcImdhcFwiOiAyLFxyXG5cdFx0XHRcImxhYmVsXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICdpbnNpZGUnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwibGFiZWxMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxlbmd0aFwiOiAxMCxcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDEsXHJcblx0XHRcdFx0XHRcInR5cGVcIjogJ3NvbGlkJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJpdGVtU3R5bGVcIjoge1xyXG5cdFx0XHRcdFwiYm9yZGVyY29sb3JcIjogJyNmZmYnLFxyXG5cdFx0XHRcdFwiYm9yZGVyd2lkdGhcIjogMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImVtcGhhc2lzXCI6IHtcclxuXHRcdFx0XHRcImxhYmVsXCI6IHtcclxuXHRcdFx0XHRcdFwiZm9udFNpemVcIjogMjBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcImdhdWdlXCI6IHtcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG4gICAgICAgIFwiZm9ybWF0dGVyXCI6ICd7YX0gPGJyLz57Yn0gOiB7Y30lJ1xyXG4gICAgfSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJ+S4muWKoeaMh+aghycsXHJcbiAgICAgIFwidHlwZVwiOiAnZ2F1Z2UnLFxyXG4gICAgICBcImRldGFpbFwiOiB7XCJmb3JtYXR0ZXJcIjogJ3t2YWx1ZX0lJ30sXHJcbiAgICAgIFwiZGF0YVwiOiBbe1widmFsdWVcIjogNTAsIFwibmFtZVwiOiAn5a6M5oiQ546HJ31dXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJjYW5kbGVcIjoge1xyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcblx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge30sXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwiZGF0YVpvb21cIjogW3tcclxuXHRcdFx0XHRcInR5cGVcIjogJ2luc2lkZScsXHJcblx0XHRcdFx0XCJ4QXhpc0luZGV4XCI6IFswLCAxXSxcclxuXHRcdFx0XHRcInN0YXJ0XCI6IDEwLFxyXG5cdFx0XHRcdFwiZW5kXCI6IDEwMFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFx0XCJ4QXhpc0luZGV4XCI6IFswLCAxXSxcclxuXHRcdFx0XHRcInR5cGVcIjogJ3NsaWRlcicsXHJcblx0XHRcdFx0XCJib3R0b21cIjogMTAsXHJcblx0XHRcdFx0XCJzdGFydFwiOiAxMCxcclxuXHRcdFx0XHRcImVuZFwiOiAxMDBcclxuXHRcdFx0fVxyXG5cdFx0XSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAnaycsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdH0sXHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjZmU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///124\n"); /***/ }), /* 125 */ /*!****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/powerTu.png ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/powerTu.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3Bvd2VyVHUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///125\n"); /***/ }), /* 126 */ /*!**************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/clock.png ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/clock.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL2Nsb2NrLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///126\n"); /***/ }), /* 127 */ /*!*********************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/powerDayIcon.png ***! \*********************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/powerDayIcon.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3Bvd2VyRGF5SWNvbi5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///127\n"); /***/ }), /* 128 */ /*!****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/72clock.png ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/72clock.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlLzcyY2xvY2sucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///128\n"); /***/ }), /* 129 */ /*!*************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=script&lang=js&mpType=page ***! \*************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 130);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxMjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///129\n"); /***/ }), /* 130 */ /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=script&lang=js&mpType=page ***! \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! 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//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// import * as echarts from 'echarts'\n// import uCharts from '../../components/u-charts/u-charts.js';\n// import qCharts from '../../components/u-charts/component.vue';\nvar uChartsInstance = {};\nvar _default = {\n onLoad: function onLoad() {},\n data: function data() {\n return {\n powerTab: 'DL',\n yearTab: 'month',\n powerTabData: [],\n yearData: [],\n powerProgressData: [],\n chartData: {},\n chartDataLine: {},\n opts: {},\n optsLine: {}\n };\n },\n created: function created() {\n this.powerTabData = [{\n nameZN: '电量',\n nameEN: 'DL',\n showColor: true\n }, {\n nameZN: '预测',\n nameEN: 'YC',\n showColor: false\n }];\n this.yearData = [{\n nameZN: '月',\n nameEN: 'month',\n showColor: true\n }, {\n nameZN: '年',\n nameEN: 'year',\n showColor: false\n }], this.powerProgressData = [{\n type: 'wind',\n inPower: 961,\n allPower: 1865,\n name: '宝龙山'\n }, {\n type: 'wind',\n inPower: 852,\n allPower: 1865,\n name: '乌力吉'\n }, {\n type: 'wind',\n inPower: 696,\n allPower: 1865,\n name: '浩日格吐'\n }, {\n type: 'wind',\n inPower: 527,\n allPower: 1865,\n name: '开鲁'\n }, {\n type: 'wind',\n inPower: 935,\n allPower: 1865,\n name: '景观'\n }, {\n type: 'wind',\n inPower: 1022,\n allPower: 1865,\n name: '高力板'\n }, {\n type: 'wind',\n inPower: 752,\n allPower: 1865,\n name: '书声'\n }, {\n type: 'wind',\n inPower: 1520,\n allPower: 1865,\n name: '宝力根花'\n }, {\n type: 'wind',\n inPower: 365.6,\n allPower: 1865,\n name: '振发'\n }];\n },\n onReady: function onReady() {\n this.getPowerBar();\n },\n methods: {\n getPowerBar: function getPowerBar() {\n var opts = {\n color: [\"#1890FF\", \"#91CB74\", \"#FAC858\", \"#EE6666\", \"#73C0DE\", \"#3CA272\", \"#FC8452\", \"#9A60B4\", \"#ea7ccc\"],\n padding: [15, 15, 0, 5],\n enableScroll: false,\n legend: {\n show: false\n },\n xAxis: {\n disableGrid: true,\n rotateLabel: true,\n axisLineColor: \"#A49EAC\",\n fontColor: \"#A49EAC\",\n fontSize: 10,\n marginTop: 5\n },\n yAxis: {\n showTitle: true,\n data: [{\n min: 0,\n fontColor: \"#A49EAC\",\n title: \"(万kwh)\",\n titleFontColor: \"#A49EAC\",\n titleFontSize: 10\n }]\n },\n extra: {\n column: {\n type: \"group\",\n width: 15,\n activeBgColor: \"#000000\",\n activeBgOpacity: 0.08\n }\n }\n };\n var proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1', '#766FF1', '#4951B2'];\n //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接\n\n var xAxis = [];\n var series = [];\n this.powerProgressData.forEach(function (item, index) {\n xAxis.push(item.name);\n var obj = {\n color: '',\n name: '',\n textSize: 10,\n textColor: \"#A49EAC\",\n value: item.inPower\n };\n proColor.forEach(function (it, idx) {\n if (index.toString().length > 1) {\n obj.color = proColor[index.toString().slice(-1)];\n } else {\n obj.color = proColor[index];\n }\n });\n series.push(obj);\n });\n var res = {\n categories: xAxis,\n series: [{\n data: series\n }]\n };\n this.opts = opts;\n this.chartData = JSON.parse(JSON.stringify(res));\n },\n getLineBar: function getLineBar() {\n var opts = {\n color: [\"#1890FF\", \"#91CB74\", \"#FAC858\", \"#EE6666\", \"#73C0DE\", \"#3CA272\", \"#FC8452\", \"#9A60B4\", \"#ea7ccc\"],\n padding: [15, 15, 0, 5],\n enableScroll: false,\n legend: {\n show: true\n },\n xAxis: {\n disableGrid: true,\n axisLineColor: \"#A49EAC\",\n fontColor: \"#A49EAC\",\n fontSize: 10,\n marginTop: 5\n },\n yAxis: {\n showTitle: true,\n disabled: false,\n disableGrid: false,\n splitNumber: 5,\n gridType: \"dash\",\n dashLength: 4,\n gridColor: \"#CCCCCC\",\n padding: 10,\n data: [{\n position: \"left\",\n title: \"折线\",\n fontColor: \"#A49EAC\",\n titleFontColor: \"#A49EAC\",\n titleFontSize: 10\n }, {\n position: \"right\",\n min: 0,\n max: 200,\n title: \"点\",\n textAlign: \"left\",\n fontColor: \"#A49EAC\",\n titleFontColor: \"#A49EAC\",\n titleFontSize: 10\n }]\n },\n extra: {\n mix: {\n column: {\n width: 20\n }\n }\n }\n };\n var proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1', '#766FF1', '#4951B2'];\n //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接\n\n var res = {\n categories: [\"2018\", \"2019\", \"2020\", \"2021\", \"2022\", \"2023\"],\n series: [{\n name: \"折线\",\n type: \"line\",\n color: \"#2fc25b\",\n data: [150, 186, 205, 155, 96, 84]\n }, {\n name: \"折线\",\n type: \"line\",\n color: \"#2fc25b\",\n data: [120, 140, 105, 170, 95, 160]\n }, {\n name: \"点\",\n index: 2,\n type: \"point\",\n color: \"#f04864\",\n data: [100, 80, 125, 150, 112, 132]\n }]\n };\n this.optsLine = opts;\n this.chartDataLine = JSON.parse(JSON.stringify(res));\n },\n changePowerTab: function changePowerTab(item) {\n var _this = this;\n this.powerTabData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this.powerTab = it.nameEN;\n }\n });\n if (this.powerTab === 'DL') {\n this.getPowerBar();\n } else {\n this.getLineBar();\n }\n },\n changeYearTab: function changeYearTab(item) {\n var _this2 = this;\n this.yearData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this2.yearTab = it.nameEN;\n }\n });\n },\n showProgress: function showProgress(item, index) {\n var indexX = index;\n if (index > 9) {\n indexX = index - 9;\n }\n var proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1', '#766FF1'];\n var pro = (item.inPower / item.allPower).toFixed(2) * 100 + '%';\n var showColor = proColor[indexX];\n var ss = \"width: \".concat(pro, \";background: \").concat(showColor);\n return ss;\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvcG93ZXIvaW5kZXgudnVlIl0sIm5hbWVzIjpbInVDaGFydHNJbnN0YW5jZSIsIm9uTG9hZCIsImRhdGEiLCJwb3dlclRhYiIsInllYXJUYWIiLCJwb3dlclRhYkRhdGEiLCJ5ZWFyRGF0YSIsInBvd2VyUHJvZ3Jlc3NEYXRhIiwiY2hhcnREYXRhIiwiY2hhcnREYXRhTGluZSIsIm9wdHMiLCJvcHRzTGluZSIsImNyZWF0ZWQiLCJuYW1lWk4iLCJuYW1lRU4iLCJzaG93Q29sb3IiLCJ0eXBlIiwiaW5Qb3dlciIsImFsbFBvd2VyIiwibmFtZSIsIm9uUmVhZHkiLCJnZXRQb3dlckJhciIsIm1ldGhvZHMiLCJjb2xvciIsInBhZGRpbmciLCJlbmFibGVTY3JvbGwiLCJsZWdlbmQiLCJzaG93IiwieEF4aXMiLCJkaXNhYmxlR3JpZCIsInJvdGF0ZUxhYmVsIiwiYXhpc0xpbmVDb2xvciIsImZvbnRDb2xvciIsImZvbnRTaXplIiwibWFyZ2luVG9wIiwieUF4aXMiLCJzaG93VGl0bGUiLCJtaW4iLCJ0aXRsZSIsInRpdGxlRm9udENvbG9yIiwidGl0bGVGb250U2l6ZSIsImV4dHJhIiwiY29sdW1uIiwid2lkdGgiLCJhY3RpdmVCZ0NvbG9yIiwiYWN0aXZlQmdPcGFjaXR5IiwicHJvQ29sb3IiLCJzZXJpZXMiLCJmb3JFYWNoIiwiaXRlbSIsImluZGV4IiwicHVzaCIsIm9iaiIsInRleHRTaXplIiwidGV4dENvbG9yIiwidmFsdWUiLCJpdCIsImlkeCIsInRvU3RyaW5nIiwibGVuZ3RoIiwic2xpY2UiLCJyZXMiLCJjYXRlZ29yaWVzIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZ2V0TGluZUJhciIsImRpc2FibGVkIiwic3BsaXROdW1iZXIiLCJncmlkVHlwZSIsImRhc2hMZW5ndGgiLCJncmlkQ29sb3IiLCJwb3NpdGlvbiIsIm1heCIsInRleHRBbGlnbiIsIm1peCIsImNoYW5nZVBvd2VyVGFiIiwiY2hhbmdlWWVhclRh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ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vLyBpbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gJ2VjaGFydHMnXG4vLyBpbXBvcnQgdUNoYXJ0cyBmcm9tICcuLi8uLi9jb21wb25lbnRzL3UtY2hhcnRzL3UtY2hhcnRzLmpzJztcbi8vIGltcG9ydCBxQ2hhcnRzIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdS1jaGFydHMvY29tcG9uZW50LnZ1ZSc7XG52YXIgdUNoYXJ0c0luc3RhbmNlID0ge307XG5leHBvcnQgZGVmYXVsdCB7XG5cdG9uTG9hZDogZnVuY3Rpb24oKSB7fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cG93ZXJUYWI6ICdETCcsXG5cdFx0XHR5ZWFyVGFiOiAnbW9udGgnLFxuXHRcdFx0cG93ZXJUYWJEYXRhOiBbXSxcblx0XHRcdHllYXJEYXRhOiBbXSxcblx0XHRcdHBvd2VyUHJvZ3Jlc3NEYXRhOiBbXSxcblx0XHRcdGNoYXJ0RGF0YToge30sXG5cdFx0XHRjaGFydERhdGFMaW5lOiB7fSxcblx0XHRcdG9wdHM6IHt9LFxuXHRcdFx0b3B0c0xpbmU6IHt9LFxuXHRcdH1cblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR0aGlzLnBvd2VyVGFiRGF0YSA9IFt7XG5cdFx0XHRcdG5hbWVaTjogJ+eUtemHjycsXG5cdFx0XHRcdG5hbWVFTjogJ0RMJyxcblx0XHRcdFx0c2hvd0NvbG9yOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lWk46ICfpooTmtYsnLFxuXHRcdFx0XHRuYW1lRU46ICdZQycsXG5cdFx0XHRcdHNob3dDb2xvcjogZmFsc2VcblxuXHRcdFx0fVxuXHRcdF1cblx0XHR0aGlzLnllYXJEYXRhID0gW3tcblx0XHRcdFx0XHRuYW1lWk46ICfmnIgnLFxuXHRcdFx0XHRcdG5hbWVFTjogJ21vbnRoJyxcblx0XHRcdFx0XHRzaG93Q29sb3I6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWVaTjogJ+W5tCcsXG5cdFx0XHRcdFx0bmFtZUVOOiAneWVhcicsXG5cdFx0XHRcdFx0c2hvd0NvbG9yOiBmYWxzZVxuXG5cdFx0XHRcdH1cblx0XHRcdF0sXG5cdFx0XHR0aGlzLnBvd2VyUHJvZ3Jlc3NEYXRhID0gW3tcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogOTYxLFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICflrp3pvpnlsbEnXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogODUyLFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICfkuYzlipvlkIknXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogNjk2LFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICfmtanml6XmoLzlkJAnXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogNTI3LFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICflvIDpsoEnXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogOTM1LFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICfmma/op4InXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogMTAyMixcblx0XHRcdFx0XHRhbGxQb3dlcjogMTg2NSxcblx0XHRcdFx0XHRuYW1lOiAn6auY5Yqb5p2/J1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogJ3dpbmQnLFxuXHRcdFx0XHRcdGluUG93ZXI6IDc1Mixcblx0XHRcdFx0XHRhbGxQb3dlcjogMTg2NSxcblx0XHRcdFx0XHRuYW1lOiAn5Lmm5aOwJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogJ3dpbmQnLFxuXHRcdFx0XHRcdGluUG93ZXI6IDE1MjAsXG5cdFx0XHRcdFx0YWxsUG93ZXI6IDE4NjUsXG5cdFx0XHRcdFx0bmFtZTogJ+WuneWKm+agueiKsSdcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHR5cGU6ICd3aW5kJyxcblx0XHRcdFx0XHRpblBvd2VyOiAzNjUuNixcblx0XHRcdFx0XHRhbGxQb3dlcjogMTg2NSxcblx0XHRcdFx0XHRuYW1lOiAn5oyv5Y+RJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XVxuXHR9LFxuXHRvblJlYWR5KCkge1xuXHRcdHRoaXMuZ2V0UG93ZXJCYXIoKVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0Z2V0UG93ZXJCYXIoKSB7XG5cdFx0XHRsZXQgb3B0cyA9IHtcblx0XHRcdFx0Y29sb3I6IFtcIiMxODkwRkZcIiwgXCIjOTFDQjc0XCIsIFwiI0ZBQzg1OFwiLCBcIiNFRTY2NjZcIiwgXCIjNzNDMERFXCIsIFwiIzNDQTI3MlwiLCBcIiNGQzg0NTJcIiwgXCIjOUE2MEI0XCIsXG5cdFx0XHRcdFx0XCIjZWE3Y2NjXCJcblx0XHRcdFx0XSxcblx0XHRcdFx0cGFkZGluZzogWzE1LCAxNSwgMCwgNV0sXG5cdFx0XHRcdGVuYWJsZVNjcm9sbDogZmFsc2UsXG5cdFx0XHRcdGxlZ2VuZDoge1xuXHRcdFx0XHRcdHNob3c6IGZhbHNlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHhBeGlzOiB7XG5cdFx0XHRcdFx0ZGlzYWJsZUdyaWQ6IHRydWUsXG5cdFx0XHRcdFx0cm90YXRlTGFiZWw6IHRydWUsXG5cdFx0XHRcdFx0YXhpc0xpbmVDb2xvcjogXCIjQTQ5RUFDXCIsXG5cdFx0XHRcdFx0Zm9udENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRmb250U2l6ZTogMTAsXG5cdFx0XHRcdFx0bWFyZ2luVG9wOiA1XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHlBeGlzOiB7XG5cdFx0XHRcdFx0c2hvd1RpdGxlOiB0cnVlLFxuXHRcdFx0XHRcdGRhdGE6IFt7XG5cdFx0XHRcdFx0XHRtaW46IDAsXG5cdFx0XHRcdFx0XHRmb250Q29sb3I6IFwiI0E0OUVBQ1wiLFxuXHRcdFx0XHRcdFx0dGl0bGU6IFwiKOS4h2t3aClcIixcblx0XHRcdFx0XHRcdHRpdGxlRm9udENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRcdHRpdGxlRm9udFNpemU6IDEwXG5cdFx0XHRcdFx0fV1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XHRjb2x1bW46IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiZ3JvdXBcIixcblx0XHRcdFx0XHRcdHdpZHRoOiAxNSxcblx0XHRcdFx0XHRcdGFjdGl2ZUJnQ29sb3I6IFwiIzAwMDAwMFwiLFxuXHRcdFx0XHRcdFx0YWN0aXZlQmdPcGFjaXR5OiAwLjA4XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGxldCBwcm9Db2xvciA9IFsnIzZDNEI5RScsICcjMzIzQTk3JywgJyM0OTUxQjInLCAnIzQyODdGRicsICcjM0NCOEZFJywgJyMxQUE3QjUnLCAnIzUxODNCNicsICcjOUY2NUMxJyxcblx0XHRcdFx0JyM3NjZGRjEnLCAnIzQ5NTFCMicsXG5cdFx0XHRdXG5cdFx0XHQvL+aooeaLn+acjeWKoeWZqOi/lOWbnuaVsOaNru+8jOWmguaenOaVsOaNruagvOW8j+WSjOagh+WHhuagvOW8j+S4jeWQjO+8jOmcgOiHquihjOaMieS4i+mdoueahOagvOW8j+aLvOaOpVxuXG5cdFx0XHRsZXQgeEF4aXMgPSBbXVxuXHRcdFx0bGV0IHNlcmllcyA9IFtdXG5cdFx0XHR0aGlzLnBvd2VyUHJvZ3Jlc3NEYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdHhBeGlzLnB1c2goaXRlbS5uYW1lKVxuXHRcdFx0XHRsZXQgb2JqID0ge1xuXHRcdFx0XHRcdGNvbG9yOiAnJyxcblx0XHRcdFx0XHRuYW1lOiAnJyxcblx0XHRcdFx0XHR0ZXh0U2l6ZTogMTAsXG5cdFx0XHRcdFx0dGV4dENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHR2YWx1ZTogaXRlbS5pblBvd2VyXG5cdFx0XHRcdH1cblx0XHRcdFx0cHJvQ29sb3IuZm9yRWFjaCgoaXQsIGlkeCkgPT4ge1xuXHRcdFx0XHRcdGlmIChpbmRleC50b1N0cmluZygpLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdG9iai5jb2xvciA9IHByb0NvbG9yW2luZGV4LnRvU3RyaW5nKCkuc2xpY2UoLTEpXVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvYmouY29sb3IgPSBwcm9Db2xvcltpbmRleF1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHNlcmllcy5wdXNoKG9iailcblx0XHRcdH0pXG5cdFx0XHRsZXQgcmVzID0ge1xuXHRcdFx0XHRjYXRlZ29yaWVzOiB4QXhpcyxcblx0XHRcdFx0c2VyaWVzOiBbe1xuXHRcdFx0XHRcdGRhdGE6IHNlcmllc1xuXHRcdFx0XHR9XVxuXHRcdFx0fTtcblx0XHRcdHRoaXMub3B0cyA9IG9wdHNcblx0XHRcdHRoaXMuY2hhcnREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpKTtcblx0XHR9LFxuXHRcdGdldExpbmVCYXIoKSB7XG5cdFx0XHRsZXQgb3B0cyA9IHtcblx0XHRcdFx0Y29sb3I6IFtcIiMxODkwRkZcIiwgXCIjOTFDQjc0XCIsIFwiI0ZBQzg1OFwiLCBcIiNFRTY2NjZcIiwgXCIjNzNDMERFXCIsIFwiIzNDQTI3MlwiLCBcIiNGQzg0NTJcIiwgXCIjOUE2MEI0XCIsXG5cdFx0XHRcdFx0XCIjZWE3Y2NjXCJcblx0XHRcdFx0XSxcblx0XHRcdFx0cGFkZGluZzogWzE1LCAxNSwgMCwgNV0sXG5cdFx0XHRcdGVuYWJsZVNjcm9sbDogZmFsc2UsXG5cdFx0XHRcdGxlZ2VuZDoge1xuXHRcdFx0XHRcdHNob3c6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0eEF4aXM6IHtcblx0XHRcdFx0XHRkaXNhYmxlR3JpZDogdHJ1ZSxcblx0XHRcdFx0XHRheGlzTGluZUNvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRmb250Q29sb3I6IFwiI0E0OUVBQ1wiLFxuXHRcdFx0XHRcdGZvbnRTaXplOiAxMCxcblx0XHRcdFx0XHRtYXJnaW5Ub3A6IDVcblx0XHRcdFx0fSxcblx0XHRcdFx0eUF4aXM6IHtcblx0XHRcdFx0XHRzaG93VGl0bGU6IHRydWUsXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdGRpc2FibGVHcmlkOiBmYWxzZSxcblx0XHRcdFx0XHRzcGxpdE51bWJlcjogNSxcblx0XHRcdFx0XHRncmlkVHlwZTogXCJkYXNoXCIsXG5cdFx0XHRcdFx0ZGFzaExlbmd0aDogNCxcblx0XHRcdFx0XHRncmlkQ29sb3I6IFwiI0NDQ0NDQ1wiLFxuXHRcdFx0XHRcdHBhZGRpbmc6IDEwLFxuXHRcdFx0XHRcdGRhdGE6IFt7XG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImxlZnRcIixcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5oqY57q/XCIsXG5cdFx0XHRcdFx0XHRcdGZvbnRDb2xvcjogXCIjQTQ5RUFDXCIsXG5cdFx0XHRcdFx0XHRcdHRpdGxlRm9udENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRcdFx0dGl0bGVGb250U2l6ZTogMTBcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcInJpZ2h0XCIsXG5cdFx0XHRcdFx0XHRcdG1pbjogMCxcblx0XHRcdFx0XHRcdFx0bWF4OiAyMDAsXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIueCuVwiLFxuXHRcdFx0XHRcdFx0XHR0ZXh0QWxpZ246IFwibGVmdFwiLFxuXHRcdFx0XHRcdFx0XHRmb250Q29sb3I6IFwiI0E0OUVBQ1wiLFxuXHRcdFx0XHRcdFx0XHR0aXRsZUZvbnRDb2xvcjogXCIjQTQ5RUFDXCIsXG5cdFx0XHRcdFx0XHRcdHRpdGxlRm9udFNpemU6IDEwXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHRyYToge1xuXHRcdFx0XHRcdG1peDoge1xuXHRcdFx0XHRcdFx0Y29sdW1uOiB7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAyMFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRsZXQgcHJvQ29sb3IgPSBbJyM2QzRCOUUnLCAnIzMyM0E5NycsICcjNDk1MUIyJywgJyM0Mjg3RkYnLCAnIzNDQjhGRScsICcjMUFBN0I1JywgJyM1MTgzQjYnLCAnIzlGNjVDMScsXG5cdFx0XHRcdCcjNzY2RkYxJywgJyM0OTUxQjInLFxuXHRcdFx0XVxuXHRcdFx0Ly/mqKHmi5/mnI3liqHlmajov5Tlm57mlbDmja7vvIzlpoLmnpzmlbDmja7moLzlvI/lkozmoIflh4bmoLzlvI/kuI3lkIzvvIzpnIDoh6rooYzmjInkuIvpnaLnmoTmoLzlvI/mi7zmjqVcblxuXHRcdFx0bGV0IHJlcyA9IHtcblx0XHRcdFx0Y2F0ZWdvcmllczogW1wiMjAxOFwiLCBcIjIwMTlcIiwgXCIyMDIwXCIsIFwiMjAyMVwiLCBcIjIwMjJcIiwgXCIyMDIzXCJdLFxuXHRcdFx0XHRzZXJpZXM6IFt7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIuaKmOe6v1wiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJsaW5lXCIsXG5cdFx0XHRcdFx0XHRjb2xvcjogXCIjMmZjMjViXCIsXG5cdFx0XHRcdFx0XHRkYXRhOiBbMTUwLCAxODYsIDIwNSwgMTU1LCA5NiwgODRdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIuaKmOe6v1wiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJsaW5lXCIsXG5cdFx0XHRcdFx0XHRjb2xvcjogXCIjMmZjMjViXCIsXG5cdFx0XHRcdFx0XHRkYXRhOiBbMTIwLCAxNDAsIDEwNSwgMTcwLCA5NSwgMTYwXVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogXCLngrlcIixcblx0XHRcdFx0XHRcdGluZGV4OiAyLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJwb2ludFwiLFxuXHRcdFx0XHRcdFx0Y29sb3I6IFwiI2YwNDg2NFwiLFxuXHRcdFx0XHRcdFx0ZGF0YTogWzEwMCwgODAsIDEyNSwgMTUwLCAxMTIsIDEzMl1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH07XG5cdFx0XHR0aGlzLm9wdHNMaW5lID0gb3B0c1xuXHRcdFx0dGhpcy5jaGFydERhdGFMaW5lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpKTtcblx0XHR9LFxuXHRcdGNoYW5nZVBvd2VyVGFiKGl0ZW0pIHtcblx0XHRcdHRoaXMucG93ZXJUYWJEYXRhLmZvckVhY2goaXQgPT4ge1xuXHRcdFx0XHRpdC5zaG93Q29sb3IgPSBmYWxzZVxuXHRcdFx0XHRpZiAoaXQubmFtZUVOID09PSBpdGVtLm5hbWVFTikge1xuXHRcdFx0XHRcdGl0ZW0uc2hvd0NvbG9yID0gdHJ1ZVxuXHRcdFx0XHRcdHRoaXMucG93ZXJUYWIgPSBpdC5uYW1lRU5cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdGlmICh0aGlzLnBvd2VyVGFiID09PSAnREwnKSB7XG5cdFx0XHRcdHRoaXMuZ2V0UG93ZXJCYXIoKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5nZXRMaW5lQmFyKClcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNoYW5nZVllYXJUYWIoaXRlbSkge1xuXHRcdFx0dGhpcy55ZWFyRGF0YS5mb3JFYWNoKGl0ID0+IHtcblx0XHRcdFx0aXQuc2hvd0NvbG9yID0gZmFsc2Vcblx0XHRcdFx0aWYgKGl0Lm5hbWVFTiA9PT0gaXRlbS5uYW1lRU4pIHtcblx0XHRcdFx0XHRpdGVtLnNob3dDb2xvciA9IHRydWVcblx0XHRcdFx0XHR0aGlzLnllYXJUYWIgPSBpdC5uYW1lRU5cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdHNob3dQcm9ncmVzcyhpdGVtLCBpbmRleCkge1xuXHRcdFx0bGV0IGluZGV4WCA9IGluZGV4XG5cdFx0XHRpZiAoaW5kZXggPiA5KSB7XG5cdFx0XHRcdGluZGV4WCA9IGluZGV4IC0gOVxuXHRcdFx0fVxuXHRcdFx0bGV0IHByb0NvbG9yID0gWycjNkM0QjlFJywgJyMzMjNBOTcnLCAnIzQ5NTFCMicsICcjNDI4N0ZGJywgJyMzQ0I4RkUnLCAnIzFBQTdCNScsICcjNTE4M0I2JywgJyM5RjY1QzEnLFxuXHRcdFx0XHQnIzc2NkZGMSdcblx0XHRcdF1cblx0XHRcdGxldCBwcm8gPSAoKGl0ZW0uaW5Qb3dlciAvIGl0ZW0uYWxsUG93ZXIpLnRvRml4ZWQoMikpICogMTAwICsgJyUnXG5cdFx0XHRsZXQgc2hvd0NvbG9yID0gcHJvQ29sb3JbaW5kZXhYXVxuXHRcdFx0bGV0IHNzID0gYHdpZHRoOiAke3Byb307YmFja2dyb3VuZDogJHtzaG93Q29sb3J9YFxuXHRcdFx0cmV0dXJuIHNzXG5cdFx0fSxcblxuXHR9LFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///130\n"); /***/ }), /* 131 */ /*!************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?mpType=page ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=716508c6&mpType=page */ 132);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 138);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/type/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzE2NTA4YzYmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3R5cGUvaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///131\n"); /***/ }), /* 132 */ /*!******************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=template&id=716508c6&mpType=page ***! \******************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=716508c6&mpType=page */ 133); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 133 */ /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=template&id=716508c6&mpType=page ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components try { components = { qiunDataCharts: __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue */ 52) .default, uniRow: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-row/uni-row.vue */ 42) .default, uniCol: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-col/uni-col.vue */ 47) .default, } } catch (e) { if ( e.message.indexOf("Cannot find module") !== -1 && e.message.indexOf(".vue") !== -1 ) { console.error(e.message) console.error("1. 排查组件名称拼写是否正确") console.error( "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom" ) console.error( "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件" ) } else { throw e } } var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "view", { staticClass: _vm._$s(0, "sc", "faultType"), attrs: { _i: 0 } }, [ _c( "view", { staticClass: _vm._$s(1, "sc", "home_header"), attrs: { _i: 1 } }, [ _c( "view", { staticClass: _vm._$s(2, "sc", "header_message"), attrs: { _i: 2 }, }, [ _c("image", { attrs: { src: _vm._$s( 3, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/message.png */ 22) ), _i: 3, }, }), ] ), _c( "view", { staticClass: _vm._$s(4, "sc", "header_title"), attrs: { _i: 4 } }, [ _c("image", { attrs: { src: _vm._$s( 5, "a-src", __webpack_require__(/*! ../../static/jnImage/loginPage/logo.png */ 10) ), _i: 5, }, }), _c("text", { staticClass: _vm._$s(6, "sc", "titleName"), attrs: { _i: 6 }, }), ] ), _c( "view", { staticClass: _vm._$s(7, "sc", "header_more"), attrs: { _i: 7 } }, [ _c("image", { attrs: { src: _vm._$s( 8, "a-src", __webpack_require__(/*! ../../static/jnImage/indexPage/more.png */ 23) ), _i: 8, }, }), ] ), ] ), _c( "view", { staticClass: _vm._$s(9, "sc", "faultType_main"), attrs: { _i: 9 } }, [ _c( "view", { staticClass: _vm._$s(10, "sc", "flex justify-center"), attrs: { _i: 10 }, }, [ _c( "view", { staticClass: _vm._$s(11, "sc", "faultType_tab"), attrs: { _i: 11 }, }, _vm._l( _vm._$s(12, "f", { forItems: _vm.faultTypeTabData }), function (item, index, $20, $30) { return _c( "text", { key: _vm._$s(12, "f", { forIndex: $20, key: index }), style: _vm._$s( "12-" + $30, "s", item.showColor ? "background: #4287FF;color:#fff" : "" ), attrs: { _i: "12-" + $30 }, on: { click: function ($event) { return _vm.changefaultTypeTab(item) }, }, }, [ _vm._v( _vm._$s("12-" + $30, "t0-0", _vm._s(item.nameZN)) ), ] ) } ), 0 ), ] ), _c( "view", { staticClass: _vm._$s(13, "sc", "gzcs"), attrs: { _i: 13 } }, [ _c( "view", { staticClass: _vm._$s(14, "sc", "flex justify-between"), attrs: { _i: 14 }, }, [ _c( "view", { staticClass: _vm._$s( 15, "sc", "gzcs_title flex justify-center" ), attrs: { _i: 15 }, }, [ _vm._$s(16, "i", _vm.faultTypeTab === "XT") ? _c("image", { attrs: { src: _vm._$s( 16, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127) ), _i: 16, }, }) : _c("image", { attrs: { src: _vm._$s( 17, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/cishu.png */ 134) ), _i: 17, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(19, "sc", "yearTab"), attrs: { _i: 19 }, }, _vm._l( _vm._$s(20, "f", { forItems: _vm.yearData }), function (item, index, $21, $31) { return _c( "text", { key: _vm._$s(20, "f", { forIndex: $21, key: index, }), style: _vm._$s( "20-" + $31, "s", item.showColor ? "background: #4287FF;color:#fff" : "" ), attrs: { _i: "20-" + $31 }, on: { click: function ($event) { return _vm.changeYearTab(item) }, }, }, [ _vm._v( _vm._$s("20-" + $31, "t0-0", _vm._s(item.nameZN)) ), ] ) } ), 0 ), ] ), _c( "view", { staticClass: _vm._$s(21, "sc", "qiun-chartsPie"), attrs: { _i: 21 }, }, [ _c("qiun-data-charts", { attrs: { type: "ring", opts: _vm.opts, chartData: _vm.chartData, _i: 22, }, }), ], 1 ), _c( "view", { staticClass: _vm._$s(23, "sc", "gzcs_data"), attrs: { _i: 23 }, }, [ _c( "uni-row", { staticClass: _vm._$s(24, "sc", "gzcs_data_row"), attrs: { _i: 24 }, }, _vm._l( _vm._$s(25, "f", { forItems: _vm.faultTypeData }), function (item, index, $22, $32) { return _c( "uni-col", { key: _vm._$s(25, "f", { forIndex: $22, key: index, }), attrs: { span: 12, _i: "25-" + $32 }, }, [ _c( "view", { staticClass: _vm._$s( "26-" + $32, "sc", "gzcs_data_col flex" ), attrs: { _i: "26-" + $32 }, }, [ _c( "view", { staticClass: _vm._$s( "27-" + $32, "sc", "gzcs_data_col_left" ), style: _vm._$s( "27-" + $32, "s", _vm.showColor(item) ), attrs: { _i: "27-" + $32 }, }, [ _c("text", [ _vm._v( _vm._$s( "28-" + $32, "t0-0", _vm._s(item.name) ) ), ]), ] ), _c( "view", { staticClass: _vm._$s( "29-" + $32, "sc", " gzcs_data_col_right flex justify-between" ), attrs: { _i: "29-" + $32 }, }, [ _c("text", [ _vm._v( _vm._$s( "30-" + $32, "t0-0", _vm._s(item.data) ) ), ]), _c("text"), ] ), ] ), ] ) } ), 1 ), ], 1 ), _vm._$s(32, "i", _vm.faultTypeTab === "JX") ? _c( "view", { staticClass: _vm._$s(32, "sc", "heji flex"), attrs: { _i: 32 }, }, [ _c( "view", { staticClass: _vm._$s(33, "sc", "heji_img"), attrs: { _i: 33 }, }, [ _c("image", { attrs: { src: _vm._$s( 34, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/heji.png */ 135) ), _i: 34, }, }), ] ), _c( "view", { staticClass: _vm._$s( 35, "sc", "heji_msg flex justify-between" ), attrs: { _i: 35 }, }, [ _c( "view", { staticClass: _vm._$s(36, "sc", "heji_msg_tit"), attrs: { _i: 36 }, }, [_c("text")] ), _c( "view", { staticClass: _vm._$s( 38, "sc", "heji_msg_data flex justify-between" ), attrs: { _i: 38 }, }, [_c("text"), _c("text")] ), ] ), ] ) : _vm._e(), ] ), _c( "view", { staticClass: _vm._$s(41, "sc", "ssdl"), attrs: { _i: 41 } }, [ _c( "view", { staticClass: _vm._$s(42, "sc", "flex justify-between"), attrs: { _i: 42 }, }, [ _c( "view", { staticClass: _vm._$s( 43, "sc", "gzcs_title flex justify-center" ), attrs: { _i: 43 }, }, [ _vm._$s(44, "i", _vm.faultTypeTab === "XT") ? _c("image", { attrs: { src: _vm._$s( 44, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127) ), _i: 44, }, }) : _c("image", { attrs: { src: _vm._$s( 45, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/sunshi.png */ 136) ), _i: 45, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(47, "sc", "yearTab"), attrs: { _i: 47 }, }, _vm._l( _vm._$s(48, "f", { forItems: _vm.yearData }), function (item, index, $23, $33) { return _c( "text", { key: _vm._$s(48, "f", { forIndex: $23, key: index, }), style: _vm._$s( "48-" + $33, "s", item.showColor ? "background: #4287FF;color:#fff" : "" ), attrs: { _i: "48-" + $33 }, on: { click: function ($event) { return _vm.changeYearTab(item) }, }, }, [ _vm._v( _vm._$s("48-" + $33, "t0-0", _vm._s(item.nameZN)) ), ] ) } ), 0 ), ] ), _c( "view", { staticClass: _vm._$s(49, "sc", "qiun-chartsPie"), attrs: { _i: 49 }, }, [ _c("qiun-data-charts", { attrs: { type: "ring", opts: _vm.opts, chartData: _vm.chartData, _i: 50, }, }), ], 1 ), _c( "view", { staticClass: _vm._$s(51, "sc", "gzcs_data"), attrs: { _i: 51 }, }, [ _c( "uni-row", { staticClass: _vm._$s(52, "sc", "gzcs_data_row"), attrs: { _i: 52 }, }, _vm._l( _vm._$s(53, "f", { forItems: _vm.faultTypeData }), function (item, index, $24, $34) { return _c( "uni-col", { key: _vm._$s(53, "f", { forIndex: $24, key: index, }), attrs: { span: 12, _i: "53-" + $34 }, }, [ _c( "view", { staticClass: _vm._$s( "54-" + $34, "sc", "gzcs_data_col flex" ), attrs: { _i: "54-" + $34 }, }, [ _c( "view", { staticClass: _vm._$s( "55-" + $34, "sc", "gzcs_data_col_left" ), style: _vm._$s( "55-" + $34, "s", _vm.showColor(item) ), attrs: { _i: "55-" + $34 }, }, [ _c("text", [ _vm._v( _vm._$s( "56-" + $34, "t0-0", _vm._s(item.name) ) ), ]), ] ), _c( "view", { staticClass: _vm._$s( "57-" + $34, "sc", " gzcs_data_col_right flex justify-between" ), attrs: { _i: "57-" + $34 }, }, [ _c("text", [ _vm._v( _vm._$s( "58-" + $34, "t0-0", _vm._s(item.data) ) ), ]), _c("text"), ] ), ] ), ] ) } ), 1 ), ], 1 ), _vm._$s(60, "i", _vm.faultTypeTab === "JX") ? _c( "view", { staticClass: _vm._$s(60, "sc", "heji flex"), attrs: { _i: 60 }, }, [ _c( "view", { staticClass: _vm._$s(61, "sc", "heji_img"), attrs: { _i: 61 }, }, [ _c("image", { attrs: { src: _vm._$s( 62, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/heji.png */ 135) ), _i: 62, }, }), ] ), _c( "view", { staticClass: _vm._$s( 63, "sc", "heji_msg flex justify-between" ), attrs: { _i: 63 }, }, [ _c( "view", { staticClass: _vm._$s(64, "sc", "heji_msg_tit"), attrs: { _i: 64 }, }, [_c("text")] ), _c( "view", { staticClass: _vm._$s( 66, "sc", "heji_msg_data flex justify-between" ), attrs: { _i: 66 }, }, [_c("text"), _c("text")] ), ] ), ] ) : _vm._e(), ] ), _c( "view", { staticClass: _vm._$s(69, "sc", "wxss"), attrs: { _i: 69 } }, [ _c( "view", { staticClass: _vm._$s(70, "sc", "flex justify-between"), attrs: { _i: 70 }, }, [ _c( "view", { staticClass: _vm._$s( 71, "sc", "gzcs_title flex justify-center" ), attrs: { _i: 71 }, }, [ _vm._$s(72, "i", _vm.faultTypeTab === "XT") ? _c("image", { attrs: { src: _vm._$s( 72, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127) ), _i: 72, }, }) : _c("image", { attrs: { src: _vm._$s( 73, "a-src", __webpack_require__(/*! ../../static/jnImage/powerPage/wuxiang.png */ 137) ), _i: 73, }, }), _c("text"), ] ), _c( "view", { staticClass: _vm._$s(75, "sc", "yearTab"), attrs: { _i: 75 }, }, _vm._l( _vm._$s(76, "f", { forItems: _vm.yearData }), function (item, index, $25, $35) { return _c( "text", { key: _vm._$s(76, "f", { forIndex: $25, key: index, }), style: _vm._$s( "76-" + $35, "s", item.showColor ? "background: #4287FF;color:#fff" : "" ), attrs: { _i: "76-" + $35 }, on: { click: function ($event) { return _vm.changeYearTab(item) }, }, }, [ _vm._v( _vm._$s("76-" + $35, "t0-0", _vm._s(item.nameZN)) ), ] ) } ), 0 ), ] ), _c( "view", { staticClass: _vm._$s(77, "sc", "qiun-chartsPie"), attrs: { _i: 77 }, }, [ _c("qiun-data-charts", { attrs: { type: "ring", opts: _vm.opts, chartData: _vm.chartDatawxss, _i: 78, }, }), ], 1 ), _c( "view", { staticClass: _vm._$s(79, "sc", "gzcs_data"), attrs: { _i: 79 }, }, [ _c( "uni-row", { staticClass: _vm._$s(80, "sc", "gzcs_data_row"), attrs: { _i: 80 }, }, _vm._l( _vm._$s(81, "f", { forItems: _vm.wxssTypeData }), function (item, index, $26, $36) { return _c( "uni-col", { key: _vm._$s(81, "f", { forIndex: $26, key: index, }), attrs: { span: 12, _i: "81-" + $36 }, }, [ _c( "view", { staticClass: _vm._$s( "82-" + $36, "sc", "gzcs_data_col flex" ), attrs: { _i: "82-" + $36 }, }, [ _c( "view", { staticClass: _vm._$s( "83-" + $36, "sc", "gzcs_data_col_left" ), style: _vm._$s( "83-" + $36, "s", _vm.showColor(item) ), attrs: { _i: "83-" + $36 }, }, [ _c("text", [ _vm._v( _vm._$s( "84-" + $36, "t0-0", _vm._s(item.name) ) ), ]), ] ), _c( "view", { staticClass: _vm._$s( "85-" + $36, "sc", " gzcs_data_col_right flex justify-between" ), attrs: { _i: "85-" + $36 }, }, [ _c("text", [ _vm._v( _vm._$s( "86-" + $36, "t0-0", _vm._s(item.data) ) ), ]), _c("text"), ] ), ] ), ] ) } ), 1 ), ], 1 ), ] ), ] ), ] ) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 134 */ /*!**************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/cishu.png ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/cishu.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL2Npc2h1LnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///134\n"); /***/ }), /* 135 */ /*!*************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/heji.png ***! \*************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/heji.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL2hlamkucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///135\n"); /***/ }), /* 136 */ /*!***************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/sunshi.png ***! \***************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/sunshi.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3N1bnNoaS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///136\n"); /***/ }), /* 137 */ /*!****************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/wuxiang.png ***! \****************************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/jnImage/powerPage/wuxiang.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3d1eGlhbmcucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///137\n"); /***/ }), /* 138 */ /*!************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=script&lang=js&mpType=page ***! \************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 139);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///138\n"); /***/ }), /* 139 */ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=script&lang=js&mpType=page ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {},\n data: function data() {\n return (0, _defineProperty2.default)({\n faultTypeTab: 'XT',\n faultTypeTabData: [],\n yearTab: '',\n yearData: [],\n chartData: {},\n chartDatawxss: {},\n opts: {},\n faultTypeData: [],\n wxssTypeData: []\n }, \"opts\", {\n rotate: false,\n fontColor: '#909BA9',\n rotateLock: false,\n color: ['#5CB2EF', '#3E78C5', '#00299D', '#3EAD9F', '#3F3A99', '#5EAC88', '#5D56D0', '#CD8D23', '#9F65C1', '#FD8974', '#C745B9', '#FF6B3E'],\n padding: [5, 5, 5, 5],\n dataLabel: true,\n enableScroll: false,\n legend: {\n show: false\n },\n title: {\n show: false,\n name: \"\",\n fontSize: 5,\n color: \"#666666\"\n },\n subtitle: {\n show: false,\n name: \"\",\n fontSize: 5,\n color: \"#7cb5ec\"\n },\n extra: {\n ring: {\n ringWidth: 20,\n activeOpacity: 0.5,\n activeRadius: 10,\n centerColor: '#202246',\n offsetAngle: 0,\n labelWidth: 10,\n border: false\n }\n }\n });\n },\n created: function created() {\n this.faultTypeTabData = [{\n nameZN: '系统',\n nameEN: 'XT',\n showColor: true\n }, {\n nameZN: '机型',\n nameEN: 'JX',\n showColor: false\n }];\n this.yearData = [{\n nameZN: '日',\n nameEN: 'day',\n showColor: true\n }, {\n nameZN: '月',\n nameEN: 'month',\n showColor: false\n }, {\n nameZN: '年',\n nameEN: 'year',\n showColor: false\n }];\n this.faultTypeData = [{\n data: 1865,\n name: '发电机'\n }, {\n data: 1865,\n name: '传动变速'\n }, {\n data: 696,\n name: '远程监控'\n }, {\n data: 527,\n name: '电气控制'\n }, {\n data: 935,\n name: '变桨'\n }, {\n data: 1022,\n name: '变频'\n }, {\n data: 752,\n name: '电源'\n }, {\n data: 1520,\n name: '机舱与塔架'\n }, {\n data: 365.6,\n name: '风轮'\n }, {\n data: 365,\n name: '偏航'\n }, {\n data: 256,\n name: '液压'\n }, {\n data: 214,\n name: '通讯'\n }];\n this.wxssTypeData = [{\n data: 1865,\n name: '发电机'\n }, {\n data: 1865,\n name: '传动变速'\n }, {\n data: 696,\n name: '远程监控'\n }, {\n data: 527,\n name: '电气控制'\n }, {\n data: 935,\n name: '变桨'\n }, {\n data: 1022,\n name: '变频'\n }];\n },\n onReady: function onReady() {\n this.getPieBar();\n this.getPieBarwxss();\n },\n methods: {\n getPieBar: function getPieBar() {\n var proColor = ['#5CB2EF', '#3E78C5', '#00299D', '#3EAD9F', '#3F3A99', '#5EAC88', '#5D56D0', '#CD8D23', '#9F65C1', '#FD8974', '#C745B9', '#FF6B3E'];\n var series = [];\n this.faultTypeData.forEach(function (item, index) {\n var obj = {\n name: item.name,\n value: item.data\n };\n proColor.forEach(function (it, idx) {\n if (index.toString().length > 1) {\n obj.color = proColor[index.toString().slice(-1)];\n item.color = proColor[index.toString().slice(-1)];\n } else {\n obj.color = proColor[index];\n item.color = proColor[index];\n }\n });\n series.push(obj);\n });\n var res = {\n series: [{\n data: series\n }]\n };\n this.chartData = JSON.parse(JSON.stringify(res));\n },\n getPieBarwxss: function getPieBarwxss() {\n var proColor = ['#5CB2EF', '#3E78C5', '#00299D', '#3EAD9F', '#3F3A99', '#5EAC88', '#5D56D0', '#CD8D23', '#9F65C1', '#FD8974', '#C745B9', '#FF6B3E'];\n var series = [];\n this.wxssTypeData.forEach(function (item, index) {\n var obj = {\n name: item.name,\n value: item.data\n };\n proColor.forEach(function (it, idx) {\n if (index.toString().length > 1) {\n obj.color = proColor[index.toString().slice(-1)];\n item.color = proColor[index.toString().slice(-1)];\n } else {\n obj.color = proColor[index];\n item.color = proColor[index];\n }\n });\n series.push(obj);\n });\n var res = {\n series: [{\n data: series\n }]\n };\n this.chartDatawxss = JSON.parse(JSON.stringify(res));\n },\n showColor: function showColor(item) {\n return \"background: \".concat(item.color);\n },\n changefaultTypeTab: function changefaultTypeTab(item) {\n var _this = this;\n this.faultTypeTabData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this.faultTypeTab = it.nameEN;\n }\n });\n // if (this.faultTypeTab === 'XT') {\n // \tthis.getPowerBar()\n // } else {\n // \tthis.getLineBar()\n // }\n },\n changeYearTab: function changeYearTab(item) {\n var _this2 = this;\n this.yearData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this2.yearTab = it.nameEN;\n }\n });\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdHlwZS9pbmRleC52dWUiXSwibmFtZXMiOlsib25Mb2FkIiwiZGF0YSIsImZhdWx0VHlwZVRhYiIsImZhdWx0VHlwZVRhYkRhdGEiLCJ5ZWFyVGFiIiwieWVhckRhdGEiLCJjaGFydERhdGEiLCJjaGFydERhdGF3eHNzIiwib3B0cyIsImZhdWx0VHlwZURhdGEiLCJ3eHNzVHlwZURhdGEiLCJyb3RhdGUiLCJmb250Q29sb3IiLCJyb3RhdGVMb2NrIiwiY29sb3IiLCJwYWRkaW5nIiwiZGF0YUxhYmVsIiwiZW5hYmxlU2Nyb2xsIiwibGVnZW5kIiwic2hvdyIsInRpdGxlIiwibmFtZSIsImZvbnRTaXplIiwic3VidGl0bGUiLCJleHRyYSIsInJpbmciLCJyaW5nV2lkdGgiLCJhY3RpdmVPcGFjaXR5IiwiYWN0aXZlUmFkaXVzIiwiY2VudGVyQ29sb3IiLCJvZmZzZXRBbmdsZSIsImxhYmVsV2lkdGgiLCJib3JkZXIiLCJjcmVhdGVkIiwibmFtZVpOIiwibmFtZUVOIiwic2hvd0NvbG9yIiwib25SZWFkeSIsImdldFBpZUJhciIsImdldFBpZUJhcnd4c3MiLCJtZXRob2RzIiwicHJvQ29sb3IiLCJzZXJpZXMiLCJmb3JFYWNoIiwiaXRlbSIsImluZGV4Iiwib2JqIiwidmFsdWUiLCJpdCIsImlkeCIsInRvU3RyaW5nIiwibGVuZ3RoIiwic2xpY2UiLCJwdXNoIiwicmVzIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiY2hhbmdlZmF1bHRUeXBlVGFiIiwiY2hhbmdlWWVhclRhYiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUU7TUFBQTtNQUN4QixJQUFJLENBQUN6QyxnQkFBZ0IsQ0FBQ3dDLE9BQU8sQ0FBQyxVQUFBSyxFQUFFLEVBQUk7UUFDbkNBLEVBQUUsQ0FBQ1osU0FBUyxHQUFHLEtBQUs7UUFDcEIsSUFBSVksRUFBRSxDQUFDYixNQUFNLEtBQUtTLElBQUksQ0FBQ1QsTUFBTSxFQUFFO1VBQzlCUyxJQUFJLENBQUNSLFNBQVMsR0FBRyxJQUFJO1VBQ3JCLEtBQUksQ0FBQ2xDLFlBQVksR0FBRzhDLEVBQUUsQ0FBQ2IsTUFBTTtRQUM5QjtNQUNELENBQUMsQ0FBQztNQUNGO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDRCxDQUFDO0lBQ0R3QixhQUFhLHlCQUFDZixJQUFJLEVBQUU7TUFBQTtNQUNuQixJQUFJLENBQUN2QyxRQUFRLENBQUNzQyxPQUFPLENBQUMsVUFBQUssRUFBRSxFQUFJO1FBQzNCQSxFQUFFLENBQUNaLFNBQVMsR0FBRyxLQUFLO1FBQ3BCLElBQUlZLEVBQUUsQ0FBQ2IsTUFBTSxLQUFLUyxJQUFJLENBQUNULE1BQU0sRUFBRTtVQUM5QlMsSUFBSSxDQUFDUixTQUFTLEdBQUcsSUFBSTtVQUNyQixNQUFJLENBQUNoQyxPQUFPLEdBQUc0QyxFQUFFLENBQUNiLE1BQU07UUFDekI7TUFDRCxDQUFDLENBQUM7SUFDSDtFQUNEO0FBQ0QsQ0FBQztBQUFBIiwiZmlsZSI6IjEzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG9uTG9hZDogZnVuY3Rpb24oKSB7fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZmF1bHRUeXBlVGFiOiAnWFQnLFxuXHRcdFx0ZmF1bHRUeXBlVGFiRGF0YTogW10sXG5cdFx0XHR5ZWFyVGFiOiAnJyxcblx0XHRcdHllYXJEYXRhOiBbXSxcblx0XHRcdGNoYXJ0RGF0YToge30sXG5cdFx0XHRjaGFydERhdGF3eHNzOiB7fSxcblx0XHRcdG9wdHM6IHt9LFxuXHRcdFx0ZmF1bHRUeXBlRGF0YTogW10sXG5cdFx0XHR3eHNzVHlwZURhdGE6IFtdLFxuXHRcdFx0b3B0czoge1xuXHRcdFx0XHRyb3RhdGU6IGZhbHNlLFxuXHRcdFx0XHRmb250Q29sb3I6ICcjOTA5QkE5Jyxcblx0XHRcdFx0cm90YXRlTG9jazogZmFsc2UsXG5cdFx0XHRcdGNvbG9yOiBbJyM1Q0IyRUYnLCAnIzNFNzhDNScsICcjMDAyOTlEJywgJyMzRUFEOUYnLCAnIzNGM0E5OScsICcjNUVBQzg4JywgJyM1RDU2RDAnLCAnI0NEOEQyMycsXG5cdFx0XHRcdFx0JyM5RjY1QzEnLCAnI0ZEODk3NCcsICcjQzc0NUI5JywgJyNGRjZCM0UnLFxuXHRcdFx0XHRdLFxuXHRcdFx0XHRwYWRkaW5nOiBbNSwgNSwgNSwgNV0sXG5cdFx0XHRcdGRhdGFMYWJlbDogdHJ1ZSxcblx0XHRcdFx0ZW5hYmxlU2Nyb2xsOiBmYWxzZSxcblx0XHRcdFx0bGVnZW5kOiB7XG5cdFx0XHRcdFx0c2hvdzogZmFsc2UsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0c2hvdzogZmFsc2UsXG5cdFx0XHRcdFx0bmFtZTogXCJcIixcblx0XHRcdFx0XHRmb250U2l6ZTogNSxcblx0XHRcdFx0XHRjb2xvcjogXCIjNjY2NjY2XCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c3VidGl0bGU6IHtcblx0XHRcdFx0XHRzaG93OiBmYWxzZSxcblx0XHRcdFx0XHRuYW1lOiBcIlwiLFxuXHRcdFx0XHRcdGZvbnRTaXplOiA1LFxuXHRcdFx0XHRcdGNvbG9yOiBcIiM3Y2I1ZWNcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHRyYToge1xuXHRcdFx0XHRcdHJpbmc6IHtcblx0XHRcdFx0XHRcdHJpbmdXaWR0aDogMjAsXG5cdFx0XHRcdFx0XHRhY3RpdmVPcGFjaXR5OiAwLjUsXG5cdFx0XHRcdFx0XHRhY3RpdmVSYWRpdXM6IDEwLFxuXHRcdFx0XHRcdFx0Y2VudGVyQ29sb3I6ICcjMjAyMjQ2Jyxcblx0XHRcdFx0XHRcdG9mZnNldEFuZ2xlOiAwLFxuXHRcdFx0XHRcdFx0bGFiZWxXaWR0aDogMTAsXG5cdFx0XHRcdFx0XHRib3JkZXI6IGZhbHNlLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR0aGlzLmZhdWx0VHlwZVRhYkRhdGEgPSBbe1xuXHRcdFx0XHRuYW1lWk46ICfns7vnu58nLFxuXHRcdFx0XHRuYW1lRU46ICdYVCcsXG5cdFx0XHRcdHNob3dDb2xvcjogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZVpOOiAn5py65Z6LJyxcblx0XHRcdFx0bmFtZUVOOiAnSlgnLFxuXHRcdFx0XHRzaG93Q29sb3I6IGZhbHNlXG5cblx0XHRcdH1cblx0XHRdXG5cdFx0dGhpcy55ZWFyRGF0YSA9IFt7XG5cdFx0XHRcdG5hbWVaTjogJ+aXpScsXG5cdFx0XHRcdG5hbWVFTjogJ2RheScsXG5cdFx0XHRcdHNob3dDb2xvcjogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZVpOOiAn5pyIJyxcblx0XHRcdFx0bmFtZUVOOiAnbW9udGgnLFxuXHRcdFx0XHRzaG93Q29sb3I6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lWk46ICflubQnLFxuXHRcdFx0XHRuYW1lRU46ICd5ZWFyJyxcblx0XHRcdFx0c2hvd0NvbG9yOiBmYWxzZVxuXG5cdFx0XHR9XG5cdFx0XVxuXHRcdHRoaXMuZmF1bHRUeXBlRGF0YSA9IFt7XG5cdFx0XHRcdGRhdGE6IDE4NjUsXG5cdFx0XHRcdG5hbWU6ICflj5HnlLXmnLonXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiAxODY1LFxuXHRcdFx0XHRuYW1lOiAn5Lyg5Yqo5Y+Y6YCfJ1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogNjk2LFxuXHRcdFx0XHRuYW1lOiAn6L+c56iL55uR5o6nJ1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogNTI3LFxuXHRcdFx0XHRuYW1lOiAn55S15rCU5o6n5Yi2J1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogOTM1LFxuXHRcdFx0XHRuYW1lOiAn5Y+Y5qGoJ1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogMTAyMixcblx0XHRcdFx0bmFtZTogJ+WPmOmikSdcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDc1Mixcblx0XHRcdFx0bmFtZTogJ+eUtea6kCdcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDE1MjAsXG5cdFx0XHRcdG5hbWU6ICfmnLroiLHkuI7loZTmnrYnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiAzNjUuNixcblx0XHRcdFx0bmFtZTogJ+mjjui9ridcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDM2NSxcblx0XHRcdFx0bmFtZTogJ+WBj+iIqidcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDI1Nixcblx0XHRcdFx0bmFtZTogJ+a2suWOiydcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDIxNCxcblx0XHRcdFx0bmFtZTogJ+mAmuiurydcblx0XHRcdH0sXG5cdFx0XVxuXHRcdHRoaXMud3hzc1R5cGVEYXRhID0gW3tcblx0XHRcdFx0ZGF0YTogMTg2NSxcblx0XHRcdFx0bmFtZTogJ+WPkeeUteacuidcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDE4NjUsXG5cdFx0XHRcdG5hbWU6ICfkvKDliqjlj5jpgJ8nXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiA2OTYsXG5cdFx0XHRcdG5hbWU6ICfov5znqIvnm5HmjqcnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiA1MjcsXG5cdFx0XHRcdG5hbWU6ICfnlLXmsJTmjqfliLYnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiA5MzUsXG5cdFx0XHRcdG5hbWU6ICflj5jmoagnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiAxMDIyLFxuXHRcdFx0XHRuYW1lOiAn5Y+Y6aKRJ1xuXHRcdFx0fVxuXHRcdF1cblx0fSxcblx0b25SZWFkeSgpIHtcblx0XHR0aGlzLmdldFBpZUJhcigpXG5cdFx0dGhpcy5nZXRQaWVCYXJ3eHNzKClcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdGdldFBpZUJhcigpIHtcblx0XHRcdGxldCBwcm9Db2xvciA9IFsnIzVDQjJFRicsICcjM0U3OEM1JywgJyMwMDI5OUQnLCAnIzNFQUQ5RicsICcjM0YzQTk5JywgJyM1RUFDODgnLCAnIzVENTZEMCcsICcjQ0Q4RDIzJyxcblx0XHRcdFx0JyM5RjY1QzEnLCAnI0ZEODk3NCcsICcjQzc0NUI5JywgJyNGRjZCM0UnXG5cdFx0XHRdXG5cblx0XHRcdGxldCBzZXJpZXMgPSBbXVxuXHRcdFx0dGhpcy5mYXVsdFR5cGVEYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdGxldCBvYmogPSB7XG5cdFx0XHRcdFx0bmFtZTogaXRlbS5uYW1lLFxuXHRcdFx0XHRcdHZhbHVlOiBpdGVtLmRhdGEsXG5cdFx0XHRcdH1cblx0XHRcdFx0cHJvQ29sb3IuZm9yRWFjaCgoaXQsIGlkeCkgPT4ge1xuXHRcdFx0XHRcdGlmIChpbmRleC50b1N0cmluZygpLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdG9iai5jb2xvciA9IHByb0NvbG9yW2luZGV4LnRvU3RyaW5nKCkuc2xpY2UoLTEpXVxuXHRcdFx0XHRcdFx0aXRlbS5jb2xvciA9IHByb0NvbG9yW2luZGV4LnRvU3RyaW5nKCkuc2xpY2UoLTEpXVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvYmouY29sb3IgPSBwcm9Db2xvcltpbmRleF1cblx0XHRcdFx0XHRcdGl0ZW0uY29sb3IgPSBwcm9Db2xvcltpbmRleF1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHNlcmllcy5wdXNoKG9iailcblx0XHRcdH0pXG5cdFx0XHRsZXQgcmVzID0ge1xuXHRcdFx0XHRzZXJpZXM6IFt7XG5cdFx0XHRcdFx0ZGF0YTogc2VyaWVzXG5cdFx0XHRcdH1dXG5cdFx0XHR9O1xuXHRcdFx0dGhpcy5jaGFydERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpO1xuXHRcdH0sXG5cdFx0Z2V0UGllQmFyd3hzcygpIHtcblx0XHRcdGxldCBwcm9Db2xvciA9IFsnIzVDQjJFRicsICcjM0U3OEM1JywgJyMwMDI5OUQnLCAnIzNFQUQ5RicsICcjM0YzQTk5JywgJyM1RUFDODgnLCAnIzVENTZEMCcsICcjQ0Q4RDIzJyxcblx0XHRcdFx0JyM5RjY1QzEnLCAnI0ZEODk3NCcsICcjQzc0NUI5JywgJyNGRjZCM0UnXG5cdFx0XHRdXG5cblx0XHRcdGxldCBzZXJpZXMgPSBbXVxuXHRcdFx0dGhpcy53eHNzVHlwZURhdGEuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcblx0XHRcdFx0bGV0IG9iaiA9IHtcblx0XHRcdFx0XHRuYW1lOiBpdGVtLm5hbWUsXG5cdFx0XHRcdFx0dmFsdWU6IGl0ZW0uZGF0YSxcblx0XHRcdFx0fVxuXHRcdFx0XHRwcm9Db2xvci5mb3JFYWNoKChpdCwgaWR4KSA9PiB7XG5cdFx0XHRcdFx0aWYgKGluZGV4LnRvU3RyaW5nKCkubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdFx0b2JqLmNvbG9yID0gcHJvQ29sb3JbaW5kZXgudG9TdHJpbmcoKS5zbGljZSgtMSldXG5cdFx0XHRcdFx0XHRpdGVtLmNvbG9yID0gcHJvQ29sb3JbaW5kZXgudG9TdHJpbmcoKS5zbGljZSgtMSldXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9iai5jb2xvciA9IHByb0NvbG9yW2luZGV4XVxuXHRcdFx0XHRcdFx0aXRlbS5jb2xvciA9IHByb0NvbG9yW2luZGV4XVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0c2VyaWVzLnB1c2gob2JqKVxuXHRcdFx0fSlcblx0XHRcdGxldCByZXMgPSB7XG5cdFx0XHRcdHNlcmllczogW3tcblx0XHRcdFx0XHRkYXRhOiBzZXJpZXNcblx0XHRcdFx0fV1cblx0XHRcdH07XG5cdFx0XHR0aGlzLmNoYXJ0RGF0YXd4c3MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpO1xuXHRcdH0sXG5cdFx0c2hvd0NvbG9yKGl0ZW0pIHtcblx0XHRcdHJldHVybiBgYmFja2dyb3VuZDogJHtpdGVtLmNvbG9yfWBcblx0XHR9LFxuXHRcdGNoYW5nZWZhdWx0VHlwZVRhYihpdGVtKSB7XG5cdFx0XHR0aGlzLmZhdWx0VHlwZVRhYkRhdGEuZm9yRWFjaChpdCA9PiB7XG5cdFx0XHRcdGl0LnNob3dDb2xvciA9IGZhbHNlXG5cdFx0XHRcdGlmIChpdC5uYW1lRU4gPT09IGl0ZW0ubmFtZUVOKSB7XG5cdFx0XHRcdFx0aXRlbS5zaG93Q29sb3IgPSB0cnVlXG5cdFx0XHRcdFx0dGhpcy5mYXVsdFR5cGVUYWIgPSBpdC5uYW1lRU5cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC8vIGlmICh0aGlzLmZhdWx0VHlwZVRhYiA9PT0gJ1hUJykge1xuXHRcdFx0Ly8gXHR0aGlzLmdldFBvd2VyQmFyKClcblx0XHRcdC8vIH0gZWxzZSB7XG5cdFx0XHQvLyBcdHRoaXMuZ2V0TGluZUJhcigpXG5cdFx0XHQvLyB9XG5cdFx0fSxcblx0XHRjaGFuZ2VZZWFyVGFiKGl0ZW0pIHtcblx0XHRcdHRoaXMueWVhckRhdGEuZm9yRWFjaChpdCA9PiB7XG5cdFx0XHRcdGl0LnNob3dDb2xvciA9IGZhbHNlXG5cdFx0XHRcdGlmIChpdC5uYW1lRU4gPT09IGl0ZW0ubmFtZUVOKSB7XG5cdFx0XHRcdFx0aXRlbS5zaG93Q29sb3IgPSB0cnVlXG5cdFx0XHRcdFx0dGhpcy55ZWFyVGFiID0gaXQubmFtZUVOXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///139\n"); /***/ }), /* 140 */ /*!**************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?mpType=page ***! \**************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=21a5f300&mpType=page */ 141);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 143);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/report/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTQwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjFhNWYzMDAmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3JlcG9ydC9pbmRleC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///140\n"); /***/ }), /* 141 */ /*!********************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=template&id=21a5f300&mpType=page ***! \********************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=21a5f300&mpType=page */ 142); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 142 */ /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=template&id=21a5f300&mpType=page ***! \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c("view", { staticClass: _vm._$s(0, "sc", "home"), attrs: { _i: 0 } }) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 143 */ /*!**************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=script&lang=js&mpType=page ***! \**************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 144);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///143\n"); /***/ }), /* 144 */ /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=script&lang=js&mpType=page ***! \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! 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//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {}\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvcmVwb3J0L2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJvbkxvYWQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLGVBRWU7RUFDZEEsTUFBTSxFQUFFLGtCQUFXLENBQUM7QUFDckIsQ0FBQztBQUFBIiwiZmlsZSI6IjE0NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRvbkxvYWQ6IGZ1bmN0aW9uKCkge31cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///144\n"); /***/ }), /* 145 */ /*!************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?mpType=page ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=b3a969dc&mpType=page */ 146);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 148);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/warn/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTQ1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YjNhOTY5ZGMmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3dhcm4vaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///145\n"); /***/ }), /* 146 */ /*!******************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=template&id=b3a969dc&mpType=page ***! \******************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=b3a969dc&mpType=page */ 147); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; }); /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; }); /***/ }), /* 147 */ /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=template&id=b3a969dc&mpType=page ***! \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! exports provided: render, staticRenderFns, recyclableRender, components */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; }); var components var render = function () { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c("view", { staticClass: _vm._$s(0, "sc", "home"), attrs: { _i: 0 } }) } var recyclableRender = false var staticRenderFns = [] render._withStripped = true /***/ }), /* 148 */ /*!************************************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=script&lang=js&mpType=page ***! \************************************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 149);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///148\n"); /***/ }), /* 149 */ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=script&lang=js&mpType=page ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! 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//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {}\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvd2Fybi9pbmRleC52dWUiXSwibmFtZXMiOlsib25Mb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxlQUVlO0VBQ2RBLE1BQU0sRUFBRSxrQkFBVyxDQUFDO0FBQ3JCLENBQUM7QUFBQSIsImZpbGUiOiIxNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0b25Mb2FkOiBmdW5jdGlvbigpIHt9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///149\n"); /***/ }), /* 150 */ /*!***********************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/App.vue ***! \***********************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 151);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\nvar render, staticRenderFns, recyclableRender, components\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUN1RDtBQUNMOzs7QUFHbEQ7QUFDMk07QUFDM00sZ0JBQWdCLHFOQUFVO0FBQzFCLEVBQUUseUVBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNlLGdGIiwiZmlsZSI6IjE1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50c1xudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJBcHAudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///150\n"); /***/ }), /* 151 */ /*!************************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/App.vue?vue&type=script&lang=js& ***! \************************************************************************/ /*! no static exports found */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./App.vue?vue&type=script&lang=js& */ 152);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStyQixDQUFnQix5dEJBQUcsRUFBQyIsImZpbGUiOiIxNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///151\n"); /***/ }), /* 152 */ /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/App.vue?vue&type=script&lang=js& ***! \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _config = _interopRequireDefault(__webpack_require__(/*! ./config */ 153));\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 154));\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\nvar _default = {\n onLaunch: function onLaunch() {\n this.initApp();\n },\n methods: {\n // 初始化应用\n initApp: function initApp() {\n // 初始化应用配置\n this.initConfig();\n // 检查用户登录状态\n },\n initConfig: function initConfig() {\n this.globalData.config = _config.default;\n },\n checkLogin: function checkLogin() {\n if (!(0, _auth.getAccessToken)()) {\n this.$tab.reLaunch('/pages/login');\n }\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsImluaXRBcHAiLCJtZXRob2RzIiwiaW5pdENvbmZpZyIsImdsb2JhbERhdGEiLCJjb25maWciLCJjaGVja0xvZ2luIiwiZ2V0QWNjZXNzVG9rZW4iLCIkdGFiIiwicmVMYXVuY2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFBNkMsZUFFOUI7RUFDYkEsUUFBUSxFQUFFLG9CQUFXO0lBQ25CLElBQUksQ0FBQ0MsT0FBTyxFQUFFO0VBQ2hCLENBQUM7RUFDREMsT0FBTyxFQUFFO0lBQ1A7SUFDQUQsT0FBTyxxQkFBRztNQUNSO01BQ0EsSUFBSSxDQUFDRSxVQUFVLEVBQUU7TUFDakI7SUFJRixDQUFDO0lBQ0RBLFVBQVUsd0JBQUc7TUFDWCxJQUFJLENBQUNDLFVBQVUsQ0FBQ0MsTUFBTSxHQUFHQSxlQUFNO0lBQ2pDLENBQUM7SUFDREMsVUFBVSx3QkFBRztNQUNYLElBQUksQ0FBQyxJQUFBQyxvQkFBYyxHQUFFLEVBQUU7UUFDckIsSUFBSSxDQUFDQyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxjQUFjLENBQUM7TUFDcEM7SUFDRjtFQUNGO0FBQ0YsQ0FBQztBQUFBIiwiZmlsZSI6IjE1Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZydcbmltcG9ydCBzdG9yZSBmcm9tICdAL3N0b3JlJ1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW4gfSBmcm9tICdAL3V0aWxzL2F1dGgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25MYXVuY2g6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaW5pdEFwcCgpXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyDliJ3lp4vljJblupTnlKhcbiAgICBpbml0QXBwKCkge1xuICAgICAgLy8g5Yid5aeL5YyW5bqU55So6YWN572uXG4gICAgICB0aGlzLmluaXRDb25maWcoKVxuICAgICAgLy8g5qOA5p+l55So5oi355m75b2V54q25oCBXG5cblxuXG4gICAgfSxcbiAgICBpbml0Q29uZmlnKCkge1xuICAgICAgdGhpcy5nbG9iYWxEYXRhLmNvbmZpZyA9IGNvbmZpZ1xuICAgIH0sXG4gICAgY2hlY2tMb2dpbigpIHtcbiAgICAgIGlmICghZ2V0QWNjZXNzVG9rZW4oKSkge1xuICAgICAgICB0aGlzLiR0YWIucmVMYXVuY2goJy9wYWdlcy9sb2dpbicpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///152\n"); /***/ }), /* 153 */ /*!*************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/config.js ***! \*************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("// 应用全局配置\nmodule.exports = {\n // baseUrl: 'http://api-dashboard.yudao.iocoder.cn',\n baseUrl: 'http://192.168.2.7:48080',\n baseApi: '/admin-api',\n // 应用信息\n appInfo: {\n // 应用名称\n name: \"yudao-app\",\n // 应用版本\n version: \"1.0.0\",\n // 应用logo\n logo: \"/static/logo.png\",\n // 官方网站\n site_url: \"https://iocoder.cn\",\n // 政策协议\n agreements: [{\n title: \"隐私政策\",\n url: \"https://iocoder.cn\"\n }, {\n title: \"用户服务协议\",\n url: \"https://iocoder.cn\"\n }]\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vY29uZmlnLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJiYXNlVXJsIiwiYmFzZUFwaSIsImFwcEluZm8iLCJuYW1lIiwidmVyc2lvbiIsImxvZ28iLCJzaXRlX3VybCIsImFncmVlbWVudHMiLCJ0aXRsZSIsInVybCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQUEsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZjtFQUNBQyxPQUFPLEVBQUUsMEJBQTBCO0VBQ25DQyxPQUFPLEVBQUUsWUFBWTtFQUNyQjtFQUNBQyxPQUFPLEVBQUU7SUFDUDtJQUNBQyxJQUFJLEVBQUUsV0FBVztJQUNqQjtJQUNBQyxPQUFPLEVBQUUsT0FBTztJQUNoQjtJQUNBQyxJQUFJLEVBQUUsa0JBQWtCO0lBQ3hCO0lBQ0FDLFFBQVEsRUFBRSxvQkFBb0I7SUFDOUI7SUFDQUMsVUFBVSxFQUFFLENBQUM7TUFDVEMsS0FBSyxFQUFFLE1BQU07TUFDYkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQyxFQUNEO01BQ0VELEtBQUssRUFBRSxRQUFRO01BQ2ZDLEdBQUcsRUFBRTtJQUNQLENBQUM7RUFFTDtBQUNGLENBQUMiLCJmaWxlIjoiMTUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5bqU55So5YWo5bGA6YWN572uXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIC8vIGJhc2VVcmw6ICdodHRwOi8vYXBpLWRhc2hib2FyZC55dWRhby5pb2NvZGVyLmNuJyxcclxuICBiYXNlVXJsOiAnaHR0cDovLzE5Mi4xNjguMi43OjQ4MDgwJyxcclxuICBiYXNlQXBpOiAnL2FkbWluLWFwaScsXHJcbiAgLy8g5bqU55So5L+h5oGvXHJcbiAgYXBwSW5mbzoge1xyXG4gICAgLy8g5bqU55So5ZCN56ewXHJcbiAgICBuYW1lOiBcInl1ZGFvLWFwcFwiLFxyXG4gICAgLy8g5bqU55So54mI5pysXHJcbiAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXHJcbiAgICAvLyDlupTnlKhsb2dvXHJcbiAgICBsb2dvOiBcIi9zdGF0aWMvbG9nby5wbmdcIixcclxuICAgIC8vIOWumOaWuee9keermVxyXG4gICAgc2l0ZV91cmw6IFwiaHR0cHM6Ly9pb2NvZGVyLmNuXCIsXHJcbiAgICAvLyDmlL/nrZbljY/orq5cclxuICAgIGFncmVlbWVudHM6IFt7XHJcbiAgICAgICAgdGl0bGU6IFwi6ZqQ56eB5pS/562WXCIsXHJcbiAgICAgICAgdXJsOiBcImh0dHBzOi8vaW9jb2Rlci5jblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCLnlKjmiLfmnI3liqHljY/orq5cIixcclxuICAgICAgICB1cmw6IFwiaHR0cHM6Ly9pb2NvZGVyLmNuXCJcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///153\n"); /***/ }), /* 154 */ /*!******************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/store/index.js ***! \******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 101));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 155));\nvar _user = _interopRequireDefault(__webpack_require__(/*! @/store/modules/user */ 156));\nvar _getters = _interopRequireDefault(__webpack_require__(/*! ./getters */ 165));\n_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n modules: {\n user: _user.default\n },\n getters: _getters.default\n});\nvar _default = store;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJtb2R1bGVzIiwidXNlciIsImdldHRlcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBQSxZQUFHLENBQUNDLEdBQUcsQ0FBQ0MsYUFBSSxDQUFDO0FBRWIsSUFBTUMsS0FBSyxHQUFHLElBQUlELGFBQUksQ0FBQ0UsS0FBSyxDQUFDO0VBQzNCQyxPQUFPLEVBQUU7SUFDUEMsSUFBSSxFQUFKQTtFQUNGLENBQUM7RUFDREMsT0FBTyxFQUFQQTtBQUNGLENBQUMsQ0FBQztBQUFBLGVBRWFKLEtBQUs7QUFBQSIsImZpbGUiOiIxNTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuaW1wb3J0IFZ1ZXggZnJvbSAndnVleCdcclxuaW1wb3J0IHVzZXIgZnJvbSAnQC9zdG9yZS9tb2R1bGVzL3VzZXInXHJcbmltcG9ydCBnZXR0ZXJzIGZyb20gJy4vZ2V0dGVycydcclxuXHJcblZ1ZS51c2UoVnVleClcclxuXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoe1xyXG4gIG1vZHVsZXM6IHtcclxuICAgIHVzZXJcclxuICB9LFxyXG4gIGdldHRlcnNcclxufSlcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHN0b3JlXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///154\n"); /***/ }), /* 155 */ /*!**************************************************************************************!*\ !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {/*! * vuex v3.6.2 * (c) 2021 Evan You * @license MIT */ function applyMixin (Vue) { var version = Number(Vue.version.split('.')[0]); if (version >= 2) { Vue.mixin({ beforeCreate: vuexInit }); } else { // override init and inject vuex init procedure // for 1.x backwards compatibility. var _init = Vue.prototype._init; Vue.prototype._init = function (options) { if ( options === void 0 ) options = {}; options.init = options.init ? [vuexInit].concat(options.init) : vuexInit; _init.call(this, options); }; } /** * Vuex init hook, injected into each instances init hooks list. */ function vuexInit () { var options = this.$options; // store injection if (options.store) { this.$store = typeof options.store === 'function' ? options.store() : options.store; } else if (options.parent && options.parent.$store) { this.$store = options.parent.$store; } } } var target = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {}; var devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__; function devtoolPlugin (store) { if (!devtoolHook) { return } store._devtoolHook = devtoolHook; devtoolHook.emit('vuex:init', store); devtoolHook.on('vuex:travel-to-state', function (targetState) { store.replaceState(targetState); }); store.subscribe(function (mutation, state) { devtoolHook.emit('vuex:mutation', mutation, state); }, { prepend: true }); store.subscribeAction(function (action, state) { devtoolHook.emit('vuex:action', action, state); }, { prepend: true }); } /** * Get the first item that pass the test * by second argument function * * @param {Array} list * @param {Function} f * @return {*} */ function find (list, f) { return list.filter(f)[0] } /** * Deep copy the given object considering circular structure. * This function caches all nested objects and its copies. * If it detects circular structure, use cached copy to avoid infinite loop. * * @param {*} obj * @param {Array} cache * @return {*} */ function deepCopy (obj, cache) { if ( cache === void 0 ) cache = []; // just return if obj is immutable value if (obj === null || typeof obj !== 'object') { return obj } // if obj is hit, it is in circular structure var hit = find(cache, function (c) { return c.original === obj; }); if (hit) { return hit.copy } var copy = Array.isArray(obj) ? [] : {}; // put the copy into cache at first // because we want to refer it in recursive deepCopy cache.push({ original: obj, copy: copy }); Object.keys(obj).forEach(function (key) { copy[key] = deepCopy(obj[key], cache); }); return copy } /** * forEach for object */ function forEachValue (obj, fn) { Object.keys(obj).forEach(function (key) { return fn(obj[key], key); }); } function isObject (obj) { return obj !== null && typeof obj === 'object' } function isPromise (val) { return val && typeof val.then === 'function' } function assert (condition, msg) { if (!condition) { throw new Error(("[vuex] " + msg)) } } function partial (fn, arg) { return function () { return fn(arg) } } // Base data struct for store's module, package with some attribute and method var Module = function Module (rawModule, runtime) { this.runtime = runtime; // Store some children item this._children = Object.create(null); // Store the origin module object which passed by programmer this._rawModule = rawModule; var rawState = rawModule.state; // Store the origin module's state this.state = (typeof rawState === 'function' ? rawState() : rawState) || {}; }; var prototypeAccessors = { namespaced: { configurable: true } }; prototypeAccessors.namespaced.get = function () { return !!this._rawModule.namespaced }; Module.prototype.addChild = function addChild (key, module) { this._children[key] = module; }; Module.prototype.removeChild = function removeChild (key) { delete this._children[key]; }; Module.prototype.getChild = function getChild (key) { return this._children[key] }; Module.prototype.hasChild = function hasChild (key) { return key in this._children }; Module.prototype.update = function update (rawModule) { this._rawModule.namespaced = rawModule.namespaced; if (rawModule.actions) { this._rawModule.actions = rawModule.actions; } if (rawModule.mutations) { this._rawModule.mutations = rawModule.mutations; } if (rawModule.getters) { this._rawModule.getters = rawModule.getters; } }; Module.prototype.forEachChild = function forEachChild (fn) { forEachValue(this._children, fn); }; Module.prototype.forEachGetter = function forEachGetter (fn) { if (this._rawModule.getters) { forEachValue(this._rawModule.getters, fn); } }; Module.prototype.forEachAction = function forEachAction (fn) { if (this._rawModule.actions) { forEachValue(this._rawModule.actions, fn); } }; Module.prototype.forEachMutation = function forEachMutation (fn) { if (this._rawModule.mutations) { forEachValue(this._rawModule.mutations, fn); } }; Object.defineProperties( Module.prototype, prototypeAccessors ); var ModuleCollection = function ModuleCollection (rawRootModule) { // register root module (Vuex.Store options) this.register([], rawRootModule, false); }; ModuleCollection.prototype.get = function get (path) { return path.reduce(function (module, key) { return module.getChild(key) }, this.root) }; ModuleCollection.prototype.getNamespace = function getNamespace (path) { var module = this.root; return path.reduce(function (namespace, key) { module = module.getChild(key); return namespace + (module.namespaced ? key + '/' : '') }, '') }; ModuleCollection.prototype.update = function update$1 (rawRootModule) { update([], this.root, rawRootModule); }; ModuleCollection.prototype.register = function register (path, rawModule, runtime) { var this$1 = this; if ( runtime === void 0 ) runtime = true; if ((true)) { assertRawModule(path, rawModule); } var newModule = new Module(rawModule, runtime); if (path.length === 0) { this.root = newModule; } else { var parent = this.get(path.slice(0, -1)); parent.addChild(path[path.length - 1], newModule); } // register nested modules if (rawModule.modules) { forEachValue(rawModule.modules, function (rawChildModule, key) { this$1.register(path.concat(key), rawChildModule, runtime); }); } }; ModuleCollection.prototype.unregister = function unregister (path) { var parent = this.get(path.slice(0, -1)); var key = path[path.length - 1]; var child = parent.getChild(key); if (!child) { if ((true)) { console.warn( "[vuex] trying to unregister module '" + key + "', which is " + "not registered" ); } return } if (!child.runtime) { return } parent.removeChild(key); }; ModuleCollection.prototype.isRegistered = function isRegistered (path) { var parent = this.get(path.slice(0, -1)); var key = path[path.length - 1]; if (parent) { return parent.hasChild(key) } return false }; function update (path, targetModule, newModule) { if ((true)) { assertRawModule(path, newModule); } // update target module targetModule.update(newModule); // update nested modules if (newModule.modules) { for (var key in newModule.modules) { if (!targetModule.getChild(key)) { if ((true)) { console.warn( "[vuex] trying to add a new module '" + key + "' on hot reloading, " + 'manual reload is needed' ); } return } update( path.concat(key), targetModule.getChild(key), newModule.modules[key] ); } } } var functionAssert = { assert: function (value) { return typeof value === 'function'; }, expected: 'function' }; var objectAssert = { assert: function (value) { return typeof value === 'function' || (typeof value === 'object' && typeof value.handler === 'function'); }, expected: 'function or object with "handler" function' }; var assertTypes = { getters: functionAssert, mutations: functionAssert, actions: objectAssert }; function assertRawModule (path, rawModule) { Object.keys(assertTypes).forEach(function (key) { if (!rawModule[key]) { return } var assertOptions = assertTypes[key]; forEachValue(rawModule[key], function (value, type) { assert( assertOptions.assert(value), makeAssertionMessage(path, key, type, value, assertOptions.expected) ); }); }); } function makeAssertionMessage (path, key, type, value, expected) { var buf = key + " should be " + expected + " but \"" + key + "." + type + "\""; if (path.length > 0) { buf += " in module \"" + (path.join('.')) + "\""; } buf += " is " + (JSON.stringify(value)) + "."; return buf } var Vue; // bind on install var Store = function Store (options) { var this$1 = this; if ( options === void 0 ) options = {}; // Auto install if it is not done yet and `window` has `Vue`. // To allow users to avoid auto-installation in some cases, // this code should be placed here. See #731 if (!Vue && typeof window !== 'undefined' && window.Vue) { install(window.Vue); } if ((true)) { assert(Vue, "must call Vue.use(Vuex) before creating a store instance."); assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser."); assert(this instanceof Store, "store must be called with the new operator."); } var plugins = options.plugins; if ( plugins === void 0 ) plugins = []; var strict = options.strict; if ( strict === void 0 ) strict = false; // store internal state this._committing = false; this._actions = Object.create(null); this._actionSubscribers = []; this._mutations = Object.create(null); this._wrappedGetters = Object.create(null); this._modules = new ModuleCollection(options); this._modulesNamespaceMap = Object.create(null); this._subscribers = []; this._watcherVM = new Vue(); this._makeLocalGettersCache = Object.create(null); // bind commit and dispatch to self var store = this; var ref = this; var dispatch = ref.dispatch; var commit = ref.commit; this.dispatch = function boundDispatch (type, payload) { return dispatch.call(store, type, payload) }; this.commit = function boundCommit (type, payload, options) { return commit.call(store, type, payload, options) }; // strict mode this.strict = strict; var state = this._modules.root.state; // init root module. // this also recursively registers all sub-modules // and collects all module getters inside this._wrappedGetters installModule(this, state, [], this._modules.root); // initialize the store vm, which is responsible for the reactivity // (also registers _wrappedGetters as computed properties) resetStoreVM(this, state); // apply plugins plugins.forEach(function (plugin) { return plugin(this$1); }); var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools; if (useDevtools) { devtoolPlugin(this); } }; var prototypeAccessors$1 = { state: { configurable: true } }; prototypeAccessors$1.state.get = function () { return this._vm._data.$$state }; prototypeAccessors$1.state.set = function (v) { if ((true)) { assert(false, "use store.replaceState() to explicit replace store state."); } }; Store.prototype.commit = function commit (_type, _payload, _options) { var this$1 = this; // check object-style commit var ref = unifyObjectStyle(_type, _payload, _options); var type = ref.type; var payload = ref.payload; var options = ref.options; var mutation = { type: type, payload: payload }; var entry = this._mutations[type]; if (!entry) { if ((true)) { console.error(("[vuex] unknown mutation type: " + type)); } return } this._withCommit(function () { entry.forEach(function commitIterator (handler) { handler(payload); }); }); this._subscribers .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe .forEach(function (sub) { return sub(mutation, this$1.state); }); if ( ( true) && options && options.silent ) { console.warn( "[vuex] mutation type: " + type + ". Silent option has been removed. " + 'Use the filter functionality in the vue-devtools' ); } }; Store.prototype.dispatch = function dispatch (_type, _payload) { var this$1 = this; // check object-style dispatch var ref = unifyObjectStyle(_type, _payload); var type = ref.type; var payload = ref.payload; var action = { type: type, payload: payload }; var entry = this._actions[type]; if (!entry) { if ((true)) { console.error(("[vuex] unknown action type: " + type)); } return } try { this._actionSubscribers .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe .filter(function (sub) { return sub.before; }) .forEach(function (sub) { return sub.before(action, this$1.state); }); } catch (e) { if ((true)) { console.warn("[vuex] error in before action subscribers: "); console.error(e); } } var result = entry.length > 1 ? Promise.all(entry.map(function (handler) { return handler(payload); })) : entry[0](payload); return new Promise(function (resolve, reject) { result.then(function (res) { try { this$1._actionSubscribers .filter(function (sub) { return sub.after; }) .forEach(function (sub) { return sub.after(action, this$1.state); }); } catch (e) { if ((true)) { console.warn("[vuex] error in after action subscribers: "); console.error(e); } } resolve(res); }, function (error) { try { this$1._actionSubscribers .filter(function (sub) { return sub.error; }) .forEach(function (sub) { return sub.error(action, this$1.state, error); }); } catch (e) { if ((true)) { console.warn("[vuex] error in error action subscribers: "); console.error(e); } } reject(error); }); }) }; Store.prototype.subscribe = function subscribe (fn, options) { return genericSubscribe(fn, this._subscribers, options) }; Store.prototype.subscribeAction = function subscribeAction (fn, options) { var subs = typeof fn === 'function' ? { before: fn } : fn; return genericSubscribe(subs, this._actionSubscribers, options) }; Store.prototype.watch = function watch (getter, cb, options) { var this$1 = this; if ((true)) { assert(typeof getter === 'function', "store.watch only accepts a function."); } return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options) }; Store.prototype.replaceState = function replaceState (state) { var this$1 = this; this._withCommit(function () { this$1._vm._data.$$state = state; }); }; Store.prototype.registerModule = function registerModule (path, rawModule, options) { if ( options === void 0 ) options = {}; if (typeof path === 'string') { path = [path]; } if ((true)) { assert(Array.isArray(path), "module path must be a string or an Array."); assert(path.length > 0, 'cannot register the root module by using registerModule.'); } this._modules.register(path, rawModule); installModule(this, this.state, path, this._modules.get(path), options.preserveState); // reset store to update getters... resetStoreVM(this, this.state); }; Store.prototype.unregisterModule = function unregisterModule (path) { var this$1 = this; if (typeof path === 'string') { path = [path]; } if ((true)) { assert(Array.isArray(path), "module path must be a string or an Array."); } this._modules.unregister(path); this._withCommit(function () { var parentState = getNestedState(this$1.state, path.slice(0, -1)); Vue.delete(parentState, path[path.length - 1]); }); resetStore(this); }; Store.prototype.hasModule = function hasModule (path) { if (typeof path === 'string') { path = [path]; } if ((true)) { assert(Array.isArray(path), "module path must be a string or an Array."); } return this._modules.isRegistered(path) }; Store.prototype[[104,111,116,85,112,100,97,116,101].map(function (item) {return String.fromCharCode(item)}).join('')] = function (newOptions) { this._modules.update(newOptions); resetStore(this, true); }; Store.prototype._withCommit = function _withCommit (fn) { var committing = this._committing; this._committing = true; fn(); this._committing = committing; }; Object.defineProperties( Store.prototype, prototypeAccessors$1 ); function genericSubscribe (fn, subs, options) { if (subs.indexOf(fn) < 0) { options && options.prepend ? subs.unshift(fn) : subs.push(fn); } return function () { var i = subs.indexOf(fn); if (i > -1) { subs.splice(i, 1); } } } function resetStore (store, hot) { store._actions = Object.create(null); store._mutations = Object.create(null); store._wrappedGetters = Object.create(null); store._modulesNamespaceMap = Object.create(null); var state = store.state; // init all modules installModule(store, state, [], store._modules.root, true); // reset vm resetStoreVM(store, state, hot); } function resetStoreVM (store, state, hot) { var oldVm = store._vm; // bind store public getters store.getters = {}; // reset local getters cache store._makeLocalGettersCache = Object.create(null); var wrappedGetters = store._wrappedGetters; var computed = {}; forEachValue(wrappedGetters, function (fn, key) { // use computed to leverage its lazy-caching mechanism // direct inline function use will lead to closure preserving oldVm. // using partial to return function with only arguments preserved in closure environment. computed[key] = partial(fn, store); Object.defineProperty(store.getters, key, { get: function () { return store._vm[key]; }, enumerable: true // for local getters }); }); // use a Vue instance to store the state tree // suppress warnings just in case the user has added // some funky global mixins var silent = Vue.config.silent; Vue.config.silent = true; store._vm = new Vue({ data: { $$state: state }, computed: computed }); Vue.config.silent = silent; // enable strict mode for new vm if (store.strict) { enableStrictMode(store); } if (oldVm) { if (hot) { // dispatch changes in all subscribed watchers // to force getter re-evaluation for hot reloading. store._withCommit(function () { oldVm._data.$$state = null; }); } Vue.nextTick(function () { return oldVm.$destroy(); }); } } function installModule (store, rootState, path, module, hot) { var isRoot = !path.length; var namespace = store._modules.getNamespace(path); // register in namespace map if (module.namespaced) { if (store._modulesNamespaceMap[namespace] && ("development" !== 'production')) { console.error(("[vuex] duplicate namespace " + namespace + " for the namespaced module " + (path.join('/')))); } store._modulesNamespaceMap[namespace] = module; } // set state if (!isRoot && !hot) { var parentState = getNestedState(rootState, path.slice(0, -1)); var moduleName = path[path.length - 1]; store._withCommit(function () { if ((true)) { if (moduleName in parentState) { console.warn( ("[vuex] state field \"" + moduleName + "\" was overridden by a module with the same name at \"" + (path.join('.')) + "\"") ); } } Vue.set(parentState, moduleName, module.state); }); } var local = module.context = makeLocalContext(store, namespace, path); module.forEachMutation(function (mutation, key) { var namespacedType = namespace + key; registerMutation(store, namespacedType, mutation, local); }); module.forEachAction(function (action, key) { var type = action.root ? key : namespace + key; var handler = action.handler || action; registerAction(store, type, handler, local); }); module.forEachGetter(function (getter, key) { var namespacedType = namespace + key; registerGetter(store, namespacedType, getter, local); }); module.forEachChild(function (child, key) { installModule(store, rootState, path.concat(key), child, hot); }); } /** * make localized dispatch, commit, getters and state * if there is no namespace, just use root ones */ function makeLocalContext (store, namespace, path) { var noNamespace = namespace === ''; var local = { dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) { var args = unifyObjectStyle(_type, _payload, _options); var payload = args.payload; var options = args.options; var type = args.type; if (!options || !options.root) { type = namespace + type; if (( true) && !store._actions[type]) { console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type)); return } } return store.dispatch(type, payload) }, commit: noNamespace ? store.commit : function (_type, _payload, _options) { var args = unifyObjectStyle(_type, _payload, _options); var payload = args.payload; var options = args.options; var type = args.type; if (!options || !options.root) { type = namespace + type; if (( true) && !store._mutations[type]) { console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type)); return } } store.commit(type, payload, options); } }; // getters and state object must be gotten lazily // because they will be changed by vm update Object.defineProperties(local, { getters: { get: noNamespace ? function () { return store.getters; } : function () { return makeLocalGetters(store, namespace); } }, state: { get: function () { return getNestedState(store.state, path); } } }); return local } function makeLocalGetters (store, namespace) { if (!store._makeLocalGettersCache[namespace]) { var gettersProxy = {}; var splitPos = namespace.length; Object.keys(store.getters).forEach(function (type) { // skip if the target getter is not match this namespace if (type.slice(0, splitPos) !== namespace) { return } // extract local getter type var localType = type.slice(splitPos); // Add a port to the getters proxy. // Define as getter property because // we do not want to evaluate the getters in this time. Object.defineProperty(gettersProxy, localType, { get: function () { return store.getters[type]; }, enumerable: true }); }); store._makeLocalGettersCache[namespace] = gettersProxy; } return store._makeLocalGettersCache[namespace] } function registerMutation (store, type, handler, local) { var entry = store._mutations[type] || (store._mutations[type] = []); entry.push(function wrappedMutationHandler (payload) { handler.call(store, local.state, payload); }); } function registerAction (store, type, handler, local) { var entry = store._actions[type] || (store._actions[type] = []); entry.push(function wrappedActionHandler (payload) { var res = handler.call(store, { dispatch: local.dispatch, commit: local.commit, getters: local.getters, state: local.state, rootGetters: store.getters, rootState: store.state }, payload); if (!isPromise(res)) { res = Promise.resolve(res); } if (store._devtoolHook) { return res.catch(function (err) { store._devtoolHook.emit('vuex:error', err); throw err }) } else { return res } }); } function registerGetter (store, type, rawGetter, local) { if (store._wrappedGetters[type]) { if ((true)) { console.error(("[vuex] duplicate getter key: " + type)); } return } store._wrappedGetters[type] = function wrappedGetter (store) { return rawGetter( local.state, // local state local.getters, // local getters store.state, // root state store.getters // root getters ) }; } function enableStrictMode (store) { store._vm.$watch(function () { return this._data.$$state }, function () { if ((true)) { assert(store._committing, "do not mutate vuex store state outside mutation handlers."); } }, { deep: true, sync: true }); } function getNestedState (state, path) { return path.reduce(function (state, key) { return state[key]; }, state) } function unifyObjectStyle (type, payload, options) { if (isObject(type) && type.type) { options = payload; payload = type; type = type.type; } if ((true)) { assert(typeof type === 'string', ("expects string as the type, but found " + (typeof type) + ".")); } return { type: type, payload: payload, options: options } } function install (_Vue) { if (Vue && _Vue === Vue) { if ((true)) { console.error( '[vuex] already installed. Vue.use(Vuex) should be called only once.' ); } return } Vue = _Vue; applyMixin(Vue); } /** * Reduce the code which written in Vue.js for getting the state. * @param {String} [namespace] - Module's namespace * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it. * @param {Object} */ var mapState = normalizeNamespace(function (namespace, states) { var res = {}; if (( true) && !isValidMap(states)) { console.error('[vuex] mapState: mapper parameter must be either an Array or an Object'); } normalizeMap(states).forEach(function (ref) { var key = ref.key; var val = ref.val; res[key] = function mappedState () { var state = this.$store.state; var getters = this.$store.getters; if (namespace) { var module = getModuleByNamespace(this.$store, 'mapState', namespace); if (!module) { return } state = module.context.state; getters = module.context.getters; } return typeof val === 'function' ? val.call(this, state, getters) : state[val] }; // mark vuex getter for devtools res[key].vuex = true; }); return res }); /** * Reduce the code which written in Vue.js for committing the mutation * @param {String} [namespace] - Module's namespace * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function. * @return {Object} */ var mapMutations = normalizeNamespace(function (namespace, mutations) { var res = {}; if (( true) && !isValidMap(mutations)) { console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object'); } normalizeMap(mutations).forEach(function (ref) { var key = ref.key; var val = ref.val; res[key] = function mappedMutation () { var args = [], len = arguments.length; while ( len-- ) args[ len ] = arguments[ len ]; // Get the commit method from store var commit = this.$store.commit; if (namespace) { var module = getModuleByNamespace(this.$store, 'mapMutations', namespace); if (!module) { return } commit = module.context.commit; } return typeof val === 'function' ? val.apply(this, [commit].concat(args)) : commit.apply(this.$store, [val].concat(args)) }; }); return res }); /** * Reduce the code which written in Vue.js for getting the getters * @param {String} [namespace] - Module's namespace * @param {Object|Array} getters * @return {Object} */ var mapGetters = normalizeNamespace(function (namespace, getters) { var res = {}; if (( true) && !isValidMap(getters)) { console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object'); } normalizeMap(getters).forEach(function (ref) { var key = ref.key; var val = ref.val; // The namespace has been mutated by normalizeNamespace val = namespace + val; res[key] = function mappedGetter () { if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) { return } if (( true) && !(val in this.$store.getters)) { console.error(("[vuex] unknown getter: " + val)); return } return this.$store.getters[val] }; // mark vuex getter for devtools res[key].vuex = true; }); return res }); /** * Reduce the code which written in Vue.js for dispatch the action * @param {String} [namespace] - Module's namespace * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function. * @return {Object} */ var mapActions = normalizeNamespace(function (namespace, actions) { var res = {}; if (( true) && !isValidMap(actions)) { console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object'); } normalizeMap(actions).forEach(function (ref) { var key = ref.key; var val = ref.val; res[key] = function mappedAction () { var args = [], len = arguments.length; while ( len-- ) args[ len ] = arguments[ len ]; // get dispatch function from store var dispatch = this.$store.dispatch; if (namespace) { var module = getModuleByNamespace(this.$store, 'mapActions', namespace); if (!module) { return } dispatch = module.context.dispatch; } return typeof val === 'function' ? val.apply(this, [dispatch].concat(args)) : dispatch.apply(this.$store, [val].concat(args)) }; }); return res }); /** * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object * @param {String} namespace * @return {Object} */ var createNamespacedHelpers = function (namespace) { return ({ mapState: mapState.bind(null, namespace), mapGetters: mapGetters.bind(null, namespace), mapMutations: mapMutations.bind(null, namespace), mapActions: mapActions.bind(null, namespace) }); }; /** * Normalize the map * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ] * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ] * @param {Array|Object} map * @return {Object} */ function normalizeMap (map) { if (!isValidMap(map)) { return [] } return Array.isArray(map) ? map.map(function (key) { return ({ key: key, val: key }); }) : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); }) } /** * Validate whether given map is valid or not * @param {*} map * @return {Boolean} */ function isValidMap (map) { return Array.isArray(map) || isObject(map) } /** * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map. * @param {Function} fn * @return {Function} */ function normalizeNamespace (fn) { return function (namespace, map) { if (typeof namespace !== 'string') { map = namespace; namespace = ''; } else if (namespace.charAt(namespace.length - 1) !== '/') { namespace += '/'; } return fn(namespace, map) } } /** * Search a special module from store by namespace. if module not exist, print error message. * @param {Object} store * @param {String} helper * @param {String} namespace * @return {Object} */ function getModuleByNamespace (store, helper, namespace) { var module = store._modulesNamespaceMap[namespace]; if (( true) && !module) { console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace)); } return module } // Credits: borrowed code from fcomb/redux-logger function createLogger (ref) { if ( ref === void 0 ) ref = {}; var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true; var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; }; var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; }; var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; }; var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; }; var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; }; var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true; var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true; var logger = ref.logger; if ( logger === void 0 ) logger = console; return function (store) { var prevState = deepCopy(store.state); if (typeof logger === 'undefined') { return } if (logMutations) { store.subscribe(function (mutation, state) { var nextState = deepCopy(state); if (filter(mutation, prevState, nextState)) { var formattedTime = getFormattedTime(); var formattedMutation = mutationTransformer(mutation); var message = "mutation " + (mutation.type) + formattedTime; startMessage(logger, message, collapsed); logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState)); logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation); logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState)); endMessage(logger); } prevState = nextState; }); } if (logActions) { store.subscribeAction(function (action, state) { if (actionFilter(action, state)) { var formattedTime = getFormattedTime(); var formattedAction = actionTransformer(action); var message = "action " + (action.type) + formattedTime; startMessage(logger, message, collapsed); logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction); endMessage(logger); } }); } } } function startMessage (logger, message, collapsed) { var startMessage = collapsed ? logger.groupCollapsed : logger.group; // render try { startMessage.call(logger, message); } catch (e) { logger.log(message); } } function endMessage (logger) { try { logger.groupEnd(); } catch (e) { logger.log('—— log end ——'); } } function getFormattedTime () { var time = new Date(); return (" @ " + (pad(time.getHours(), 2)) + ":" + (pad(time.getMinutes(), 2)) + ":" + (pad(time.getSeconds(), 2)) + "." + (pad(time.getMilliseconds(), 3))) } function repeat (str, times) { return (new Array(times + 1)).join(str) } function pad (num, maxLength) { return repeat('0', maxLength - num.toString().length) + num } var index_cjs = { Store: Store, install: install, version: '3.6.2', mapState: mapState, mapMutations: mapMutations, mapGetters: mapGetters, mapActions: mapActions, createNamespacedHelpers: createNamespacedHelpers, createLogger: createLogger }; module.exports = index_cjs; /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 93))) /***/ }), /* 156 */ /*!*************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/store/modules/user.js ***! \*************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/config */ 153));\nvar _storage = _interopRequireDefault(__webpack_require__(/*! @/utils/storage */ 157));\nvar _constant = _interopRequireDefault(__webpack_require__(/*! @/utils/constant */ 158));\nvar _login = __webpack_require__(/*! @/api/login */ 159);\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\nvar baseUrl = _config.default.baseUrl;\nvar user = {\n state: {\n id: 0,\n // 用户编号\n name: _storage.default.get(_constant.default.name),\n avatar: _storage.default.get(_constant.default.avatar),\n roles: _storage.default.get(_constant.default.roles),\n permissions: _storage.default.get(_constant.default.permissions)\n },\n mutations: {\n SET_ID: function SET_ID(state, id) {\n state.id = id;\n },\n SET_NAME: function SET_NAME(state, name) {\n state.name = name;\n _storage.default.set(_constant.default.name, name);\n },\n SET_AVATAR: function SET_AVATAR(state, avatar) {\n state.avatar = avatar;\n _storage.default.set(_constant.default.avatar, avatar);\n },\n SET_ROLES: function SET_ROLES(state, roles) {\n state.roles = roles;\n _storage.default.set(_constant.default.roles, roles);\n },\n SET_PERMISSIONS: function SET_PERMISSIONS(state, permissions) {\n state.permissions = permissions;\n _storage.default.set(_constant.default.permissions, permissions);\n }\n },\n actions: {\n // 登录\n Login: function Login(_ref, userInfo) {\n var commit = _ref.commit;\n var username = userInfo.username.trim();\n var password = userInfo.password;\n var captchaVerification = userInfo.captchaVerification;\n return new Promise(function (resolve, reject) {\n (0, _login.login)(username, password, captchaVerification).then(function (res) {\n res = res.data;\n // 设置 token\n (0, _auth.setToken)(res);\n resolve();\n }).catch(function (error) {\n reject(error);\n });\n });\n },\n // 获取用户信息\n GetInfo: function GetInfo(_ref2) {\n var commit = _ref2.commit,\n state = _ref2.state;\n return new Promise(function (resolve, reject) {\n (0, _login.getInfo)().then(function (res) {\n res = res.data; // 读取 data 数据\n var user = res.user;\n var avatar = user == null || user.avatar === \"\" || user.avatar == null ? __webpack_require__(/*! @/static/images/profile.jpg */ 164) : user.avatar;\n var nickname = user == null || user.nickname === \"\" || user.nickname == null ? \"\" : user.nickname;\n if (res.roles && res.roles.length > 0) {\n commit('SET_ROLES', res.roles);\n commit('SET_PERMISSIONS', res.permissions);\n } else {\n commit('SET_ROLES', ['ROLE_DEFAULT']);\n }\n commit('SET_NAME', nickname);\n commit('SET_AVATAR', avatar);\n resolve(res);\n }).catch(function (error) {\n reject(error);\n });\n });\n },\n // 退出系统\n LogOut: function LogOut(_ref3) {\n var commit = _ref3.commit,\n state = _ref3.state;\n return new Promise(function (resolve, reject) {\n (0, _login.logout)(state.token).then(function () {\n commit('SET_ROLES', []);\n commit('SET_PERMISSIONS', []);\n (0, _auth.removeToken)();\n _storage.default.clean();\n resolve();\n }).catch(function (error) {\n reject(error);\n });\n });\n }\n }\n};\nvar _default = user;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvbW9kdWxlcy91c2VyLmpzIl0sIm5hbWVzIjpbImJhc2VVcmwiLCJjb25maWciLCJ1c2VyIiwic3RhdGUiLCJpZCIsIm5hbWUiLCJzdG9yYWdlIiwiZ2V0IiwiY29uc3RhbnQiLCJhdmF0YXIiLCJyb2xlcyIsInBlcm1pc3Npb25zIiwibXV0YXRpb25zIiwiU0VUX0lEIiwiU0VUX05BTUUiLCJzZXQiLCJTRVRfQVZBVEFSIiwiU0VUX1JPTEVTIiwiU0VUX1BFUk1JU1NJT05TIiwiYWN0aW9ucyIsIkxvZ2luIiwidXNlckluZm8iLCJjb21taXQiLCJ1c2VybmFtZSIsInRyaW0iLCJwYXNzd29yZCIsImNhcHRjaGFWZXJpZmljYXRpb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImxvZ2luIiwidGhlbiIsInJlcyIsImRhdGEiLCJzZXRUb2tlbiIsImNhdGNoIiwiZXJyb3IiLCJHZXRJbmZvIiwiZ2V0SW5mbyIsInJlcXVpcmUiLCJuaWNrbmFtZSIsImxlbmd0aCIsIkxvZ091dCIsImxvZ291dCIsInRva2VuIiwicmVtb3ZlVG9rZW4iLCJjbGVhbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxPQUFPLEdBQUdDLGVBQU0sQ0FBQ0QsT0FBTztBQUU5QixJQUFNRSxJQUFJLEdBQUc7RUFDWEMsS0FBSyxFQUFFO0lBQ0xDLEVBQUUsRUFBRSxDQUFDO0lBQUU7SUFDUEMsSUFBSSxFQUFFQyxnQkFBTyxDQUFDQyxHQUFHLENBQUNDLGlCQUFRLENBQUNILElBQUksQ0FBQztJQUNoQ0ksTUFBTSxFQUFFSCxnQkFBTyxDQUFDQyxHQUFHLENBQUNDLGlCQUFRLENBQUNDLE1BQU0sQ0FBQztJQUNwQ0MsS0FBSyxFQUFFSixnQkFBTyxDQUFDQyxHQUFHLENBQUNDLGlCQUFRLENBQUNFLEtBQUssQ0FBQztJQUNsQ0MsV0FBVyxFQUFFTCxnQkFBTyxDQUFDQyxHQUFHLENBQUND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Q0FBQ08sS0FBSyxDQUFDLFVBQUFDLEtBQUssRUFBSTtVQUNoQlAsTUFBTSxDQUFDTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7TUFDSixDQUFDLENBQUM7SUFDSjtFQUNGO0FBQ0YsQ0FBQztBQUFBLGVBRWNsQyxJQUFJO0FBQUEiLCJmaWxlIjoiMTU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tICdAL2NvbmZpZydcclxuaW1wb3J0IHN0b3JhZ2UgZnJvbSAnQC91dGlscy9zdG9yYWdlJ1xyXG5pbXBvcnQgY29uc3RhbnQgZnJvbSAnQC91dGlscy9jb25zdGFudCdcclxuaW1wb3J0IHsgbG9naW4sIGxvZ291dCwgZ2V0SW5mbyB9IGZyb20gJ0AvYXBpL2xvZ2luJ1xyXG5pbXBvcnQgeyBzZXRUb2tlbiwgcmVtb3ZlVG9rZW4gfSBmcm9tICdAL3V0aWxzL2F1dGgnXHJcblxyXG5jb25zdCBiYXNlVXJsID0gY29uZmlnLmJhc2VVcmxcclxuXHJcbmNvbnN0IHVzZXIgPSB7XHJcbiAgc3RhdGU6IHtcclxuICAgIGlkOiAwLCAvLyDnlKjmiLfnvJblj7dcclxuICAgIG5hbWU6IHN0b3JhZ2UuZ2V0KGNvbnN0YW50Lm5hbWUpLFxyXG4gICAgYXZhdGFyOiBzdG9yYWdlLmdldChjb25zdGFudC5hdmF0YXIpLFxyXG4gICAgcm9sZXM6IHN0b3JhZ2UuZ2V0KGNvbnN0YW50LnJvbGVzKSxcclxuICAgIHBlcm1pc3Npb25zOiBzdG9yYWdlLmdldChjb25zdGFudC5wZXJtaXNzaW9ucylcclxuICB9LFxyXG5cclxuICBtdXRhdGlvbnM6IHtcclxuICAgIFNFVF9JRDogKHN0YXRlLCBpZCkgPT4ge1xyXG4gICAgICBzdGF0ZS5pZCA9IGlkXHJcbiAgICB9LFxyXG4gICAgU0VUX05BTUU6IChzdGF0ZSwgbmFtZSkgPT4ge1xyXG4gICAgICBzdGF0ZS5uYW1lID0gbmFtZVxyXG4gICAgICBzdG9yYWdlLnNldChjb25zdGFudC5uYW1lLCBuYW1lKVxyXG4gICAgfSxcclxuICAgIFNFVF9BVkFUQVI6IChzdGF0ZSwgYXZhdGFyKSA9PiB7XHJcbiAgICAgIHN0YXRlLmF2YXRhciA9IGF2YXRhclxyXG4gICAgICBzdG9yYWdlLnNldChjb25zdGFudC5hdmF0YXIsIGF2YXRhcilcclxuICAgIH0sXHJcbiAgICBTRVRfUk9MRVM6IChzdGF0ZSwgcm9sZXMpID0+IHtcclxuICAgICAgc3RhdGUucm9sZXMgPSByb2xlc1xyXG4gICAgICBzdG9yYWdlLnNldChjb25zdGFudC5yb2xlcywgcm9sZXMpXHJcbiAgICB9LFxyXG4gICAgU0VUX1BFUk1JU1NJT05TOiAoc3RhdGUsIHBlcm1pc3Npb25zKSA9PiB7XHJcbiAgICAgIHN0YXRlLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnNcclxuICAgICAgc3RvcmFnZS5zZXQoY29uc3RhbnQucGVybWlzc2lvbnMsIHBlcm1pc3Npb25zKVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGFjdGlvbnM6IHtcclxuICAgIC8vIOeZu+W9lVxyXG4gICAgTG9naW4oeyBjb21taXQgfSwgdXNlckluZm8pIHtcclxuICAgICAgY29uc3QgdXNlcm5hbWUgPSB1c2VySW5mby51c2VybmFtZS50cmltKClcclxuICAgICAgY29uc3QgcGFzc3dvcmQgPSB1c2VySW5mby5wYXNzd29yZFxyXG4gICAgICBjb25zdCBjYXB0Y2hhVmVyaWZpY2F0aW9uID0gdXNlckluZm8uY2FwdGNoYVZlcmlmaWNhdGlvblxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCwgY2FwdGNoYVZlcmlmaWNhdGlvbikudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgcmVzID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAvLyDorr7nva4gdG9rZW5cclxuICAgICAgICAgIHNldFRva2VuKHJlcylcclxuICAgICAgICAgIHJlc29sdmUoKVxyXG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcilcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDojrflj5bnlKjmiLfkv6Hmga9cclxuICAgIEdldEluZm8oeyBjb21taXQsIHN0YXRlIH0pIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBnZXRJbmZvKCkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgcmVzID0gcmVzLmRhdGE7IC8vIOivu+WPliBkYXRhIOaVsOaNrlxyXG4gICAgICAgICAgY29uc3QgdXNlciA9IHJlcy51c2VyXHJcbiAgICAgICAgICBjb25zdCBhdmF0YXIgPSAodXNlciA9PSBudWxsIHx8IHVzZXIuYXZhdGFyID09PSBcIlwiIHx8IHVzZXIuYXZhdGFyID09IG51bGwpID8gcmVxdWlyZShcIkAvc3RhdGljL2ltYWdlcy9wcm9maWxlLmpwZ1wiKSA6IHVzZXIuYXZhdGFyXHJcbiAgICAgICAgICBjb25zdCBuaWNrbmFtZSA9ICh1c2VyID09IG51bGwgfHwgdXNlci5uaWNrbmFtZSA9PT0gXCJcIiB8fCB1c2VyLm5pY2tuYW1lID09IG51bGwpID8gXCJcIiA6IHVzZXIubmlja25hbWVcclxuICAgICAgICAgIGlmIChyZXMucm9sZXMgJiYgcmVzLnJvbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29tbWl0KCdTRVRfUk9MRVMnLCByZXMucm9sZXMpXHJcbiAgICAgICAgICAgIGNvbW1pdCgnU0VUX1BFUk1JU1NJT05TJywgcmVzLnBlcm1pc3Npb25zKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29tbWl0KCdTRVRfUk9MRVMnLCBbJ1JPTEVfREVGQVVMVCddKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29tbWl0KCdTRVRfTkFNRScsIG5pY2tuYW1lKVxyXG4gICAgICAgICAgY29tbWl0KCdTRVRfQVZBVEFSJywgYXZhdGFyKVxyXG4gICAgICAgICAgcmVzb2x2ZShyZXMpXHJcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIOmAgOWHuuezu+e7n1xyXG4gICAgTG9nT3V0KHsgY29tbWl0LCBzdGF0ZSB9KSB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgbG9nb3V0KHN0YXRlLnRva2VuKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIGNvbW1pdCgnU0VUX1JPTEVTJywgW10pXHJcbiAgICAgICAgICBjb21taXQoJ1NFVF9QRVJNSVNTSU9OUycsIFtdKVxyXG4gICAgICAgICAgcmVtb3ZlVG9rZW4oKVxyXG4gICAgICAgICAgc3RvcmFnZS5jbGVhbigpXHJcbiAgICAgICAgICByZXNvbHZlKClcclxuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHVzZXJcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///156\n"); /***/ }), /* 157 */ /*!********************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/utils/storage.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _constant = _interopRequireDefault(__webpack_require__(/*! ./constant */ 158));\n// 存储变量名\nvar storageKey = 'storage_data';\n\n// 存储节点变量名\nvar storageNodeKeys = [_constant.default.avatar, _constant.default.name, _constant.default.roles, _constant.default.permissions];\n\n// 存储的数据\nvar storageData = uni.getStorageSync(storageKey) || {};\nvar storage = {\n set: function set(key, value) {\n if (storageNodeKeys.indexOf(key) != -1) {\n var tmp = uni.getStorageSync(storageKey);\n tmp = tmp ? tmp : {};\n tmp[key] = value;\n uni.setStorageSync(storageKey, tmp);\n }\n },\n get: function get(key) {\n return storageData[key] || \"\";\n },\n remove: function remove(key) {\n delete storageData[key];\n uni.setStorageSync(storageKey, storageData);\n },\n clean: function clean() {\n uni.removeStorageSync(storageKey);\n }\n};\nvar _default = storage;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvc3RvcmFnZS5qcyJdLCJuYW1lcyI6WyJzdG9yYWdlS2V5Iiwic3RvcmFnZU5vZGVLZXlzIiwiY29uc3RhbnQiLCJhdmF0YXIiLCJuYW1lIiwicm9sZXMiLCJwZXJtaXNzaW9ucyIsInN0b3JhZ2VEYXRhIiwidW5pIiwiZ2V0U3RvcmFnZVN5bmMiLCJzdG9yYWdlIiwic2V0Iiwia2V5IiwidmFsdWUiLCJpbmRleE9mIiwidG1wIiwic2V0U3RvcmFnZVN5bmMiLCJnZXQiLCJyZW1vdmUiLCJjbGVhbiIsInJlbW92ZVN0b3JhZ2VTeW5jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFFQTtBQUNBLElBQUlBLFVBQVUsR0FBRyxjQUFjOztBQUUvQjtBQUNBLElBQUlDLGVBQWUsR0FBRyxDQUFDQyxpQkFBUSxDQUFDQyxNQUFNLEVBQUVELGlCQUFRLENBQUNFLElBQUksRUFBRUYsaUJBQVEsQ0FBQ0csS0FBSyxFQUFFSCxpQkFBUSxDQUFDSSxXQUFXLENBQUM7O0FBRTVGO0FBQ0EsSUFBSUMsV0FBVyxHQUFHQyxHQUFHLENBQUNDLGNBQWMsQ0FBQ1QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXRELElBQU1VLE9BQU8sR0FBRztFQUNkQyxHQUFHLEVBQUUsYUFBU0MsR0FBRyxFQUFFQyxLQUFLLEVBQUU7SUFDeEIsSUFBSVosZUFBZSxDQUFDYSxPQUFPLENBQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO01BQ3RDLElBQUlHLEdBQUcsR0FBR1AsR0FBRyxDQUFDQyxjQUFjLENBQUNULFVBQVUsQ0FBQztNQUN4Q2UsR0FBRyxHQUFHQSxHQUFHLEdBQUdBLEdBQUcsR0FBRyxDQUFDLENBQUM7TUFDcEJBLEdBQUcsQ0FBQ0gsR0FBRyxDQUFDLEdBQUdDLEtBQUs7TUFDaEJMLEdBQUcsQ0FBQ1EsY0FBYyxDQUFDaEIsVUFBVSxFQUFFZSxHQUFHLENBQUM7SUFDckM7RUFDRixDQUFDO0VBQ0RFLEdBQUcsRUFBRSxhQUFTTCxHQUFHLEVBQUU7SUFDakIsT0FBT0wsV0FBVyxDQUFDSyxHQUFHLENBQUMsSUFBSSxFQUFFO0VBQy9CLENBQUM7RUFDRE0sTUFBTSxFQUFFLGdCQUFTTixHQUFHLEVBQUU7SUFDcEIsT0FBT0wsV0FBVyxDQUFDSyxHQUFHLENBQUM7SUFDdkJKLEdBQUcsQ0FBQ1EsY0FBYyxDQUFDaEIsVUFBVSxFQUFFTyxXQUFXLENBQUM7RUFDN0MsQ0FBQztFQUNEWSxLQUFLLEVBQUUsaUJBQVc7SUFDaEJYLEdBQUcsQ0FBQ1ksaUJBQWlCLENBQUNwQixVQUFVLENBQUM7RUFDbkM7QUFDRixDQUFDO0FBQUEsZUFFY1UsT0FBTztBQUFBIiwiZmlsZSI6IjE1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tICcuL2NvbnN0YW50J1xyXG5cclxuLy8g5a2Y5YKo5Y+Y6YeP5ZCNXHJcbmxldCBzdG9yYWdlS2V5ID0gJ3N0b3JhZ2VfZGF0YSdcclxuXHJcbi8vIOWtmOWCqOiKgueCueWPmOmHj+WQjVxyXG5sZXQgc3RvcmFnZU5vZGVLZXlzID0gW2NvbnN0YW50LmF2YXRhciwgY29uc3RhbnQubmFtZSwgY29uc3RhbnQucm9sZXMsIGNvbnN0YW50LnBlcm1pc3Npb25zXVxyXG5cclxuLy8g5a2Y5YKo55qE5pWw5o2uXHJcbmxldCBzdG9yYWdlRGF0YSA9IHVuaS5nZXRTdG9yYWdlU3luYyhzdG9yYWdlS2V5KSB8fCB7fVxyXG5cclxuY29uc3Qgc3RvcmFnZSA9IHtcclxuICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcclxuICAgIGlmIChzdG9yYWdlTm9kZUtleXMuaW5kZXhPZihrZXkpICE9IC0xKSB7XHJcbiAgICAgIGxldCB0bXAgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoc3RvcmFnZUtleSlcclxuICAgICAgdG1wID0gdG1wID8gdG1wIDoge31cclxuICAgICAgdG1wW2tleV0gPSB2YWx1ZVxyXG4gICAgICB1bmkuc2V0U3RvcmFnZVN5bmMoc3RvcmFnZUtleSwgdG1wKVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZ2V0OiBmdW5jdGlvbihrZXkpIHtcclxuICAgIHJldHVybiBzdG9yYWdlRGF0YVtrZXldIHx8IFwiXCJcclxuICB9LFxyXG4gIHJlbW92ZTogZnVuY3Rpb24oa2V5KSB7XHJcbiAgICBkZWxldGUgc3RvcmFnZURhdGFba2V5XVxyXG4gICAgdW5pLnNldFN0b3JhZ2VTeW5jKHN0b3JhZ2VLZXksIHN0b3JhZ2VEYXRhKVxyXG4gIH0sXHJcbiAgY2xlYW46IGZ1bmN0aW9uKCkge1xyXG4gICAgdW5pLnJlbW92ZVN0b3JhZ2VTeW5jKHN0b3JhZ2VLZXkpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBzdG9yYWdlXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///157\n"); /***/ }), /* 158 */ /*!*********************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/utils/constant.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;\nvar constant = {\n avatar: 'vuex_avatar',\n name: 'vuex_name',\n roles: 'vuex_roles',\n permissions: 'vuex_permissions'\n};\nvar _default = constant;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvY29uc3RhbnQuanMiXSwibmFtZXMiOlsiY29uc3RhbnQiLCJhdmF0YXIiLCJuYW1lIiwicm9sZXMiLCJwZXJtaXNzaW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTUEsUUFBUSxHQUFHO0VBQ2RDLE1BQU0sRUFBRSxhQUFhO0VBQ3JCQyxJQUFJLEVBQUUsV0FBVztFQUNqQkMsS0FBSyxFQUFFLFlBQVk7RUFDbkJDLFdBQVcsRUFBRTtBQUNmLENBQUM7QUFBQSxlQUVjSixRQUFRO0FBQUEiLCJmaWxlIjoiMTU4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29uc3RhbnQgPSB7XHJcbiAgIGF2YXRhcjogJ3Z1ZXhfYXZhdGFyJyxcclxuICAgbmFtZTogJ3Z1ZXhfbmFtZScsXHJcbiAgIHJvbGVzOiAndnVleF9yb2xlcycsXHJcbiAgIHBlcm1pc3Npb25zOiAndnVleF9wZXJtaXNzaW9ucydcclxuIH1cclxuXHJcbiBleHBvcnQgZGVmYXVsdCBjb25zdGFudFxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///158\n"); /***/ }), /* 159 */ /*!****************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/api/login.js ***! \****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getInfo = getInfo;\nexports.login = login;\nexports.logout = logout;\nvar _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 160));\n// 登录方法\nfunction login(username, password, captchaVerification) {\n var data = {\n username: username,\n password: password,\n captchaVerification: captchaVerification\n };\n return (0, _request.default)({\n url: '/system/auth/login',\n headers: {\n isToken: false\n },\n 'method': 'POST',\n 'data': data\n });\n}\n\n// 获取用户详细信息\nfunction getInfo() {\n return (0, _request.default)({\n url: '/system/auth/get-permission-info',\n 'method': 'GET'\n });\n}\n\n// 退出方法\nfunction logout() {\n return (0, _request.default)({\n url: '/system/auth/logout',\n 'method': 'POST'\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vYXBpL2xvZ2luLmpzIl0sIm5hbWVzIjpbImxvZ2luIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImNhcHRjaGFWZXJpZmljYXRpb24iLCJkYXRhIiwicmVxdWVzdCIsInVybCIsImhlYWRlcnMiLCJpc1Rva2VuIiwiZ2V0SW5mbyIsImxvZ291dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNPLFNBQVNBLEtBQUssQ0FBQ0MsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLG1CQUFtQixFQUFFO0VBQzlELElBQU1DLElBQUksR0FBRztJQUNaSCxRQUFRLEVBQVJBLFFBQVE7SUFDUkMsUUFBUSxFQUFSQSxRQUFRO0lBQ1JDLG1CQUFtQixFQUFuQkE7RUFDRCxDQUFDO0VBQ0QsT0FBTyxJQUFBRSxnQkFBTyxFQUFDO0lBQ2RDLEdBQUcsRUFBRSxvQkFBb0I7SUFDekJDLE9BQU8sRUFBRTtNQUNSQyxPQUFPLEVBQUU7SUFDVixDQUFDO0lBQ0QsUUFBUSxFQUFFLE1BQU07SUFDaEIsTUFBTSxFQUFFSjtFQUNULENBQUMsQ0FBQztBQUNIOztBQUVBO0FBQ08sU0FBU0ssT0FBTyxHQUFHO0VBQ3pCLE9BQU8sSUFBQUosZ0JBQU8sRUFBQztJQUNkQyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQztBQUNIOztBQUVBO0FBQ08sU0FBU0ksTUFBTSxHQUFHO0VBQ3hCLE9BQU8sSUFBQUwsZ0JBQU8sRUFBQztJQUNkQyxHQUFHLEVBQUUscUJBQXFCO0lBQzFCLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQztBQUNIIiwiZmlsZSI6IjE1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZXF1ZXN0IGZyb20gJ0AvdXRpbHMvcmVxdWVzdCdcclxuXHJcbi8vIOeZu+W9leaWueazlVxyXG5leHBvcnQgZnVuY3Rpb24gbG9naW4odXNlcm5hbWUsIHBhc3N3b3JkLCBjYXB0Y2hhVmVyaWZpY2F0aW9uKSB7XHJcblx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdHVzZXJuYW1lLFxyXG5cdFx0cGFzc3dvcmQsXHJcblx0XHRjYXB0Y2hhVmVyaWZpY2F0aW9uXHJcblx0fVxyXG5cdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdHVybDogJy9zeXN0ZW0vYXV0aC9sb2dpbicsXHJcblx0XHRoZWFkZXJzOiB7XHJcblx0XHRcdGlzVG9rZW46IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0J21ldGhvZCc6ICdQT1NUJyxcclxuXHRcdCdkYXRhJzogZGF0YVxyXG5cdH0pXHJcbn1cclxuXHJcbi8vIOiOt+WPlueUqOaIt+ivpue7huS/oeaBr1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5mbygpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6ICcvc3lzdGVtL2F1dGgvZ2V0LXBlcm1pc3Npb24taW5mbycsXHJcblx0XHQnbWV0aG9kJzogJ0dFVCdcclxuXHR9KVxyXG59XHJcblxyXG4vLyDpgIDlh7rmlrnms5VcclxuZXhwb3J0IGZ1bmN0aW9uIGxvZ291dCgpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6ICcvc3lzdGVtL2F1dGgvbG9nb3V0JyxcclxuXHRcdCdtZXRob2QnOiAnUE9TVCdcclxuXHR9KVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///159\n"); /***/ }), /* 160 */ /*!********************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/utils/request.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95));\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 154));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/config */ 153));\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\nvar _errorCode = _interopRequireDefault(__webpack_require__(/*! @/utils/errorCode */ 162));\nvar _common = __webpack_require__(/*! @/utils/common */ 163);\nvar timeout = 10000;\nvar baseUrl = _config.default.baseUrl + _config.default.baseApi;\nvar request = function request(config) {\n // 是否需要设置 token\n var isToken = (config.headers || {}).isToken === false;\n config.header = config.header || {};\n if ((0, _auth.getAccessToken)() && !isToken) {\n config.header['Authorization'] = 'Bearer ' + (0, _auth.getAccessToken)();\n }\n // 设置租户 TODO 芋艿:强制 1 先\n config.header['tenant-id'] = '1';\n // get请求映射params参数\n if (config.params) {\n var url = config.url + '?' + (0, _common.tansParams)(config.params);\n url = url.slice(0, -1);\n config.url = url;\n }\n return new Promise(function (resolve, reject) {\n uni.request({\n method: config.method || 'get',\n timeout: config.timeout || timeout,\n url: config.baseUrl || baseUrl + config.url,\n data: config.data,\n // header: config.header,\n header: config.header,\n dataType: 'json'\n }).then(function (response) {\n var _response = (0, _slicedToArray2.default)(response, 2),\n error = _response[0],\n res = _response[1];\n if (error) {\n (0, _common.toast)('后端接口连接异常');\n reject('后端接口连接异常');\n return;\n }\n var code = res.data.code || 200;\n var msg = _errorCode.default[code] || res.data.msg || _errorCode.default['default'];\n if (code === 401) {\n (0, _common.showConfirm)('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(function (res) {\n if (res.confirm) {\n _store.default.dispatch('LogOut').then(function (res) {\n uni.reLaunch({\n url: '/pages/login'\n });\n });\n }\n });\n reject('无效的会话,或者会话已过期,请重新登录。');\n } else if (code === 500) {\n (0, _common.toast)(msg);\n reject('500');\n } else if (code !== 200) {\n (0, _common.toast)(msg);\n reject(code);\n }\n resolve(res.data);\n }).catch(function (error) {\n var message = error.message;\n if (message === 'Network Error') {\n message = '后端接口连接异常';\n } else if (message.includes('timeout')) {\n message = '系统接口请求超时';\n } else if (message.includes('Request failed with status code')) {\n message = '系统接口' + message.substr(message.length - 3) + '异常';\n }\n (0, _common.toast)(message);\n reject(error);\n });\n });\n};\nvar _default = request;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvcmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJ0aW1lb3V0IiwiYmFzZVVybCIsImNvbmZpZyIsImJhc2VBcGkiLCJyZXF1ZXN0IiwiaXNUb2tlbiIsImhlYWRlcnMiLCJoZWFkZXIiLCJnZXRBY2Nlc3NUb2tlbiIsInBhcmFtcyIsInVybCIsInRhbnNQYXJhbXMiLCJzbGljZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidW5pIiwibWV0aG9kIiwiZGF0YSIsImRhdGFUeXBlIiwidGhlbiIsInJlc3BvbnNlIiwiZXJyb3IiLCJyZXMiLCJ0b2FzdCIsImNvZGUiLCJtc2ciLCJlcnJvckNvZGUiLCJzaG93Q29uZmlybSIsImNvbmZpcm0iLCJzdG9yZSIsImRpc3BhdGNoIiwicmVMYXVuY2giLCJjYXRjaCIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsInN1YnN0ciIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBSUEsT0FBTyxHQUFHLEtBQUs7QUFDbkIsSUFBTUMsT0FBTyxHQUFHQyxlQUFNLENBQUNELE9BQU8sR0FBR0MsZUFBTSxDQUFDQyxPQUFPO0FBRS9DLElBQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFPLENBQUdGLE1BQU0sRUFBSTtFQUN4QjtFQUNBLElBQU1HLE9BQU8sR0FBRyxDQUFDSCxNQUFNLENBQUNJLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRUQsT0FBTyxLQUFLLEtBQUs7RUFDeERILE1BQU0sQ0FBQ0ssTUFBTSxHQUFHTCxNQUFNLENBQUNLLE1BQU0sSUFBSSxDQUFDLENBQUM7RUFDbkMsSUFBSSxJQUFBQyxvQkFBYyxHQUFFLElBQUksQ0FBQ0gsT0FBTyxFQUFFO0lBQ2hDSCxNQUFNLENBQUNLLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLEdBQUcsSUFBQUMsb0JBQWMsR0FBRTtFQUMvRDtFQUNBO0VBQ0FOLE1BQU0sQ0FBQ0ssTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEdBQUc7RUFDaEM7RUFDQSxJQUFJTCxNQUFNLENBQUNPLE1BQU0sRUFBRTtJQUNqQixJQUFJQyxHQUFHLEdBQUdSLE1BQU0sQ0FBQ1EsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFBQyxrQkFBVSxFQUFDVCxNQUFNLENBQUNPLE1BQU0sQ0FBQztJQUN0REMsR0FBRyxHQUFHQSxHQUFHLENBQUNFLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEJWLE1BQU0sQ0FBQ1EsR0FBRyxHQUFHQSxHQUFHO0VBQ2xCO0VBQ0EsT0FBTyxJQUFJRyxPQUFPLENBQUMsVUFBQ0MsT0FBTyxFQUFFQyxNQUFNLEVBQUs7SUFDdENDLEdBQUcsQ0FBQ1osT0FBTyxDQUFDO01BQ1JhLE1BQU0sRUFBRWYsTUFBTSxDQUFDZSxNQUFNLElBQUksS0FBSztNQUM5QmpCLE9BQU8sRUFBRUUsTUFBTSxDQUFDRixPQUFPLElBQUtBLE9BQU87TUFDbkNVLEdBQUcsRUFBRVIsTUFBTSxDQUFDRCxPQUFPLElBQUlBLE9BQU8sR0FBR0MsTUFBTSxDQUFDUSxHQUFHO01BQzNDUSxJQUFJLEVBQUVoQixNQUFNLENBQUNnQixJQUFJO01BQ2pCO01BQ0FYLE1BQU0sRUFBRUwsTUFBTSxDQUFDSyxNQUFNO01BQ3JCWSxRQUFRLEVBQUU7SUFDWixDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFDLFVBQUFDLFFBQVEsRUFBSTtNQUNsQiw2Q0FBbUJBLFFBQVE7UUFBdEJDLEtBQUs7UUFBRUMsR0FBRztNQUNmLElBQUlELEtBQUssRUFBRTtRQUNULElBQUFFLGFBQUssRUFBQyxVQUFVLENBQUM7UUFDakJULE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDbEI7TUFDRjtNQUNBLElBQU1VLElBQUksR0FBR0YsR0FBRyxDQUFDTCxJQUFJLENBQUNPLElBQUksSUFBSSxHQUFHO01BQ2pDLElBQU1DLEdBQUcsR0FBR0Msa0JBQVMsQ0FBQ0YsSUFBSSxDQUFDLElBQUlGLEdBQUcsQ0FBQ0wsSUFBSSxDQUFDUSxHQUFHLElBQUlDLGtCQUFTLENBQUMsU0FBUyxDQUFDO01BQ25FLElBQUlGLElBQUksS0FBSyxHQUFHLEVBQUU7UUFDaEIsSUFBQUcsbUJBQVcsRUFBQyw0QkFBNEIsQ0FBQyxDQUFDUixJQUFJLENBQUMsVUFBQUcsR0FBRyxFQUFJO1VBQ3BELElBQUlBLEdBQUcsQ0FBQ00sT0FBTyxFQUFFO1lBQ2ZDLGNBQUssQ0FBQ0MsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDWCxJQUFJLENBQUMsVUFBQUcsR0FBRyxFQUFJO2NBQ25DUCxHQUFHLENBQUNnQixRQUFRLENBQUM7Z0JBQUV0QixHQUFHLEVBQUU7Y0FBZSxDQUFDLENBQUM7WUFDdkMsQ0FBQyxDQUFDO1VBQ0o7UUFDRixDQUFDLENBQUM7UUFDRkssTUFBTSxDQUFDLHNCQUFzQixDQUFDO01BQ2hDLENBQUMsTUFBTSxJQUFJVSxJQUFJLEtBQUssR0FBRyxFQUFFO1FBQ3ZCLElBQUFELGFBQUssRUFBQ0UsR0FBRyxDQUFDO1FBQ1ZYLE1BQU0sQ0FBQyxLQUFLLENBQUM7TUFDZixDQUFDLE1BQU0sSUFBSVUsSUFBSSxLQUFLLEdBQUcsRUFBRTtRQUN2QixJQUFBRCxhQUFLLEVBQUNFLEdBQUcsQ0FBQztRQUNWWCxNQUFNLENBQUNVLElBQUksQ0FBQztNQUNkO01BQ0FYLE9BQU8sQ0FBQ1MsR0FBRyxDQUFDTCxJQUFJLENBQUM7SUFDbkIsQ0FBQyxDQUFDLENBQ0RlLEtBQUssQ0FBQyxVQUFBWCxLQUFLLEVBQUk7TUFDZCxJQUFNWSxPQUFPLEdBQUtaLEtBQUssQ0FBakJZLE9BQU87TUFDYixJQUFJQSxPQUFPLEtBQUssZUFBZSxFQUFFO1FBQy9CQSxPQUFPLEdBQUcsVUFBVTtNQUN0QixDQUFDLE1BQU0sSUFBSUEsT0FBTyxDQUFDQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7UUFDdENELE9BQU8sR0FBRyxVQUFVO01BQ3RCLENBQUMsTUFBTSxJQUFJQSxPQUFPLENBQUNDLFFBQVEsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUFFO1FBQzlERCxPQUFPLEdBQUcsTUFBTSxHQUFHQSxPQUFPLENBQUNFLE1BQU0sQ0FBQ0YsT0FBTyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSTtNQUM5RDtNQUNBLElBQUFiLGFBQUssRUFBQ1UsT0FBTyxDQUFDO01BQ2RuQixNQUFNLENBQUNPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztFQUNOLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQSxlQUVjbEIsT0FBTztBQUFBIiwiZmlsZSI6IjE2MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdG9yZSBmcm9tICdAL3N0b3JlJ1xyXG5pbXBvcnQgY29uZmlnIGZyb20gJ0AvY29uZmlnJ1xyXG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlbiB9IGZyb20gJ0AvdXRpbHMvYXV0aCdcclxuaW1wb3J0IGVycm9yQ29kZSBmcm9tICdAL3V0aWxzL2Vycm9yQ29kZSdcclxuaW1wb3J0IHsgdG9hc3QsIHNob3dDb25maXJtLCB0YW5zUGFyYW1zIH0gZnJvbSAnQC91dGlscy9jb21tb24nXHJcblxyXG5sZXQgdGltZW91dCA9IDEwMDAwXHJcbmNvbnN0IGJhc2VVcmwgPSBjb25maWcuYmFzZVVybCArIGNvbmZpZy5iYXNlQXBpO1xyXG5cclxuY29uc3QgcmVxdWVzdCA9IGNvbmZpZyA9PiB7XHJcbiAgLy8g5piv5ZCm6ZyA6KaB6K6+572uIHRva2VuXHJcbiAgY29uc3QgaXNUb2tlbiA9IChjb25maWcuaGVhZGVycyB8fCB7fSkuaXNUb2tlbiA9PT0gZmFsc2VcclxuICBjb25maWcuaGVhZGVyID0gY29uZmlnLmhlYWRlciB8fCB7fVxyXG4gIGlmIChnZXRBY2Nlc3NUb2tlbigpICYmICFpc1Rva2VuKSB7XHJcbiAgICBjb25maWcuaGVhZGVyWydBdXRob3JpemF0aW9uJ10gPSAnQmVhcmVyICcgKyBnZXRBY2Nlc3NUb2tlbigpXHJcbiAgfVxyXG4gIC8vIOiuvue9ruenn+aItyBUT0RPIOiKi+iJv++8muW8uuWItiAxIOWFiFxyXG4gIGNvbmZpZy5oZWFkZXJbJ3RlbmFudC1pZCddID0gJzEnO1xyXG4gIC8vIGdldOivt+axguaYoOWwhHBhcmFtc+WPguaVsFxyXG4gIGlmIChjb25maWcucGFyYW1zKSB7XHJcbiAgICBsZXQgdXJsID0gY29uZmlnLnVybCArICc/JyArIHRhbnNQYXJhbXMoY29uZmlnLnBhcmFtcylcclxuICAgIHVybCA9IHVybC5zbGljZSgwLCAtMSlcclxuICAgIGNvbmZpZy51cmwgPSB1cmxcclxuICB9XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIHVuaS5yZXF1ZXN0KHtcclxuICAgICAgICBtZXRob2Q6IGNvbmZpZy5tZXRob2QgfHwgJ2dldCcsXHJcbiAgICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgfHwgIHRpbWVvdXQsXHJcbiAgICAgICAgdXJsOiBjb25maWcuYmFzZVVybCB8fCBiYXNlVXJsICsgY29uZmlnLnVybCxcclxuICAgICAgICBkYXRhOiBjb25maWcuZGF0YSxcclxuICAgICAgICAvLyBoZWFkZXI6IGNvbmZpZy5oZWFkZXIsXHJcbiAgICAgICAgaGVhZGVyOiBjb25maWcuaGVhZGVyLFxyXG4gICAgICAgIGRhdGFUeXBlOiAnanNvbidcclxuICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgbGV0IFtlcnJvciwgcmVzXSA9IHJlc3BvbnNlXHJcbiAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICB0b2FzdCgn5ZCO56uv5o6l5Y+j6L+e5o6l5byC5bi4JylcclxuICAgICAgICAgIHJlamVjdCgn5ZCO56uv5o6l5Y+j6L+e5o6l5byC5bi4JylcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb2RlID0gcmVzLmRhdGEuY29kZSB8fCAyMDBcclxuICAgICAgICBjb25zdCBtc2cgPSBlcnJvckNvZGVbY29kZV0gfHwgcmVzLmRhdGEubXNnIHx8IGVycm9yQ29kZVsnZGVmYXVsdCddXHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDQwMSkge1xyXG4gICAgICAgICAgc2hvd0NvbmZpcm0oJ+eZu+W9leeKtuaAgeW3sui/h+acn++8jOaCqOWPr+S7pee7p+e7reeVmeWcqOivpemhtemdou+8jOaIluiAhemHjeaWsOeZu+W9lT8nKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuY29uZmlybSkge1xyXG4gICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCdMb2dPdXQnKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB1bmkucmVMYXVuY2goeyB1cmw6ICcvcGFnZXMvbG9naW4nIH0pXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHJlamVjdCgn5peg5pWI55qE5Lya6K+d77yM5oiW6ICF5Lya6K+d5bey6L+H5pyf77yM6K+36YeN5paw55m75b2V44CCJylcclxuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDUwMCkge1xyXG4gICAgICAgICAgdG9hc3QobXNnKVxyXG4gICAgICAgICAgcmVqZWN0KCc1MDAnKVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSAhPT0gMjAwKSB7XHJcbiAgICAgICAgICB0b2FzdChtc2cpXHJcbiAgICAgICAgICByZWplY3QoY29kZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZShyZXMuZGF0YSlcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICBsZXQgeyBtZXNzYWdlIH0gPSBlcnJvclxyXG4gICAgICAgIGlmIChtZXNzYWdlID09PSAnTmV0d29yayBFcnJvcicpIHtcclxuICAgICAgICAgIG1lc3NhZ2UgPSAn5ZCO56uv5o6l5Y+j6L+e5o6l5byC5bi4J1xyXG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pbmNsdWRlcygndGltZW91dCcpKSB7XHJcbiAgICAgICAgICBtZXNzYWdlID0gJ+ezu+e7n+aOpeWPo+ivt+axgui2heaXtidcclxuICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUnKSkge1xyXG4gICAgICAgICAgbWVzc2FnZSA9ICfns7vnu5/mjqXlj6MnICsgbWVzc2FnZS5zdWJzdHIobWVzc2FnZS5sZW5ndGggLSAzKSArICflvILluLgnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRvYXN0KG1lc3NhZ2UpXHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9KVxyXG4gIH0pXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHJlcXVlc3RcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///160\n"); /***/ }), /* 161 */ /*!*****************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/utils/auth.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getAccessToken = getAccessToken;\nexports.getRefreshToken = getRefreshToken;\nexports.removeToken = removeToken;\nexports.setToken = setToken;\nvar AccessTokenKey = 'ACCESS_TOKEN';\nvar RefreshTokenKey = 'REFRESH_TOKEN';\n\n// ========== Token 相关 ==========\n\nfunction getAccessToken() {\n return uni.getStorageSync(AccessTokenKey);\n}\nfunction getRefreshToken() {\n return uni.getStorageSync(RefreshTokenKey);\n}\nfunction setToken(token) {\n uni.setStorageSync(AccessTokenKey, token.accessToken);\n uni.setStorageSync(RefreshTokenKey, token.refreshToken);\n}\nfunction removeToken() {\n uni.removeStorageSync(AccessTokenKey);\n uni.removeStorageSync(RefreshTokenKey);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvYXV0aC5qcyJdLCJuYW1lcyI6WyJBY2Nlc3NUb2tlbktleSIsIlJlZnJlc2hUb2tlbktleSIsImdldEFjY2Vzc1Rva2VuIiwidW5pIiwiZ2V0U3RvcmFnZVN5bmMiLCJnZXRSZWZyZXNoVG9rZW4iLCJzZXRUb2tlbiIsInRva2VuIiwic2V0U3RvcmFnZVN5bmMiLCJhY2Nlc3NUb2tlbiIsInJlZnJlc2hUb2tlbiIsInJlbW92ZVRva2VuIiwicmVtb3ZlU3RvcmFnZVN5bmMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQU1BLGNBQWMsR0FBRyxjQUFjO0FBQ3JDLElBQU1DLGVBQWUsR0FBRyxlQUFlOztBQUV2Qzs7QUFFTyxTQUFTQyxjQUFjLEdBQUc7RUFDL0IsT0FBT0MsR0FBRyxDQUFDQyxjQUFjLENBQUNKLGNBQWMsQ0FBQztBQUMzQztBQUVPLFNBQVNLLGVBQWUsR0FBRztFQUNoQyxPQUFPRixHQUFHLENBQUNDLGNBQWMsQ0FBQ0gsZUFBZSxDQUFDO0FBQzVDO0FBRU8sU0FBU0ssUUFBUSxDQUFDQyxLQUFLLEVBQUU7RUFDOUJKLEdBQUcsQ0FBQ0ssY0FBYyxDQUFDUixjQUFjLEVBQUVPLEtBQUssQ0FBQ0UsV0FBVyxDQUFDO0VBQ3JETixHQUFHLENBQUNLLGNBQWMsQ0FBQ1AsZUFBZSxFQUFFTSxLQUFLLENBQUNHLFlBQVksQ0FBQztBQUN6RDtBQUVPLFNBQVNDLFdBQVcsR0FBRztFQUM1QlIsR0FBRyxDQUFDUyxpQkFBaUIsQ0FBQ1osY0FBYyxDQUFDO0VBQ3JDRyxHQUFHLENBQUNTLGlCQUFpQixDQUFDWCxlQUFlLENBQUM7QUFDeEMiLCJmaWxlIjoiMTYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQWNjZXNzVG9rZW5LZXkgPSAnQUNDRVNTX1RPS0VOJ1xyXG5jb25zdCBSZWZyZXNoVG9rZW5LZXkgPSAnUkVGUkVTSF9UT0tFTidcclxuXHJcbi8vID09PT09PT09PT0gVG9rZW4g55u45YWzID09PT09PT09PT1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NUb2tlbigpIHtcclxuICByZXR1cm4gdW5pLmdldFN0b3JhZ2VTeW5jKEFjY2Vzc1Rva2VuS2V5KVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVmcmVzaFRva2VuKCkge1xyXG4gIHJldHVybiB1bmkuZ2V0U3RvcmFnZVN5bmMoUmVmcmVzaFRva2VuS2V5KVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0VG9rZW4odG9rZW4pIHtcclxuICB1bmkuc2V0U3RvcmFnZVN5bmMoQWNjZXNzVG9rZW5LZXksIHRva2VuLmFjY2Vzc1Rva2VuKVxyXG4gIHVuaS5zZXRTdG9yYWdlU3luYyhSZWZyZXNoVG9rZW5LZXksIHRva2VuLnJlZnJlc2hUb2tlbilcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRva2VuKCkge1xyXG4gIHVuaS5yZW1vdmVTdG9yYWdlU3luYyhBY2Nlc3NUb2tlbktleSlcclxuICB1bmkucmVtb3ZlU3RvcmFnZVN5bmMoUmVmcmVzaFRva2VuS2V5KVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///161\n"); /***/ }), /* 162 */ /*!**********************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/utils/errorCode.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;\nvar _default = {\n '401': '认证失败,无法访问系统资源',\n '403': '当前操作没有权限',\n '404': '访问资源不存在',\n 'default': '系统未知错误,请反馈给管理员'\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvZXJyb3JDb2RlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztlQUFlO0VBQ2IsS0FBSyxFQUFFLGVBQWU7RUFDdEIsS0FBSyxFQUFFLFVBQVU7RUFDakIsS0FBSyxFQUFFLFNBQVM7RUFDaEIsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUFBIiwiZmlsZSI6IjE2Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAnNDAxJzogJ+iupOivgeWksei0pe+8jOaXoOazleiuv+mXruezu+e7n+i1hOa6kCcsXHJcbiAgJzQwMyc6ICflvZPliY3mk43kvZzmsqHmnInmnYPpmZAnLFxyXG4gICc0MDQnOiAn6K6/6Zeu6LWE5rqQ5LiN5a2Y5ZyoJyxcclxuICAnZGVmYXVsdCc6ICfns7vnu5/mnKrnn6XplJnor6/vvIzor7flj43ppojnu5nnrqHnkIblkZgnXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///162\n"); /***/ }), /* 163 */ /*!*******************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/utils/common.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.showConfirm = showConfirm;\nexports.tansParams = tansParams;\nexports.toast = toast;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\n/**\r\n* 显示消息提示框\r\n* @param content 提示的标题\r\n*/\nfunction toast(content) {\n uni.showToast({\n icon: 'none',\n title: content\n });\n}\n\n/**\r\n* 显示模态弹窗\r\n* @param content 提示的标题\r\n*/\nfunction showConfirm(content) {\n return new Promise(function (resolve, reject) {\n uni.showModal({\n title: '提示',\n content: content,\n cancelText: '取消',\n confirmText: '确定',\n success: function success(res) {\n resolve(res);\n }\n });\n });\n}\n\n/**\r\n* 参数处理\r\n* @param params 参数\r\n*/\nfunction tansParams(params) {\n var result = '';\n for (var _i = 0, _Object$keys = Object.keys(params); _i < _Object$keys.length; _i++) {\n var propName = _Object$keys[_i];\n var value = params[propName];\n var part = encodeURIComponent(propName) + \"=\";\n if (value !== null && value !== \"\" && typeof value !== \"undefined\") {\n if ((0, _typeof2.default)(value) === 'object') {\n for (var _i2 = 0, _Object$keys2 = Object.keys(value); _i2 < _Object$keys2.length; _i2++) {\n var key = _Object$keys2[_i2];\n if (value[key] !== null && value[key] !== \"\" && typeof value[key] !== 'undefined') {\n var _params = propName + '[' + key + ']';\n var subPart = encodeURIComponent(_params) + \"=\";\n result += subPart + encodeURIComponent(value[key]) + \"&\";\n }\n }\n } else {\n result += part + encodeURIComponent(value) + \"&\";\n }\n }\n }\n return result;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvY29tbW9uLmpzIl0sIm5hbWVzIjpbInRvYXN0IiwiY29udGVudCIsInVuaSIsInNob3dUb2FzdCIsImljb24iLCJ0aXRsZSIsInNob3dDb25maXJtIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzaG93TW9kYWwiLCJjYW5jZWxUZXh0IiwiY29uZmlybVRleHQiLCJzdWNjZXNzIiwicmVzIiwidGFuc1BhcmFtcyIsInBhcmFtcyIsInJlc3VsdCIsIk9iamVjdCIsImtleXMiLCJwcm9wTmFtZSIsInZhbHVlIiwicGFydCIsImVuY29kZVVSSUNvbXBvbmVudCIsImtleSIsInN1YlBhcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLEtBQUssQ0FBQ0MsT0FBTyxFQUFFO0VBQzdCQyxHQUFHLENBQUNDLFNBQVMsQ0FBQztJQUNaQyxJQUFJLEVBQUUsTUFBTTtJQUNaQyxLQUFLLEVBQUVKO0VBQ1QsQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSyxXQUFXLENBQUNMLE9BQU8sRUFBRTtFQUNuQyxPQUFPLElBQUlNLE9BQU8sQ0FBQyxVQUFDQyxPQUFPLEVBQUVDLE1BQU0sRUFBSztJQUN0Q1AsR0FBRyxDQUFDUSxTQUFTLENBQUM7TUFDWkwsS0FBSyxFQUFFLElBQUk7TUFDWEosT0FBTyxFQUFFQSxPQUFPO01BQ2hCVSxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsV0FBVyxFQUFFLElBQUk7TUFDakJDLE9BQU8sRUFBRSxpQkFBU0MsR0FBRyxFQUFFO1FBQ3JCTixPQUFPLENBQUNNLEdBQUcsQ0FBQztNQUNkO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxVQUFVLENBQUNDLE1BQU0sRUFBRTtFQUNqQyxJQUFJQyxNQUFNLEdBQUcsRUFBRTtFQUNmLGdDQUF1QkMsTUFBTSxDQUFDQyxJQUFJLENBQUNILE1BQU0sQ0FBQyxrQ0FBRTtJQUF2QyxJQUFNSSxRQUFRO0lBQ2pCLElBQU1DLEtBQUssR0FBR0wsTUFBTSxDQUFDSSxRQUFRLENBQUM7SUFDOUIsSUFBSUUsSUFBSSxHQUFHQyxrQkFBa0IsQ0FBQ0gsUUFBUSxDQUFDLEdBQUcsR0FBRztJQUM3QyxJQUFJQyxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUssRUFBRSxJQUFJLE9BQVFBLEtBQU0sS0FBSyxXQUFXLEVBQUU7TUFDcEUsSUFBSSxzQkFBT0EsS0FBSyxNQUFLLFFBQVEsRUFBRTtRQUM3QixrQ0FBa0JILE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRSxLQUFLLENBQUMscUNBQUU7VUFBakMsSUFBTUcsR0FBRztVQUNaLElBQUlILEtBQUssQ0FBQ0csR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJSCxLQUFLLENBQUNHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxPQUFRSCxLQUFLLENBQUNHLEdBQUcsQ0FBRSxLQUFLLFdBQVcsRUFBRTtZQUNuRixJQUFJUixPQUFNLEdBQUdJLFFBQVEsR0FBRyxHQUFHLEdBQUdJLEdBQUcsR0FBRyxHQUFHO1lBQ3ZDLElBQUlDLE9BQU8sR0FBR0Ysa0JBQWtCLENBQUNQLE9BQU0sQ0FBQyxHQUFHLEdBQUc7WUFDOUNDLE1BQU0sSUFBSVEsT0FBTyxHQUFHRixrQkFBa0IsQ0FBQ0YsS0FBSyxDQUFDRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUc7VUFDMUQ7UUFDRjtNQUNGLENBQUMsTUFBTTtRQUNMUCxNQUFNLElBQUlLLElBQUksR0FBR0Msa0JBQWtCLENBQUNGLEtBQUssQ0FBQyxHQUFHLEdBQUc7TUFDbEQ7SUFDRjtFQUNGO0VBQ0EsT0FBT0osTUFBTTtBQUNmIiwiZmlsZSI6IjE2My5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIOaYvuekuua2iOaBr+aPkOekuuahhlxyXG4qIEBwYXJhbSBjb250ZW50IOaPkOekuueahOagh+mimFxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9hc3QoY29udGVudCkge1xyXG4gIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgaWNvbjogJ25vbmUnLFxyXG4gICAgdGl0bGU6IGNvbnRlbnRcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuKiDmmL7npLrmqKHmgIHlvLnnqpdcclxuKiBAcGFyYW0gY29udGVudCDmj5DnpLrnmoTmoIfpophcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNob3dDb25maXJtKGNvbnRlbnQpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgdW5pLnNob3dNb2RhbCh7XHJcbiAgICAgIHRpdGxlOiAn5o+Q56S6JyxcclxuICAgICAgY29udGVudDogY29udGVudCxcclxuICAgICAgY2FuY2VsVGV4dDogJ+WPlua2iCcsXHJcbiAgICAgIGNvbmZpcm1UZXh0OiAn56Gu5a6aJyxcclxuICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcbiAgICAgICAgcmVzb2x2ZShyZXMpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfSlcclxufVxyXG5cclxuLyoqXHJcbiog5Y+C5pWw5aSE55CGXHJcbiogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRhbnNQYXJhbXMocGFyYW1zKSB7XHJcbiAgbGV0IHJlc3VsdCA9ICcnXHJcbiAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtc1twcm9wTmFtZV1cclxuICAgIHZhciBwYXJ0ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BOYW1lKSArIFwiPVwiXHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IFwiXCIgJiYgdHlwZW9mICh2YWx1ZSkgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcclxuICAgICAgICAgIGlmICh2YWx1ZVtrZXldICE9PSBudWxsICYmIHZhbHVlW2tleV0gIT09IFwiXCIgJiYgdHlwZW9mICh2YWx1ZVtrZXldKSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHByb3BOYW1lICsgJ1snICsga2V5ICsgJ10nXHJcbiAgICAgICAgICAgIHZhciBzdWJQYXJ0ID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtcykgKyBcIj1cIlxyXG4gICAgICAgICAgICByZXN1bHQgKz0gc3ViUGFydCArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZVtrZXldKSArIFwiJlwiXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCArPSBwYXJ0ICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSArIFwiJlwiXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///163\n"); /***/ }), /* 164 */ /*!*****************************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/static/images/profile.jpg ***! \*****************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { eval("module.exports = \"/static/images/profile.jpg\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjE2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2ltYWdlcy9wcm9maWxlLmpwZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///164\n"); /***/ }), /* 165 */ /*!********************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/store/getters.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;\nvar getters = {\n token: function token(state) {\n return state.user.token;\n },\n avatar: function avatar(state) {\n return state.user.avatar;\n },\n name: function name(state) {\n return state.user.name;\n },\n roles: function roles(state) {\n return state.user.roles;\n },\n permissions: function permissions(state) {\n return state.user.permissions;\n }\n};\nvar _default = getters;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvZ2V0dGVycy5qcyJdLCJuYW1lcyI6WyJnZXR0ZXJzIiwidG9rZW4iLCJzdGF0ZSIsInVzZXIiLCJhdmF0YXIiLCJuYW1lIiwicm9sZXMiLCJwZXJtaXNzaW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTUEsT0FBTyxHQUFHO0VBQ2RDLEtBQUssRUFBRSxlQUFBQyxLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDQyxJQUFJLENBQUNGLEtBQUs7RUFBQTtFQUNoQ0csTUFBTSxFQUFFLGdCQUFBRixLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDQyxJQUFJLENBQUNDLE1BQU07RUFBQTtFQUNsQ0MsSUFBSSxFQUFFLGNBQUFILEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNDLElBQUksQ0FBQ0UsSUFBSTtFQUFBO0VBQzlCQyxLQUFLLEVBQUUsZUFBQUosS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0MsSUFBSSxDQUFDRyxLQUFLO0VBQUE7RUFDaENDLFdBQVcsRUFBRSxxQkFBQUwsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0MsSUFBSSxDQUFDSSxXQUFXO0VBQUE7QUFDOUMsQ0FBQztBQUFBLGVBQ2NQLE9BQU87QUFBQSIsImZpbGUiOiIxNjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXR0ZXJzID0ge1xyXG4gIHRva2VuOiBzdGF0ZSA9PiBzdGF0ZS51c2VyLnRva2VuLFxyXG4gIGF2YXRhcjogc3RhdGUgPT4gc3RhdGUudXNlci5hdmF0YXIsXHJcbiAgbmFtZTogc3RhdGUgPT4gc3RhdGUudXNlci5uYW1lLFxyXG4gIHJvbGVzOiBzdGF0ZSA9PiBzdGF0ZS51c2VyLnJvbGVzLFxyXG4gIHBlcm1pc3Npb25zOiBzdGF0ZSA9PiBzdGF0ZS51c2VyLnBlcm1pc3Npb25zXHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgZ2V0dGVyc1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///165\n"); /***/ }), /* 166 */ /*!********************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/plugins/index.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _tab = _interopRequireDefault(__webpack_require__(/*! ./tab */ 167));\nvar _auth = _interopRequireDefault(__webpack_require__(/*! ./auth */ 168));\nvar _modal = _interopRequireDefault(__webpack_require__(/*! ./modal */ 169));\nvar _default = {\n install: function install(Vue) {\n // 页签操作\n Vue.prototype.$tab = _tab.default;\n // 认证对象\n Vue.prototype.$auth = _auth.default;\n // 模态框对象\n Vue.prototype.$modal = _modal.default;\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsIiwiVnVlIiwicHJvdG90eXBlIiwiJHRhYiIsInRhYiIsIiRhdXRoIiwiYXV0aCIsIiRtb2RhbCIsIm1vZGFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQTJCLGVBRVo7RUFDYkEsT0FBTyxtQkFBQ0MsR0FBRyxFQUFFO0lBQ1g7SUFDQUEsR0FBRyxDQUFDQyxTQUFTLENBQUNDLElBQUksR0FBR0MsWUFBRztJQUN4QjtJQUNBSCxHQUFHLENBQUNDLFNBQVMsQ0FBQ0csS0FBSyxHQUFHQyxhQUFJO0lBQzFCO0lBQ0FMLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDSyxNQUFNLEdBQUdDLGNBQUs7RUFDOUI7QUFDRixDQUFDO0FBQUEiLCJmaWxlIjoiMTY2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRhYiBmcm9tICcuL3RhYidcclxuaW1wb3J0IGF1dGggZnJvbSAnLi9hdXRoJ1xyXG5pbXBvcnQgbW9kYWwgZnJvbSAnLi9tb2RhbCdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBpbnN0YWxsKFZ1ZSkge1xyXG4gICAgLy8g6aG1562+5pON5L2cXHJcbiAgICBWdWUucHJvdG90eXBlLiR0YWIgPSB0YWJcclxuICAgIC8vIOiupOivgeWvueixoVxyXG4gICAgVnVlLnByb3RvdHlwZS4kYXV0aCA9IGF1dGhcclxuICAgIC8vIOaooeaAgeahhuWvueixoVxyXG4gICAgVnVlLnByb3RvdHlwZS4kbW9kYWwgPSBtb2RhbFxyXG4gIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///166\n"); /***/ }), /* 167 */ /*!******************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/plugins/tab.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;\nvar _default = {\n // 关闭所有页面,打开到应用内的某个页面\n reLaunch: function reLaunch(url) {\n return uni.reLaunch({\n url: url\n });\n },\n // 跳转到tabBar页面,并关闭其他所有非tabBar页面\n switchTab: function switchTab(url) {\n return uni.switchTab({\n url: url\n });\n },\n // 关闭当前页面,跳转到应用内的某个页面\n redirectTo: function redirectTo(url) {\n return uni.redirectTo({\n url: url\n });\n },\n // 保留当前页面,跳转到应用内的某个页面\n navigateTo: function navigateTo(url) {\n return uni.navigateTo({\n url: url\n });\n },\n // 关闭当前页面,返回上一页面或多级页面\n navigateBack: function navigateBack() {\n return uni.navigateBack();\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy90YWIuanMiXSwibmFtZXMiOlsicmVMYXVuY2giLCJ1cmwiLCJ1bmkiLCJzd2l0Y2hUYWIiLCJyZWRpcmVjdFRvIiwibmF2aWdhdGVUbyIsIm5hdmlnYXRlQmFjayJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQWU7RUFDYjtFQUNBQSxRQUFRLG9CQUFDQyxHQUFHLEVBQUU7SUFDWixPQUFPQyxHQUFHLENBQUNGLFFBQVEsQ0FBQztNQUNsQkMsR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBRSxTQUFTLHFCQUFDRixHQUFHLEVBQUU7SUFDYixPQUFPQyxHQUFHLENBQUNDLFNBQVMsQ0FBQztNQUNuQkYsR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBRyxVQUFVLHNCQUFDSCxHQUFHLEVBQUU7SUFDZCxPQUFPQyxHQUFHLENBQUNFLFVBQVUsQ0FBQztNQUNwQkgsR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBSSxVQUFVLHNCQUFDSixHQUFHLEVBQUU7SUFDZCxPQUFPQyxHQUFHLENBQUNHLFVBQVUsQ0FBQztNQUNwQkosR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBSyxZQUFZLDBCQUFHO0lBQ2IsT0FBT0osR0FBRyxDQUFDSSxZQUFZLEVBQUU7RUFDM0I7QUFDRixDQUFDO0FBQUEiLCJmaWxlIjoiMTY3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xyXG4gIC8vIOWFs+mXreaJgOaciemhtemdou+8jOaJk+W8gOWIsOW6lOeUqOWGheeahOafkOS4qumhtemdolxyXG4gIHJlTGF1bmNoKHVybCkge1xyXG4gICAgcmV0dXJuIHVuaS5yZUxhdW5jaCh7XHJcbiAgICAgIHVybDogdXJsXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g6Lez6L2s5YiwdGFiQmFy6aG16Z2i77yM5bm25YWz6Zet5YW25LuW5omA5pyJ6Z2edGFiQmFy6aG16Z2iXHJcbiAgc3dpdGNoVGFiKHVybCkge1xyXG4gICAgcmV0dXJuIHVuaS5zd2l0Y2hUYWIoe1xyXG4gICAgICB1cmw6IHVybFxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOWFs+mXreW9k+WJjemhtemdou+8jOi3s+i9rOWIsOW6lOeUqOWGheeahOafkOS4qumhtemdolxyXG4gIHJlZGlyZWN0VG8odXJsKSB7XHJcbiAgICByZXR1cm4gdW5pLnJlZGlyZWN0VG8oe1xyXG4gICAgICB1cmw6IHVybFxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOS/neeVmeW9k+WJjemhtemdou+8jOi3s+i9rOWIsOW6lOeUqOWGheeahOafkOS4qumhtemdolxyXG4gIG5hdmlnYXRlVG8odXJsKSB7XHJcbiAgICByZXR1cm4gdW5pLm5hdmlnYXRlVG8oe1xyXG4gICAgICB1cmw6IHVybFxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOWFs+mXreW9k+WJjemhtemdou+8jOi/lOWbnuS4iuS4gOmhtemdouaIluWkmue6p+mhtemdolxyXG4gIG5hdmlnYXRlQmFjaygpIHtcclxuICAgIHJldHVybiB1bmkubmF2aWdhdGVCYWNrKClcclxuICB9XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///167\n"); /***/ }), /* 168 */ /*!*******************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/plugins/auth.js ***! \*******************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 154));\nfunction authPermission(permission) {\n var all_permission = \"*:*:*\";\n var permissions = _store.default.getters && _store.default.getters.permissions;\n if (permission && permission.length > 0) {\n return permissions.some(function (v) {\n return all_permission === v || v === permission;\n });\n } else {\n return false;\n }\n}\nfunction authRole(role) {\n var super_admin = \"admin\";\n var roles = _store.default.getters && _store.default.getters.roles;\n if (role && role.length > 0) {\n return roles.some(function (v) {\n return super_admin === v || v === role;\n });\n } else {\n return false;\n }\n}\nvar _default = {\n // 验证用户是否具备某权限\n hasPermi: function hasPermi(permission) {\n return authPermission(permission);\n },\n // 验证用户是否含有指定权限,只需包含其中一个\n hasPermiOr: function hasPermiOr(permissions) {\n return permissions.some(function (item) {\n return authPermission(item);\n });\n },\n // 验证用户是否含有指定权限,必须全部拥有\n hasPermiAnd: function hasPermiAnd(permissions) {\n return permissions.every(function (item) {\n return authPermission(item);\n });\n },\n // 验证用户是否具备某角色\n hasRole: function hasRole(role) {\n return authRole(role);\n },\n // 验证用户是否含有指定角色,只需包含其中一个\n hasRoleOr: function hasRoleOr(roles) {\n return roles.some(function (item) {\n return authRole(item);\n });\n },\n // 验证用户是否含有指定角色,必须全部拥有\n hasRoleAnd: function hasRoleAnd(roles) {\n return roles.every(function (item) {\n return authRole(item);\n });\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy9hdXRoLmpzIl0sIm5hbWVzIjpbImF1dGhQZXJtaXNzaW9uIiwicGVybWlzc2lvbiIsImFsbF9wZXJtaXNzaW9uIiwicGVybWlzc2lvbnMiLCJzdG9yZSIsImdldHRlcnMiLCJsZW5ndGgiLCJzb21lIiwidiIsImF1dGhSb2xlIiwicm9sZSIsInN1cGVyX2FkbWluIiwicm9sZXMiLCJoYXNQZXJtaSIsImhhc1Blcm1pT3IiLCJpdGVtIiwiaGFzUGVybWlBbmQiLCJldmVyeSIsImhhc1JvbGUiLCJoYXNSb2xlT3IiLCJoYXNSb2xlQW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFFQSxTQUFTQSxjQUFjLENBQUNDLFVBQVUsRUFBRTtFQUNsQyxJQUFNQyxjQUFjLEdBQUcsT0FBTztFQUM5QixJQUFNQyxXQUFXLEdBQUdDLGNBQUssQ0FBQ0MsT0FBTyxJQUFJRCxjQUFLLENBQUNDLE9BQU8sQ0FBQ0YsV0FBVztFQUM5RCxJQUFJRixVQUFVLElBQUlBLFVBQVUsQ0FBQ0ssTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN2QyxPQUFPSCxXQUFXLENBQUNJLElBQUksQ0FBQyxVQUFBQyxDQUFDLEVBQUk7TUFDM0IsT0FBT04sY0FBYyxLQUFLTSxDQUFDLElBQUlBLENBQUMsS0FBS1AsVUFBVTtJQUNqRCxDQUFDLENBQUM7RUFDSixDQUFDLE1BQU07SUFDTCxPQUFPLEtBQUs7RUFDZDtBQUNGO0FBRUEsU0FBU1EsUUFBUSxDQUFDQyxJQUFJLEVBQUU7RUFDdEIsSUFBTUMsV0FBVyxHQUFHLE9BQU87RUFDM0IsSUFBTUMsS0FBSyxHQUFHUixjQUFLLENBQUNDLE9BQU8sSUFBSUQsY0FBSyxDQUFDQyxPQUFPLENBQUNPLEtBQUs7RUFDbEQsSUFBSUYsSUFBSSxJQUFJQSxJQUFJLENBQUNKLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDM0IsT0FBT00sS0FBSyxDQUFDTCxJQUFJLENBQUMsVUFBQUMsQ0FBQyxFQUFJO01BQ3JCLE9BQU9HLFdBQVcsS0FBS0gsQ0FBQyxJQUFJQSxDQUFDLEtBQUtFLElBQUk7SUFDeEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxNQUFNO0lBQ0wsT0FBTyxLQUFLO0VBQ2Q7QUFDRjtBQUFDLGVBRWM7RUFDYjtFQUNBRyxRQUFRLG9CQUFDWixVQUFVLEVBQUU7SUFDbkIsT0FBT0QsY0FBYyxDQUFDQyxVQUFVLENBQUM7RUFDbkMsQ0FBQztFQUNEO0VBQ0FhLFVBQVUsc0JBQUNYLFdBQVcsRUFBRTtJQUN0QixPQUFPQSxXQUFXLENBQUNJLElBQUksQ0FBQyxVQUFBUSxJQUFJLEVBQUk7TUFDOUIsT0FBT2YsY0FBYyxDQUFDZSxJQUFJLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FDLFdBQVcsdUJBQUNiLFdBQVcsRUFBRTtJQUN2QixPQUFPQSxXQUFXLENBQUNjLEtBQUssQ0FBQyxVQUFBRixJQUFJLEVBQUk7TUFDL0IsT0FBT2YsY0FBYyxDQUFDZSxJQUFJLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FHLE9BQU8sbUJBQUNSLElBQUksRUFBRTtJQUNaLE9BQU9ELFFBQVEsQ0FBQ0MsSUFBSSxDQUFDO0VBQ3ZCLENBQUM7RUFDRDtFQUNBUyxTQUFTLHFCQUFDUCxLQUFLLEVBQUU7SUFDZixPQUFPQSxLQUFLLENBQUNMLElBQUksQ0FBQyxVQUFBUSxJQUFJLEVBQUk7TUFDeEIsT0FBT04sUUFBUSxDQUFDTSxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FLLFVBQVUsc0JBQUNSLEtBQUssRUFBRTtJQUNoQixPQUFPQSxLQUFLLENBQUNLLEtBQUssQ0FBQyxVQUFBRixJQUFJLEVBQUk7TUFDekIsT0FBT04sUUFBUSxDQUFDTSxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0o7QUFDRixDQUFDO0FBQUEiLCJmaWxlIjoiMTY4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0b3JlIGZyb20gJ0Avc3RvcmUnXHJcblxyXG5mdW5jdGlvbiBhdXRoUGVybWlzc2lvbihwZXJtaXNzaW9uKSB7XHJcbiAgY29uc3QgYWxsX3Blcm1pc3Npb24gPSBcIio6KjoqXCJcclxuICBjb25zdCBwZXJtaXNzaW9ucyA9IHN0b3JlLmdldHRlcnMgJiYgc3RvcmUuZ2V0dGVycy5wZXJtaXNzaW9uc1xyXG4gIGlmIChwZXJtaXNzaW9uICYmIHBlcm1pc3Npb24ubGVuZ3RoID4gMCkge1xyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25zLnNvbWUodiA9PiB7XHJcbiAgICAgIHJldHVybiBhbGxfcGVybWlzc2lvbiA9PT0gdiB8fCB2ID09PSBwZXJtaXNzaW9uXHJcbiAgICB9KVxyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGF1dGhSb2xlKHJvbGUpIHtcclxuICBjb25zdCBzdXBlcl9hZG1pbiA9IFwiYWRtaW5cIlxyXG4gIGNvbnN0IHJvbGVzID0gc3RvcmUuZ2V0dGVycyAmJiBzdG9yZS5nZXR0ZXJzLnJvbGVzXHJcbiAgaWYgKHJvbGUgJiYgcm9sZS5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gcm9sZXMuc29tZSh2ID0+IHtcclxuICAgICAgcmV0dXJuIHN1cGVyX2FkbWluID09PSB2IHx8IHYgPT09IHJvbGVcclxuICAgIH0pXHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIC8vIOmqjOivgeeUqOaIt+aYr+WQpuWFt+Wkh+afkOadg+mZkFxyXG4gIGhhc1Blcm1pKHBlcm1pc3Npb24pIHtcclxuICAgIHJldHVybiBhdXRoUGVybWlzc2lvbihwZXJtaXNzaW9uKVxyXG4gIH0sXHJcbiAgLy8g6aqM6K+B55So5oi35piv5ZCm5ZCr5pyJ5oyH5a6a5p2D6ZmQ77yM5Y+q6ZyA5YyF5ZCr5YW25Lit5LiA5LiqXHJcbiAgaGFzUGVybWlPcihwZXJtaXNzaW9ucykge1xyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25zLnNvbWUoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBhdXRoUGVybWlzc2lvbihpdGVtKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOmqjOivgeeUqOaIt+aYr+WQpuWQq+acieaMh+Wumuadg+mZkO+8jOW/hemhu+WFqOmDqOaLpeaciVxyXG4gIGhhc1Blcm1pQW5kKHBlcm1pc3Npb25zKSB7XHJcbiAgICByZXR1cm4gcGVybWlzc2lvbnMuZXZlcnkoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBhdXRoUGVybWlzc2lvbihpdGVtKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOmqjOivgeeUqOaIt+aYr+WQpuWFt+Wkh+afkOinkuiJslxyXG4gIGhhc1JvbGUocm9sZSkge1xyXG4gICAgcmV0dXJuIGF1dGhSb2xlKHJvbGUpXHJcbiAgfSxcclxuICAvLyDpqozor4HnlKjmiLfmmK/lkKblkKvmnInmjIflrprop5LoibLvvIzlj6rpnIDljIXlkKvlhbbkuK3kuIDkuKpcclxuICBoYXNSb2xlT3Iocm9sZXMpIHtcclxuICAgIHJldHVybiByb2xlcy5zb21lKGl0ZW0gPT4ge1xyXG4gICAgICByZXR1cm4gYXV0aFJvbGUoaXRlbSlcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDpqozor4HnlKjmiLfmmK/lkKblkKvmnInmjIflrprop5LoibLvvIzlv4Xpobvlhajpg6jmi6XmnIlcclxuICBoYXNSb2xlQW5kKHJvbGVzKSB7XHJcbiAgICByZXR1cm4gcm9sZXMuZXZlcnkoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBhdXRoUm9sZShpdGVtKVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///168\n"); /***/ }), /* 169 */ /*!********************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/plugins/modal.js ***! \********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _default = {\n // 消息提示\n msg: function msg(content) {\n uni.showToast({\n title: content,\n icon: 'none'\n });\n },\n // 错误消息\n msgError: function msgError(content) {\n uni.showToast({\n title: content,\n icon: 'error'\n });\n },\n // 成功消息\n msgSuccess: function msgSuccess(content) {\n uni.showToast({\n title: content,\n icon: 'success'\n });\n },\n // 隐藏消息\n hideMsg: function hideMsg(content) {\n uni.hideToast();\n },\n // 弹出提示\n alert: function alert(content) {\n uni.showModal({\n title: '提示',\n content: content,\n showCancel: false\n });\n },\n // 确认窗体\n confirm: function confirm(content) {\n return new Promise(function (resolve, reject) {\n uni.showModal({\n title: '系统提示',\n content: content,\n cancelText: '取消',\n confirmText: '确定',\n success: function success(res) {\n if (res.confirm) {\n resolve(res.confirm);\n }\n }\n });\n });\n },\n // 提示信息\n showToast: function showToast(option) {\n if ((0, _typeof2.default)(option) === \"object\") {\n uni.showToast(option);\n } else {\n uni.showToast({\n title: option,\n icon: \"none\",\n duration: 2500\n });\n }\n },\n // 打开遮罩层\n loading: function loading(content) {\n uni.showLoading({\n title: content,\n icon: 'none'\n });\n },\n // 关闭遮罩层\n closeLoading: function closeLoading() {\n uni.hideLoading();\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy9tb2RhbC5qcyJdLCJuYW1lcyI6WyJtc2ciLCJjb250ZW50IiwidW5pIiwic2hvd1RvYXN0IiwidGl0bGUiLCJpY29uIiwibXNnRXJyb3IiLCJtc2dTdWNjZXNzIiwiaGlkZU1zZyIsImhpZGVUb2FzdCIsImFsZXJ0Iiwic2hvd01vZGFsIiwic2hvd0NhbmNlbCIsImNvbmZpcm0iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNhbmNlbFRleHQiLCJjb25maXJtVGV4dCIsInN1Y2Nlc3MiLCJyZXMiLCJvcHRpb24iLCJkdXJhdGlvbiIsImxvYWRpbmciLCJzaG93TG9hZGluZyIsImNsb3NlTG9hZGluZyIsImhpZGVMb2FkaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQUFlO0VBQ2I7RUFDQUEsR0FBRyxlQUFDQyxPQUFPLEVBQUU7SUFDWEMsR0FBRyxDQUFDQyxTQUFTLENBQUM7TUFDWkMsS0FBSyxFQUFFSCxPQUFPO01BQ2RJLElBQUksRUFBRTtJQUNSLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBQyxRQUFRLG9CQUFDTCxPQUFPLEVBQUU7SUFDaEJDLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDO01BQ1pDLEtBQUssRUFBRUgsT0FBTztNQUNkSSxJQUFJLEVBQUU7SUFDUixDQUFDLENBQUM7RUFDSixDQUFDO0VBQ0Q7RUFDQUUsVUFBVSxzQkFBQ04sT0FBTyxFQUFFO0lBQ2xCQyxHQUFHLENBQUNDLFNBQVMsQ0FBQztNQUNaQyxLQUFLLEVBQUVILE9BQU87TUFDZEksSUFBSSxFQUFFO0lBQ1IsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FHLE9BQU8sbUJBQUNQLE9BQU8sRUFBRTtJQUNmQyxHQUFHLENBQUNPLFNBQVMsRUFBRTtFQUNqQixDQUFDO0VBQ0Q7RUFDQUMsS0FBSyxpQkFBQ1QsT0FBTyxFQUFFO0lBQ2JDLEdBQUcsQ0FBQ1MsU0FBUyxDQUFDO01BQ1pQLEtBQUssRUFBRSxJQUFJO01BQ1hILE9BQU8sRUFBRUEsT0FBTztNQUNoQlcsVUFBVSxFQUFFO0lBQ2QsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FDLE9BQU8sbUJBQUNaLE9BQU8sRUFBRTtJQUNmLE9BQU8sSUFBSWEsT0FBTyxDQUFDLFVBQUNDLE9BQU8sRUFBRUMsTUFBTSxFQUFLO01BQ3RDZCxHQUFHLENBQUNTLFNBQVMsQ0FBQztRQUNaUCxLQUFLLEVBQUUsTUFBTTtRQUNiSCxPQUFPLEVBQUVBLE9BQU87UUFDaEJnQixVQUFVLEVBQUUsSUFBSTtRQUNoQkMsV0FBVyxFQUFFLElBQUk7UUFDakJDLE9BQU8sRUFBRSxpQkFBU0MsR0FBRyxFQUFFO1VBQ3JCLElBQUlBLEdBQUcsQ0FBQ1AsT0FBTyxFQUFFO1lBQ2ZFLE9BQU8sQ0FBQ0ssR0FBRyxDQUFDUCxPQUFPLENBQUM7VUFDdEI7UUFDRjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBVixTQUFTLHFCQUFDa0IsTUFBTSxFQUFFO0lBQ2hCLElBQUksc0JBQU9BLE1BQU0sTUFBSyxRQUFRLEVBQUU7TUFDOUJuQixHQUFHLENBQUNDLFNBQVMsQ0FBQ2tCLE1BQU0sQ0FBQztJQUN2QixDQUFDLE1BQU07TUFDTG5CLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDO1FBQ1pDLEtBQUssRUFBRWlCLE1BQU07UUFDYmhCLElBQUksRUFBRSxNQUFNO1FBQ1ppQixRQUFRLEVBQUU7TUFDWixDQUFDLENBQUM7SUFDSjtFQUNGLENBQUM7RUFDRDtFQUNBQyxPQUFPLG1CQUFDdEIsT0FBTyxFQUFFO0lBQ2ZDLEdBQUcsQ0FBQ3NCLFdBQVcsQ0FBQztNQUNkcEIsS0FBSyxFQUFFSCxPQUFPO01BQ2RJLElBQUksRUFBRTtJQUNSLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBb0IsWUFBWSwwQkFBRztJQUNidkIsR0FBRyxDQUFDd0IsV0FBVyxFQUFFO0VBQ25CO0FBQ0YsQ0FBQztBQUFBIiwiZmlsZSI6IjE2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAvLyDmtojmga/mj5DnpLpcclxuICBtc2coY29udGVudCkge1xyXG4gICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgIHRpdGxlOiBjb250ZW50LFxyXG4gICAgICBpY29uOiAnbm9uZSdcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDplJnor6/mtojmga9cclxuICBtc2dFcnJvcihjb250ZW50KSB7XHJcbiAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgdGl0bGU6IGNvbnRlbnQsXHJcbiAgICAgIGljb246ICdlcnJvcidcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDmiJDlip/mtojmga9cclxuICBtc2dTdWNjZXNzKGNvbnRlbnQpIHtcclxuICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogY29udGVudCxcclxuICAgICAgaWNvbjogJ3N1Y2Nlc3MnXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g6ZqQ6JeP5raI5oGvXHJcbiAgaGlkZU1zZyhjb250ZW50KSB7XHJcbiAgICB1bmkuaGlkZVRvYXN0KClcclxuICB9LFxyXG4gIC8vIOW8ueWHuuaPkOekulxyXG4gIGFsZXJ0KGNvbnRlbnQpIHtcclxuICAgIHVuaS5zaG93TW9kYWwoe1xyXG4gICAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICAgIHNob3dDYW5jZWw6IGZhbHNlXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g56Gu6K6k56qX5L2TXHJcbiAgY29uZmlybShjb250ZW50KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB1bmkuc2hvd01vZGFsKHtcclxuICAgICAgICB0aXRsZTogJ+ezu+e7n+aPkOekuicsXHJcbiAgICAgICAgY29udGVudDogY29udGVudCxcclxuICAgICAgICBjYW5jZWxUZXh0OiAn5Y+W5raIJyxcclxuICAgICAgICBjb25maXJtVGV4dDogJ+ehruWumicsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcbiAgICAgICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXMuY29uZmlybSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g5o+Q56S65L+h5oGvXHJcbiAgc2hvd1RvYXN0KG9wdGlvbikge1xyXG4gICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgdW5pLnNob3dUb2FzdChvcHRpb24pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogb3B0aW9uLFxyXG4gICAgICAgIGljb246IFwibm9uZVwiLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyNTAwXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfSxcclxuICAvLyDmiZPlvIDpga7nvanlsYJcclxuICBsb2FkaW5nKGNvbnRlbnQpIHtcclxuICAgIHVuaS5zaG93TG9hZGluZyh7XHJcbiAgICAgIHRpdGxlOiBjb250ZW50LFxyXG4gICAgICBpY29uOiAnbm9uZSdcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDlhbPpl63pga7nvanlsYJcclxuICBjbG9zZUxvYWRpbmcoKSB7XHJcbiAgICB1bmkuaGlkZUxvYWRpbmcoKVxyXG4gIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///169\n"); /***/ }), /* 170 */ /*!*****************************************************!*\ !*** D:/Intelligent/jn_uniapp/jn_app/permission.js ***! \*****************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; eval("\n\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\n// 登录页面\nvar loginPage = \"/pages/login\";\n\n// 页面白名单\nvar whiteList = ['/pages/login', '/pages/common/webview/index'];\n\n// 检查地址白名单\nfunction checkWhite(url) {\n var path = url.split('?')[0];\n return whiteList.indexOf(path) !== -1;\n}\n\n// 页面跳转验证拦截器\n// let list = [\"navigateTo\", \"redirectTo\", \"reLaunch\", \"switchTab\"]\n// list.forEach(item => {\n// uni.addInterceptor(item, {\n// invoke(to) {\n// if (getAccessToken()) {\n// if (to.path === loginPage) {\n// uni.reLaunch({ url: \"/\" })\n// }\n// return true\n// } else {\n// if (checkWhite(to.url)) {\n// return true\n// }\n// uni.reLaunch({ url: loginPage })\n// return false\n// }\n// },\n// fail(err) {\n// console.log(err)\n// }\n// })\n// })//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGVybWlzc2lvbi5qcyJdLCJuYW1lcyI6WyJsb2dpblBhZ2UiLCJ3aGl0ZUxpc3QiLCJjaGVja1doaXRlIiwidXJsIiwicGF0aCIsInNwbGl0IiwiaW5kZXhPZiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUlBO0FBQ0EsSUFBTUEsU0FBUyxHQUFHLGNBQWM7O0FBRWhDO0FBQ0EsSUFBTUMsU0FBUyxHQUFHLENBQ2pCLGNBQWMsRUFBRSw2QkFBNkIsQ0FDN0M7O0FBRUQ7QUFDQSxTQUFTQyxVQUFVLENBQUNDLEdBQUcsRUFBRTtFQUN4QixJQUFNQyxJQUFJLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM5QixPQUFPSixTQUFTLENBQUNLLE9BQU8sQ0FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTcwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRnZXRBY2Nlc3NUb2tlblxyXG59IGZyb20gJ0AvdXRpbHMvYXV0aCdcclxuXHJcbi8vIOeZu+W9lemhtemdolxyXG5jb25zdCBsb2dpblBhZ2UgPSBcIi9wYWdlcy9sb2dpblwiXHJcblxyXG4vLyDpobXpnaLnmb3lkI3ljZVcclxuY29uc3Qgd2hpdGVMaXN0ID0gW1xyXG5cdCcvcGFnZXMvbG9naW4nLCAnL3BhZ2VzL2NvbW1vbi93ZWJ2aWV3L2luZGV4J1xyXG5dXHJcblxyXG4vLyDmo4Dmn6XlnLDlnYDnmb3lkI3ljZVcclxuZnVuY3Rpb24gY2hlY2tXaGl0ZSh1cmwpIHtcclxuXHRjb25zdCBwYXRoID0gdXJsLnNwbGl0KCc/JylbMF1cclxuXHRyZXR1cm4gd2hpdGVMaXN0LmluZGV4T2YocGF0aCkgIT09IC0xXHJcbn1cclxuXHJcbi8vIOmhtemdoui3s+i9rOmqjOivgeaLpuaIquWZqFxyXG4vLyBsZXQgbGlzdCA9IFtcIm5hdmlnYXRlVG9cIiwgXCJyZWRpcmVjdFRvXCIsIFwicmVMYXVuY2hcIiwgXCJzd2l0Y2hUYWJcIl1cclxuLy8gbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4vLyAgIHVuaS5hZGRJbnRlcmNlcHRvcihpdGVtLCB7XHJcbi8vICAgICBpbnZva2UodG8pIHtcclxuLy8gICAgICAgaWYgKGdldEFjY2Vzc1Rva2VuKCkpIHtcclxuLy8gICAgICAgICBpZiAodG8ucGF0aCA9PT0gbG9naW5QYWdlKSB7XHJcbi8vICAgICAgICAgICB1bmkucmVMYXVuY2goeyB1cmw6IFwiL1wiIH0pXHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIHJldHVybiB0cnVlXHJcbi8vICAgICAgIH0gZWxzZSB7XHJcbi8vICAgICAgICAgaWYgKGNoZWNrV2hpdGUodG8udXJsKSkge1xyXG4vLyAgICAgICAgICAgcmV0dXJuIHRydWVcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgdW5pLnJlTGF1bmNoKHsgdXJsOiBsb2dpblBhZ2UgfSlcclxuLy8gICAgICAgICByZXR1cm4gZmFsc2VcclxuLy8gICAgICAgfVxyXG4vLyAgICAgfSxcclxuLy8gICAgIGZhaWwoZXJyKSB7XHJcbi8vICAgICAgIGNvbnNvbGUubG9nKGVycilcclxuLy8gICAgIH1cclxuLy8gICB9KVxyXG4vLyB9KVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///170\n"); /***/ }) ],[[0,"app-config"]]]);