@ywfe/fe-tools 1.2.1-beta.14 → 1.2.1-beta.15

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"ywfe-tools.umd.js","sources":["../JSON2String.ts"],"sourcesContent":["interface userInput {\n data?: object;\n}\nfunction JSON2String({ input }) {\n const { data = {} } = input;\n try {\n return \"```json\" + JSON.stringify(data) + \"json```\";\n } catch (error) {\n return \"```json\" + JSON.stringify({}) + \"json```\";\n }\n}\n\nexport default JSON2String"],"names":["_a","_b","input","data","JSON","stringify","error"],"mappings":"6PAGA,SAAqBA,GAAE,IACbC,EADkBD,EAAAE,MACTC,KAATA,OAAO,IAAAF,EAAA,CAAE,IACjB,IACE,MAAO,UAAYG,KAAKC,UAAUF,GAAQ,SAC3C,CAAC,MAAOG,GACP,MAAO,UAAYF,KAAKC,UAAU,CAAE,GAAI,SACzC,CACH"}
1
+ {"version":3,"file":"ywfe-tools.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","../node_modules/rollup-plugin-node-polyfills/polyfills/global.js","../node_modules/rollup-plugin-node-polyfills/polyfills/buffer-es6.js","../node_modules/rollup-plugin-node-polyfills/polyfills/empty.js","../node_modules/@ywfe/utils/lib/ywfe-utils.esm.js","../JSON2String.ts","../request.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});","var lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n revLookup['-'.charCodeAt(0)] = 62;\n revLookup['_'.charCodeAt(0)] = 63;\n}\n\nfunction toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr;\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders);\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len;\n\n var L = 0;\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];\n arr[L++] = (tmp >> 16) & 0xFF;\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[L++] = tmp & 0xFF;\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[L++] = (tmp >> 8) & 0xFF;\n arr[L++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var output = '';\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n output += lookup[tmp >> 2];\n output += lookup[(tmp << 4) & 0x3F];\n output += '==';\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);\n output += lookup[tmp >> 10];\n output += lookup[(tmp >> 4) & 0x3F];\n output += lookup[(tmp << 2) & 0x3F];\n output += '=';\n }\n\n parts.push(output);\n\n return parts.join('')\n}\n\nfunction read (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nfunction write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n}\n\nvar toString = {}.toString;\n\nvar isArray = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n\nvar INSPECT_MAX_BYTES = 50;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true;\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength();\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length);\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length);\n }\n that.length = length;\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype;\n return arr\n};\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n};\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype;\n Buffer.__proto__ = Uint8Array;\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n};\n\nfunction allocUnsafe (that, size) {\n assertSize(size);\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0;\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n};\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0;\n that = createBuffer(that, length);\n\n var actual = that.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual);\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0;\n that = createBuffer(that, length);\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255;\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength; // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array);\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset);\n } else {\n array = new Uint8Array(array, byteOffset, length);\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array;\n that.__proto__ = Buffer.prototype;\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array);\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0;\n that = createBuffer(that, len);\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len);\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n var buffer = Buffer.allocUnsafe(length);\n var pos = 0;\n for (i = 0; i < list.length; ++i) {\n var buf = list[i];\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos);\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string;\n }\n\n var len = string.length;\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n var i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n var str = '';\n var max = INSPECT_MAX_BYTES;\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');\n if (this.length > max) str += ' ... ';\n }\n return '<Buffer ' + str + '>'\n};\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart;\n var y = end - start;\n var len = Math.min(x, y);\n\n var thisCopy = this.slice(thisStart, thisEnd);\n var targetCopy = target.slice(start, end);\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1;\n var arrLength = arr.length;\n var valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i;\n if (dir) {\n var foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n var found = true;\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n var remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n // must be an even number of digits\n var strLen = string.length;\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16);\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0;\n if (isFinite(length)) {\n length = length | 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n var loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return fromByteArray(buf)\n } else {\n return fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n var res = [];\n\n var i = start;\n while (i < end) {\n var firstByte = buf[i];\n var codePoint = null;\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = '';\n var i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = '';\n end = Math.min(buf.length, end);\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n var out = '';\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i]);\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end);\n var res = '';\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n var newBuf;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end);\n newBuf.__proto__ = Buffer.prototype;\n } else {\n var sliceLen = end - start;\n newBuf = new Buffer(sliceLen, undefined);\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start];\n }\n }\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n var val = this[offset + --byteLength];\n var mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var val = this[offset];\n var mul = 1;\n var i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n var i = byteLength;\n var mul = 1;\n var val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length);\n var val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length);\n return read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length);\n return read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var mul = 1;\n var i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n byteLength = byteLength | 0;\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8;\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1;\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = 0;\n var mul = 1;\n var sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n var i = byteLength - 1;\n var mul = 1;\n var sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n } else {\n objectWriteUInt16(this, value, offset, true);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n } else {\n objectWriteUInt16(this, value, offset, false);\n }\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n } else {\n objectWriteUInt32(this, value, offset, true);\n }\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset | 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n } else {\n objectWriteUInt32(this, value, offset, false);\n }\n return offset + 4\n};\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n var len = end - start;\n var i;\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start];\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start];\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0);\n if (code < 256) {\n val = code;\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n var i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString());\n var len = bytes.length;\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n var codePoint;\n var length = string.length;\n var leadSurrogate = null;\n var bytes = [];\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo;\n var byteArray = [];\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nfunction isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n\nexport { Buffer, INSPECT_MAX_BYTES, SlowBuffer, isBuffer, _kMaxLength as kMaxLength };\n","export default {};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar require$$0 = require('fs');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);\n\n/*\n * @author 春风\n * @date 2021/7/8 下午2:53\n **/\nfunction basePullAt(array, indexes) {\n let length = array ? indexes.length : 0, lastIndex = length - 1, previous = 0;\n while (length--) {\n const index = indexes[length];\n if (length == lastIndex || index !== previous) {\n previous = index;\n Array.prototype.splice.call(array, index, 1);\n }\n }\n return array;\n}\n\nfunction remove(array, predicate) {\n const result = [];\n if (!(array && array.length)) {\n return result;\n }\n let index = -1, indexes = [], length = array.length;\n while (++index < length) {\n const value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n}\n\nfunction _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nfunction _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nfunction _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}\n\n/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n */\nfunction _concat(set1, set2) {\n set1 = set1 || [];\n set2 = set2 || [];\n var idx;\n var len1 = set1.length;\n var len2 = set2.length;\n var result = [];\n idx = 0;\n\n while (idx < len1) {\n result[result.length] = set1[idx];\n idx += 1;\n }\n\n idx = 0;\n\n while (idx < len2) {\n result[result.length] = set2[idx];\n idx += 1;\n }\n\n return result;\n}\n\nfunction _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}\n\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nfunction _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n\n combined[combinedIdx] = result;\n\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n\n combinedIdx += 1;\n }\n\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}\n\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\nvar curryN =\n/*#__PURE__*/\n_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n\n return _arity(length, _curryN(length, [], fn));\n});\n\nvar curryN$1 = curryN;\n\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\nfunction _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}\n\n/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nvar _isArray = Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};\n\nfunction _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer [xf] to return a new transformer (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} xf transducer to initialize if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\n\nfunction _dispatchable(methodNames, xf, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n\n var args = Array.prototype.slice.call(arguments, 0);\n var obj = args.pop();\n\n if (!_isArray(obj)) {\n var idx = 0;\n\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, args);\n }\n\n idx += 1;\n }\n\n if (_isTransformer(obj)) {\n var transducer = xf.apply(null, args);\n return transducer(obj);\n }\n }\n\n return fn.apply(this, arguments);\n };\n}\n\nfunction _reduced(x) {\n return x && x['@@transducer/reduced'] ? x : {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}\n\nvar _xfBase = {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};\n\nfunction _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n\n return result;\n}\n\nfunction _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}\n\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\n\nvar _isArrayLike =\n/*#__PURE__*/\n_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n\n if (!x) {\n return false;\n }\n\n if (typeof x !== 'object') {\n return false;\n }\n\n if (_isString(x)) {\n return false;\n }\n\n if (x.nodeType === 1) {\n return !!x.length;\n }\n\n if (x.length === 0) {\n return true;\n }\n\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n\n return false;\n});\n\nvar _isArrayLike$1 = _isArrayLike;\n\nvar XWrap =\n/*#__PURE__*/\nfunction () {\n function XWrap(fn) {\n this.f = fn;\n }\n\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nfunction _xwrap(fn) {\n return new XWrap(fn);\n}\n\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\n\nvar bind =\n/*#__PURE__*/\n_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\n\nvar bind$1 = bind;\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n idx += 1;\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n\n step = iter.next();\n }\n\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind$1(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\nfunction _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n\n if (_isArrayLike$1(list)) {\n return _arrayReduce(fn, acc, list);\n }\n\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}\n\nvar XMap =\n/*#__PURE__*/\nfunction () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n\n return XMap;\n}();\n\nvar _xmap =\n/*#__PURE__*/\n_curry2(function _xmap(f, xf) {\n return new XMap(f, xf);\n});\n\nvar _xmap$1 = _xmap;\n\nfunction _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar toString$2 = Object.prototype.toString;\n\nvar _isArguments =\n/*#__PURE__*/\nfunction () {\n return toString$2.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString$2.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nvar _isArguments$1 = _isArguments;\n\nvar hasEnumBug = !\n/*#__PURE__*/\n{\n toString: null\n}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // Safari bug\n\nvar hasArgsEnumBug =\n/*#__PURE__*/\nfunction () {\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n};\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\n\n\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ?\n/*#__PURE__*/\n_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) :\n/*#__PURE__*/\n_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n\n var prop, nIdx;\n var ks = [];\n\n var checkArgsLength = hasArgsEnumBug && _isArguments$1(obj);\n\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n\n nIdx -= 1;\n }\n }\n\n return ks;\n});\nvar keys$1 = keys;\n\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\n\nvar map =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['fantasy-land/map', 'map'], _xmap$1, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN$1(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n\n case '[object Object]':\n return _reduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys$1(functor));\n\n default:\n return _map(fn, functor);\n }\n}));\n\nvar map$1 = map;\n\n/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nvar _isInteger = Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};\n\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\n\nvar nth =\n/*#__PURE__*/\n_curry2(function nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n});\n\nvar nth$1 = nth;\n\n/**\n * Retrieves the values at given paths of an object.\n *\n * @func\n * @memberOf R\n * @since v0.27.1\n * @category Object\n * @typedefn Idx = [String | Int]\n * @sig [Idx] -> {a} -> [a | Undefined]\n * @param {Array} pathsArray The array of paths to be fetched.\n * @param {Object} obj The object to retrieve the nested properties from.\n * @return {Array} A list consisting of values at paths specified by \"pathsArray\".\n * @see R.path\n * @example\n *\n * R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, 3]\n * R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, undefined]\n */\n\nvar paths =\n/*#__PURE__*/\n_curry2(function paths(pathsArray, obj) {\n return pathsArray.map(function (paths) {\n var val = obj;\n var idx = 0;\n var p;\n\n while (idx < paths.length) {\n if (val == null) {\n return;\n }\n\n p = paths[idx];\n val = _isInteger(p) ? nth$1(p, val) : val[p];\n idx += 1;\n }\n\n return val;\n });\n});\n\nvar paths$1 = paths;\n\n/**\n * Retrieve the value at a given path.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> a | Undefined\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop, R.nth\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n * R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1\n * R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2\n */\n\nvar path =\n/*#__PURE__*/\n_curry2(function path(pathAr, obj) {\n return paths$1([pathAr], obj)[0];\n});\n\nvar path$1 = path;\n\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig Idx -> {s: a} -> a | Undefined\n * @param {String|Number} p The property name or array index\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path, R.nth\n * @example\n *\n * R.prop('x', {x: 100}); //=> 100\n * R.prop('x', {}); //=> undefined\n * R.prop(0, [100]); //=> 100\n * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4\n */\n\nvar prop =\n/*#__PURE__*/\n_curry2(function prop(p, obj) {\n return path$1([p], obj);\n});\n\nvar prop$1 = prop;\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\n\nvar reduce =\n/*#__PURE__*/\n_curry3(_reduce);\n\nvar reduce$1 = reduce;\n\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the second argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -> b] -> [a] -> [b]\n * @sig Apply f => f (a -> b) -> f a -> f b\n * @sig (r -> a -> b) -> (r -> a) -> (r -> b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]\n * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n * // R.ap can also be used as S combinator\n * // when only two functions are passed\n * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\n\nvar ap =\n/*#__PURE__*/\n_curry2(function ap(applyF, applyX) {\n return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n return applyF(x)(applyX(x));\n } : _reduce(function (acc, f) {\n return _concat(acc, map$1(f, applyX));\n }, [], applyF);\n});\n\nvar ap$1 = ap;\n\n/**\n * Returns a list of all the enumerable own properties of the supplied object.\n * Note that the order of the output array is not guaranteed across different\n * JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own properties.\n * @see R.valuesIn, R.keys\n * @example\n *\n * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]\n */\n\nvar values =\n/*#__PURE__*/\n_curry1(function values(obj) {\n var props = keys$1(obj);\n var len = props.length;\n var vals = [];\n var idx = 0;\n\n while (idx < len) {\n vals[idx] = obj[props[idx]];\n idx += 1;\n }\n\n return vals;\n});\n\nvar values$1 = values;\n\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\n\nvar isNil =\n/*#__PURE__*/\n_curry1(function isNil(x) {\n return x == null;\n});\n\nvar isNil$1 = isNil;\n\nfunction _isFunction(x) {\n var type = Object.prototype.toString.call(x);\n return type === '[object Function]' || type === '[object AsyncFunction]' || type === '[object GeneratorFunction]' || type === '[object AsyncGeneratorFunction]';\n}\n\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -> (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n * const madd3 = R.liftN(3, (...args) => R.sum(args));\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\n\nvar liftN =\n/*#__PURE__*/\n_curry2(function liftN(arity, fn) {\n var lifted = curryN$1(arity, fn);\n return curryN$1(arity, function () {\n return _reduce(ap$1, map$1(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n });\n});\n\nvar liftN$1 = liftN;\n\n/**\n * \"lifts\" a function of arity > 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n * const madd3 = R.lift((a, b, c) => a + b + c);\n *\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n *\n * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);\n *\n * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24]\n */\n\nvar lift =\n/*#__PURE__*/\n_curry1(function lift(fn) {\n return liftN$1(fn.length, fn);\n});\n\nvar lift$1 = lift;\n\n/**\n * Returns a curried equivalent of the provided function. The curried function\n * has two unusual capabilities. First, its arguments needn't be provided one\n * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> a) -> (* -> a)\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curryN, R.partial\n * @example\n *\n * const addFourNumbers = (a, b, c, d) => a + b + c + d;\n *\n * const curriedAddFourNumbers = R.curry(addFourNumbers);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\n\nvar curry =\n/*#__PURE__*/\n_curry1(function curry(fn) {\n return curryN$1(fn.length, fn);\n});\n\nvar curry$1 = curry;\n\n/**\n * `_makeFlat` is a helper function that returns a one-level or fully recursive\n * function based on the flag passed in.\n *\n * @private\n */\n\nfunction _makeFlat(recursive) {\n return function flatt(list) {\n var value, jlen, j;\n var result = [];\n var idx = 0;\n var ilen = list.length;\n\n while (idx < ilen) {\n if (_isArrayLike$1(list[idx])) {\n value = recursive ? flatt(list[idx]) : list[idx];\n j = 0;\n jlen = value.length;\n\n while (j < jlen) {\n result[result.length] = value[j];\n j += 1;\n }\n } else {\n result[result.length] = list[idx];\n }\n\n idx += 1;\n }\n\n return result;\n };\n}\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -> {*}) -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(undefined); //=> \"Undefined\"\n */\n\nvar type =\n/*#__PURE__*/\n_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\n\nvar type$1 = type;\n\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -> Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n * R.not(true); //=> false\n * R.not(false); //=> true\n * R.not(0); //=> true\n * R.not(1); //=> false\n */\n\nvar not =\n/*#__PURE__*/\n_curry1(function not(a) {\n return !a;\n});\n\nvar not$1 = not;\n\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> *) -> (*... -> Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n * const isNotNil = R.complement(R.isNil);\n * isNil(null); //=> true\n * isNotNil(null); //=> false\n * isNil(7); //=> false\n * isNotNil(7); //=> true\n */\n\nvar complement =\n/*#__PURE__*/\nlift$1(not$1);\nvar complement$1 = complement;\n\nfunction _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}\n\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implemtation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\n\nfunction _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n\n if (length === 0) {\n return fn();\n }\n\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}\n\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\n\nvar slice =\n/*#__PURE__*/\n_curry3(\n/*#__PURE__*/\n_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\n\nvar slice$1 = slice;\n\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\n\nvar tail =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_checkForMethod('tail',\n/*#__PURE__*/\nslice$1(1, Infinity)));\n\nvar tail$1 = tail;\n\n/**\n * Performs left-to-right function composition. The first argument may have\n * any arity; the remaining arguments must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n */\n\nfunction pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n\n return _arity(arguments[0].length, reduce$1(_pipe, arguments[0], tail$1(arguments)));\n}\n\n/**\n * Returns a new list or string with the elements or characters in reverse\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {Array|String} list\n * @return {Array|String}\n * @example\n *\n * R.reverse([1, 2, 3]); //=> [3, 2, 1]\n * R.reverse([1, 2]); //=> [2, 1]\n * R.reverse([1]); //=> [1]\n * R.reverse([]); //=> []\n *\n * R.reverse('abc'); //=> 'cba'\n * R.reverse('ab'); //=> 'ba'\n * R.reverse('a'); //=> 'a'\n * R.reverse(''); //=> ''\n */\n\nvar reverse =\n/*#__PURE__*/\n_curry1(function reverse(list) {\n return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();\n});\n\nvar reverse$1 = reverse;\n\n/**\n * Performs right-to-left function composition. The last argument may have\n * any arity; the remaining arguments must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipe\n * @example\n *\n * const classyGreeting = (firstName, lastName) => \"The name's \" + lastName + \", \" + firstName + \" \" + lastName\n * const yellGreeting = R.compose(R.toUpper, classyGreeting);\n * yellGreeting('James', 'Bond'); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7\n *\n * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b)))\n */\n\nfunction compose() {\n if (arguments.length === 0) {\n throw new Error('compose requires at least one argument');\n }\n\n return pipe.apply(this, reverse$1(arguments));\n}\n\nfunction _identity(x) {\n return x;\n}\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\n\nvar identity =\n/*#__PURE__*/\n_curry1(_identity);\n\nvar identity$1 = identity;\n\nfunction _arrayFromIterator(iter) {\n var list = [];\n var next;\n\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n\n return list;\n}\n\nfunction _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n\n idx += 1;\n }\n\n return false;\n}\n\nfunction _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}\n\n// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\n\nvar _objectIs$1 = typeof Object.is === 'function' ? Object.is : _objectIs;\n\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparision of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n\n var b = _arrayFromIterator(bIterator);\n\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n } // if *a* array contains any element that is not included in *b*\n\n\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\n\nfunction _equals(a, b, stackA, stackB) {\n if (_objectIs$1(a, b)) {\n return true;\n }\n\n var typeA = type$1(a);\n\n if (typeA !== type$1(b)) {\n return false;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n\n break;\n\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs$1(a.valueOf(), b.valueOf()))) {\n return false;\n }\n\n break;\n\n case 'Date':\n if (!_objectIs$1(a.valueOf(), b.valueOf())) {\n return false;\n }\n\n break;\n\n case 'Error':\n return a.name === b.name && a.message === b.message;\n\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n\n break;\n }\n\n var idx = stackA.length - 1;\n\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n\n idx -= 1;\n }\n\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n\n var keysA = keys$1(a);\n\n if (keysA.length !== keys$1(b).length) {\n return false;\n }\n\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n idx = keysA.length - 1;\n\n while (idx >= 0) {\n var key = keysA[idx];\n\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n\n idx -= 1;\n }\n\n return true;\n}\n\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\n\nvar equals =\n/*#__PURE__*/\n_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\n\nvar equals$1 = equals;\n\nfunction _indexOf(list, a, idx) {\n var inf, item; // Array.prototype.indexOf doesn't exist below IE9\n\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n\n while (idx < list.length) {\n item = list[idx];\n\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n } // non-zero numbers can utilise Set\n\n\n return list.indexOf(a, idx);\n // all these types can utilise Set\n\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n\n }\n } // anything else not covered above, defer to R.equals\n\n\n while (idx < list.length) {\n if (equals$1(list[idx], a)) {\n return idx;\n }\n\n idx += 1;\n }\n\n return -1;\n}\n\nfunction _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}\n\nfunction _quote(s) {\n var escaped = s.replace(/\\\\/g, '\\\\\\\\').replace(/[\\b]/g, '\\\\b') // \\b matches word boundary; [\\b] matches backspace\n .replace(/\\f/g, '\\\\f').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t').replace(/\\v/g, '\\\\v').replace(/\\0/g, '\\\\0');\n return '\"' + escaped.replace(/\"/g, '\\\\\"') + '\"';\n}\n\n/**\n * Polyfill from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString>.\n */\nvar pad = function pad(n) {\n return (n < 10 ? '0' : '') + n;\n};\n\nvar _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {\n return d.toISOString();\n} : function _toISOString(d) {\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';\n};\n\nvar _toISOString$1 = _toISOString;\n\nfunction _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}\n\nfunction _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n\n idx += 1;\n }\n\n return result;\n}\n\nfunction _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}\n\nvar XFilter =\n/*#__PURE__*/\nfunction () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n\n return XFilter;\n}();\n\nvar _xfilter =\n/*#__PURE__*/\n_curry2(function _xfilter(f, xf) {\n return new XFilter(f, xf);\n});\n\nvar _xfilter$1 = _xfilter;\n\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\nvar filter =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['filter'], _xfilter$1, function (pred, filterable) {\n return _isObject(filterable) ? _reduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n\n return acc;\n }, {}, keys$1(filterable)) : // else\n _filter(pred, filterable);\n}));\n\nvar filter$1 = filter;\n\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 === 1;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\n\nvar reject =\n/*#__PURE__*/\n_curry2(function reject(pred, filterable) {\n return filter$1(_complement(pred), filterable);\n});\n\nvar reject$1 = reject;\n\nfunction _toString(x, seen) {\n var recur = function recur(y) {\n var xs = seen.concat([x]);\n return _includes(y, xs) ? '<Circular>' : _toString(y, xs);\n }; // mapPairs :: (Object, [String]) -> [String]\n\n\n var mapPairs = function (obj, keys) {\n return _map(function (k) {\n return _quote(k) + ': ' + recur(obj[k]);\n }, keys.slice().sort());\n };\n\n switch (Object.prototype.toString.call(x)) {\n case '[object Arguments]':\n return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';\n\n case '[object Array]':\n return '[' + _map(recur, x).concat(mapPairs(x, reject$1(function (k) {\n return /^\\d+$/.test(k);\n }, keys$1(x)))).join(', ') + ']';\n\n case '[object Boolean]':\n return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();\n\n case '[object Date]':\n return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString$1(x))) + ')';\n\n case '[object Null]':\n return 'null';\n\n case '[object Number]':\n return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n\n case '[object String]':\n return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);\n\n case '[object Undefined]':\n return 'undefined';\n\n default:\n if (typeof x.toString === 'function') {\n var repr = x.toString();\n\n if (repr !== '[object Object]') {\n return repr;\n }\n }\n\n return '{' + mapPairs(x, keys$1(x)).join(', ') + '}';\n }\n}\n\n/**\n * Returns the string representation of the given value. `eval`'ing the output\n * should result in a value equivalent to the input value. Many of the built-in\n * `toString` methods do not satisfy this requirement.\n *\n * If the given value is an `[object Object]` with a `toString` method other\n * than `Object.prototype.toString`, this method is invoked with no arguments\n * to produce the return value. This means user-defined constructor functions\n * can provide a suitable `toString` method. For example:\n *\n * function Point(x, y) {\n * this.x = x;\n * this.y = y;\n * }\n *\n * Point.prototype.toString = function() {\n * return 'new Point(' + this.x + ', ' + this.y + ')';\n * };\n *\n * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category String\n * @sig * -> String\n * @param {*} val\n * @return {String}\n * @example\n *\n * R.toString(42); //=> '42'\n * R.toString('abc'); //=> '\"abc\"'\n * R.toString([1, 2, 3]); //=> '[1, 2, 3]'\n * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{\"bar\": 2, \"baz\": 3, \"foo\": 1}'\n * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date(\"2001-02-03T04:05:06.000Z\")'\n */\n\nvar toString =\n/*#__PURE__*/\n_curry1(function toString(val) {\n return _toString(val, []);\n});\n\nvar toString$1 = toString;\n\n/**\n * Returns the result of concatenating the given lists or strings.\n *\n * Note: `R.concat` expects both arguments to be of the same type,\n * unlike the native `Array.prototype.concat` method. It will throw\n * an error if you `concat` an Array with a non-Array value.\n *\n * Dispatches to the `concat` method of the first argument, if present.\n * Can also concatenate two members of a [fantasy-land\n * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @sig String -> String -> String\n * @param {Array|String} firstList The first list\n * @param {Array|String} secondList The second list\n * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of\n * `secondList`.\n *\n * @example\n *\n * R.concat('ABC', 'DEF'); // 'ABCDEF'\n * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n * R.concat([], []); //=> []\n */\n\nvar concat =\n/*#__PURE__*/\n_curry2(function concat(a, b) {\n if (_isArray(a)) {\n if (_isArray(b)) {\n return a.concat(b);\n }\n\n throw new TypeError(toString$1(b) + ' is not an array');\n }\n\n if (_isString(a)) {\n if (_isString(b)) {\n return a + b;\n }\n\n throw new TypeError(toString$1(b) + ' is not a string');\n }\n\n if (a != null && _isFunction(a['fantasy-land/concat'])) {\n return a['fantasy-land/concat'](b);\n }\n\n if (a != null && _isFunction(a.concat)) {\n return a.concat(b);\n }\n\n throw new TypeError(toString$1(a) + ' does not have a method named \"concat\" or \"fantasy-land/concat\"');\n});\n\nvar concat$1 = concat;\n\nvar _Set =\n/*#__PURE__*/\nfunction () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n }; //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n\n\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n }; //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n\n\n return _Set;\n}();\n\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n\n return false;\n }\n } // these types can all utilise the native Set\n\n\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n\n return false;\n }\n }\n\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n\n return false;\n }\n\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n\n set._nativeSet.add(item);\n\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n }\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n\n return false;\n }\n\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n\n return false;\n }\n\n return true;\n }\n\n /* falls through */\n\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n\n return false;\n } // scan through all previously applied items\n\n\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n\n return false;\n }\n\n return true;\n }\n} // A simple Set type that honours R.equals semantics\n\n\nvar _Set$1 = _Set;\n\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other\n * types are supported if they define `<Type>.empty`,\n * `<Type>.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> a\n * @param {*} x\n * @return {*}\n * @example\n *\n * R.empty(Just(42)); //=> Nothing()\n * R.empty([1, 2, 3]); //=> []\n * R.empty('unicorns'); //=> ''\n * R.empty({x: 1, y: 2}); //=> {}\n */\n\nvar empty =\n/*#__PURE__*/\n_curry1(function empty(x) {\n return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments$1(x) ? function () {\n return arguments;\n }() : void 0 // else\n ;\n});\n\nvar empty$1 = empty;\n\nvar XFind =\n/*#__PURE__*/\nfunction () {\n function XFind(f, xf) {\n this.xf = xf;\n this.f = f;\n this.found = false;\n }\n\n XFind.prototype['@@transducer/init'] = _xfBase.init;\n\n XFind.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, void 0);\n }\n\n return this.xf['@@transducer/result'](result);\n };\n\n XFind.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, input));\n }\n\n return result;\n };\n\n return XFind;\n}();\n\nvar _xfind =\n/*#__PURE__*/\n_curry2(function _xfind(f, xf) {\n return new XFind(f, xf);\n});\n\nvar _xfind$1 = _xfind;\n\n/**\n * Returns the first element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Dispatches to the `find` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.find(R.propEq('a', 2))(xs); //=> {a: 2}\n * R.find(R.propEq('a', 4))(xs); //=> undefined\n */\n\nvar find =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\n_dispatchable(['find'], _xfind$1, function find(fn, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (fn(list[idx])) {\n return list[idx];\n }\n\n idx += 1;\n }\n}));\n\nvar find$1 = find;\n\n/**\n * Returns a new list by pulling every item out of it (and all its sub-arrays)\n * and putting them in a new array, depth-first.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b]\n * @param {Array} list The array to consider.\n * @return {Array} The flattened list.\n * @see R.unnest\n * @example\n *\n * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);\n * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n */\n\nvar flatten =\n/*#__PURE__*/\n_curry1(\n/*#__PURE__*/\n_makeFlat(true));\n\nvar flatten$1 = flatten;\n\n/**\n * Creates a new object from a list key-value pairs. If a key appears in\n * multiple pairs, the rightmost pair is included in the object.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [[k,v]] -> {k: v}\n * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object.\n * @return {Object} The object made by pairing up `keys` and `values`.\n * @see R.toPairs, R.pair\n * @example\n *\n * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3}\n */\n\nvar fromPairs =\n/*#__PURE__*/\n_curry1(function fromPairs(pairs) {\n var result = {};\n var idx = 0;\n\n while (idx < pairs.length) {\n result[pairs[idx][0]] = pairs[idx][1];\n idx += 1;\n }\n\n return result;\n});\n\nvar fromPairs$1 = fromPairs;\n\n/**\n * Returns whether or not a path exists in an object. Only the object's\n * own properties are checked.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> Boolean\n * @param {Array} path The path to use.\n * @param {Object} obj The object to check the path in.\n * @return {Boolean} Whether the path exists.\n * @see R.has\n * @example\n *\n * R.hasPath(['a', 'b'], {a: {b: 2}}); // => true\n * R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true\n * R.hasPath(['a', 'b'], {a: {c: 2}}); // => false\n * R.hasPath(['a', 'b'], {}); // => false\n */\n\nvar hasPath =\n/*#__PURE__*/\n_curry2(function hasPath(_path, obj) {\n if (_path.length === 0 || isNil$1(obj)) {\n return false;\n }\n\n var val = obj;\n var idx = 0;\n\n while (idx < _path.length) {\n if (!isNil$1(val) && _has(_path[idx], val)) {\n val = val[_path[idx]];\n idx += 1;\n } else {\n return false;\n }\n }\n\n return true;\n});\n\nvar hasPath$1 = hasPath;\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\n\nvar uniqBy =\n/*#__PURE__*/\n_curry2(function uniqBy(fn, list) {\n var set = new _Set$1();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n\n if (set.add(appliedItem)) {\n result.push(item);\n }\n\n idx += 1;\n }\n\n return result;\n});\n\nvar uniqBy$1 = uniqBy;\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\n\nvar uniq =\n/*#__PURE__*/\nuniqBy$1(identity$1);\nvar uniq$1 = uniq;\n\nfunction _objectAssign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n var idx = 1;\n var length = arguments.length;\n\n while (idx < length) {\n var source = arguments[idx];\n\n if (source != null) {\n for (var nextKey in source) {\n if (_has(nextKey, source)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n\n idx += 1;\n }\n\n return output;\n}\n\nvar _objectAssign$1 = typeof Object.assign === 'function' ? Object.assign : _objectAssign;\n\n/**\n * Turns a named method with a specified arity into a function that can be\n * called directly supplied with arguments and a target object.\n *\n * The returned function is curried and accepts `arity + 1` parameters where\n * the final parameter is the target object.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *)\n * @param {Number} arity Number of arguments the returned function should take\n * before the target object.\n * @param {String} method Name of any of the target object's methods to call.\n * @return {Function} A new curried function.\n * @see R.construct\n * @example\n *\n * const sliceFrom = R.invoker(1, 'slice');\n * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'\n * const sliceFrom6 = R.invoker(2, 'slice')(6);\n * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'\n *\n * const dog = {\n * speak: async () => 'Woof!'\n * };\n * const speak = R.invoker(0, 'speak');\n * speak(dog).then(console.log) //~> 'Woof!'\n *\n * @symb R.invoker(0, 'method')(o) = o['method']()\n * @symb R.invoker(1, 'method')(a, o) = o['method'](a)\n * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)\n */\n\nvar invoker =\n/*#__PURE__*/\n_curry2(function invoker(arity, method) {\n return curryN$1(arity + 1, function () {\n var target = arguments[arity];\n\n if (target != null && _isFunction(target[method])) {\n return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));\n }\n\n throw new TypeError(toString$1(target) + ' does not have a method named \"' + method + '\"');\n });\n});\n\nvar invoker$1 = invoker;\n\n/**\n * See if an object (`val`) is an instance of the supplied constructor. This\n * function will check up the inheritance chain, if any.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Type\n * @sig (* -> {*}) -> a -> Boolean\n * @param {Object} ctor A constructor\n * @param {*} val The value to test\n * @return {Boolean}\n * @example\n *\n * R.is(Object, {}); //=> true\n * R.is(Number, 1); //=> true\n * R.is(Object, 1); //=> false\n * R.is(String, 's'); //=> true\n * R.is(String, new String('')); //=> true\n * R.is(Object, new String('')); //=> true\n * R.is(Object, 's'); //=> false\n * R.is(Number, {}); //=> false\n */\n\nvar is =\n/*#__PURE__*/\n_curry2(function is(Ctor, val) {\n return val != null && val.constructor === Ctor || val instanceof Ctor;\n});\n\nvar is$1 = is;\n\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty\n * @example\n *\n * R.isEmpty([1, 2, 3]); //=> false\n * R.isEmpty([]); //=> true\n * R.isEmpty(''); //=> true\n * R.isEmpty(null); //=> false\n * R.isEmpty({}); //=> true\n * R.isEmpty({length: 0}); //=> false\n */\n\nvar isEmpty =\n/*#__PURE__*/\n_curry1(function isEmpty(x) {\n return x != null && equals$1(x, empty$1(x));\n});\n\nvar isEmpty$1 = isEmpty;\n\n/**\n * Merges a list of objects together into one object.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig [{k: v}] -> {k: v}\n * @param {Array} list An array of objects\n * @return {Object} A merged object.\n * @see R.reduce\n * @example\n *\n * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}\n * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2}\n * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 }\n */\n\nvar mergeAll =\n/*#__PURE__*/\n_curry1(function mergeAll(list) {\n return _objectAssign$1.apply(null, [{}].concat(list));\n});\n\nvar mergeAll$1 = mergeAll;\n\n/**\n * Returns a partial copy of an object omitting the keys specified.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [String] -> {String: *} -> {String: *}\n * @param {Array} names an array of String property names to omit from the new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with properties from `names` not on it.\n * @see R.pick\n * @example\n *\n * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}\n */\n\nvar omit =\n/*#__PURE__*/\n_curry2(function omit(names, obj) {\n var result = {};\n var index = {};\n var idx = 0;\n var len = names.length;\n\n while (idx < len) {\n index[names[idx]] = 1;\n idx += 1;\n }\n\n for (var prop in obj) {\n if (!index.hasOwnProperty(prop)) {\n result[prop] = obj[prop];\n }\n }\n\n return result;\n});\n\nvar omit$1 = omit;\n\n/**\n * Returns `true` if the specified object property is equal, in\n * [`R.equals`](#equals) terms, to the given value; `false` otherwise.\n * You can test multiple properties with [`R.whereEq`](#whereEq).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig String -> a -> Object -> Boolean\n * @param {String} name\n * @param {*} val\n * @param {*} obj\n * @return {Boolean}\n * @see R.whereEq, R.propSatisfies, R.equals\n * @example\n *\n * const abby = {name: 'Abby', age: 7, hair: 'blond'};\n * const fred = {name: 'Fred', age: 12, hair: 'brown'};\n * const rusty = {name: 'Rusty', age: 10, hair: 'brown'};\n * const alois = {name: 'Alois', age: 15, disposition: 'surly'};\n * const kids = [abby, fred, rusty, alois];\n * const hasBrownHair = R.propEq('hair', 'brown');\n * R.filter(hasBrownHair, kids); //=> [fred, rusty]\n */\n\nvar propEq =\n/*#__PURE__*/\n_curry3(function propEq(name, val, obj) {\n return equals$1(val, obj[name]);\n});\n\nvar propEq$1 = propEq;\n\n/**\n * Replace a substring or regex match in a string with a replacement.\n *\n * The first two parameters correspond to the parameters of the\n * `String.prototype.replace()` function, so the second parameter can also be a\n * function.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category String\n * @sig RegExp|String -> String -> String -> String\n * @param {RegExp|String} pattern A regular expression or a substring to match.\n * @param {String} replacement The string to replace the matches with.\n * @param {String} str The String to do the search and replacement in.\n * @return {String} The result.\n * @example\n *\n * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'\n * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'\n *\n * // Use the \"g\" (global) flag to replace all occurrences:\n * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar'\n */\n\nvar replace =\n/*#__PURE__*/\n_curry3(function replace(regex, replacement, str) {\n return str.replace(regex, replacement);\n});\n\nvar replace$1 = replace;\n\n/**\n * Splits a string into an array of strings based on the given\n * separator.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig (String | RegExp) -> String -> [String]\n * @param {String|RegExp} sep The pattern.\n * @param {String} str The string to separate into an array.\n * @return {Array} The array of strings from `str` separated by `sep`.\n * @see R.join\n * @example\n *\n * const pathComponents = R.split('/');\n * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node']\n *\n * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd']\n */\n\nvar split$1 =\n/*#__PURE__*/\ninvoker$1(1, 'split');\nvar split$2 = split$1;\n\nvar ws = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u2000\\u2001\\u2002\\u2003' + '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028' + '\\u2029\\uFEFF';\nvar zeroWidth = '\\u200b';\nvar hasProtoTrim = typeof String.prototype.trim === 'function';\n/**\n * Removes (strips) whitespace from both ends of the string.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to trim.\n * @return {String} Trimmed version of `str`.\n * @example\n *\n * R.trim(' xyz '); //=> 'xyz'\n * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z']\n */\n\nvar trim = !hasProtoTrim ||\n/*#__PURE__*/\nws.trim() || !\n/*#__PURE__*/\nzeroWidth.trim() ?\n/*#__PURE__*/\n_curry1(function trim(str) {\n var beginRx = new RegExp('^[' + ws + '][' + ws + ']*');\n var endRx = new RegExp('[' + ws + '][' + ws + ']*$');\n return str.replace(beginRx, '').replace(endRx, '');\n}) :\n/*#__PURE__*/\n_curry1(function trim(str) {\n return str.trim();\n});\nvar trim$1 = trim;\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The first and second lists concatenated, with\n * duplicates removed.\n * @example\n *\n * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4]\n */\n\nvar union =\n/*#__PURE__*/\n_curry2(\n/*#__PURE__*/\ncompose(uniq$1, _concat));\n\nvar union$1 = union;\n\nconst trimAll = (data) => {\n if (isNil$1(data) || isEmpty$1(data)) {\n return data;\n }\n const type = type$1(data);\n switch (type) {\n case 'String': {\n return trim$1(data);\n }\n case 'Array': {\n return filter$1(complement$1(isEmpty$1))(data);\n }\n default: {\n return data;\n }\n }\n};\n\nconst split = (separator, data) => {\n if (isEmpty$1(data) || isNil$1(data)) {\n return [];\n }\n return pipe(split$2(separator), trimAll)(data);\n};\n\n// sessionStorage\nconst YS = {\n set: (name, value) => {\n if (typeof window !== 'undefined') {\n window.sessionStorage.setItem(name, value);\n }\n },\n get: (name) => {\n if (typeof window !== 'undefined') {\n return window.sessionStorage.getItem(name);\n }\n return null;\n },\n remove: (name) => {\n if (typeof window !== 'undefined') {\n window.sessionStorage.removeItem(name);\n }\n },\n clear: () => {\n if (typeof window !== 'undefined') {\n window.sessionStorage.clear();\n }\n }\n};\n// locationStorage\nconst YL = {\n set: (name, value) => {\n if (typeof window !== 'undefined') {\n window.localStorage.setItem(name, value);\n }\n },\n get: (name) => {\n if (typeof window !== 'undefined') {\n return window.localStorage.getItem(name);\n }\n return null;\n },\n remove: (name) => {\n if (typeof window !== 'undefined') {\n window.localStorage.removeItem(name);\n }\n },\n clear: () => {\n if (typeof window !== 'undefined') {\n window.localStorage.clear();\n }\n }\n};\n\n// cookie\nconst YC = {\n set: (name, value, exdays) => {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n const expires = `expires=${d.toUTCString()}`;\n document.cookie = `${name}=${escape(value)};${expires};path=/`;\n },\n get: (name) => {\n const str = `${name}=`;\n const ca = document.cookie.split(';');\n for (let i = 0; i < ca.length; i += 1) {\n let c = ca[i];\n while (c.charAt(0) === ' ')\n c = c.substring(1);\n if (c.indexOf(str) !== -1)\n return c.substring(str.length, c.length);\n }\n return undefined;\n },\n};\n\n/**\n * 仅触发一次事件\n *\n * @private\n *\n * @param node DOM 节点\n * @param name 事件名称\n * @param callback 回调函数\n */\nfunction once(node, name, fn, options) {\n function listener(event) {\n node.removeEventListener(name, listener);\n fn(event);\n }\n node.addEventListener(name, listener, options);\n}\n/**\n * 监听脚本加载事件 - IE 兼容\n *\n * @private\n *\n * @param node DOM 节点\n * @param callback 回调函数\n */\nfunction listenWithIE(node, callback) {\n node.onreadystatechange = function () {\n if (node.readyState === 'loaded' || node.readyState === 'complete') {\n node.onreadystatechange = null;\n callback();\n }\n };\n}\n/**\n * 监听脚本加载事件 - 其他浏览器\n *\n * @private\n *\n * @param node DOM 节点\n * @param callback 回调函数\n */\nfunction listen(node, onSuccess, onError) {\n once(node, 'load', onSuccess);\n once(node, 'error', onError);\n}\n// 允许的属性名单\nconst allowLists = [\n 'id',\n 'type',\n 'async',\n 'defer',\n 'crossOrigin',\n 'integrity',\n 'noModule',\n];\n/**\n * 动态加载脚本\n *\n * @param src 文件地址\n * @param attrs 可选的属性\n *\n * @returns dom 节点\n *\n * @example\n *\n * try {\n * const src = 'https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js'\n *\n * await loadScript(src, { id: 'jquery.3.6.0.min' })\n * } catch {\n * alert('加载失败')\n * }\n */\nfunction loadScript(umd, progectId, attrs) {\n return new Promise((resolve, reject) => {\n const scriptNode = document.createElement('script');\n // const styleNode: HTMLLinkElement = document.createElement('link');\n // const id = uuidv4();\n scriptNode.id = progectId;\n // styleNode.id = id;\n // 监听事件\n if (scriptNode.readyState) {\n listenWithIE(scriptNode, () => resolve(scriptNode));\n }\n else {\n listen(scriptNode, () => resolve(scriptNode), () => {\n reject();\n document.removeChild(document.getElementById(progectId));\n });\n }\n // 设置白名单属性\n if (attrs) {\n allowLists.forEach(attrName => {\n if (attrName in attrs) {\n const value = attrs[attrName];\n if (typeof value === 'string') {\n scriptNode.setAttribute(attrName, value);\n // styleNode.setAttribute(attrName, value);\n }\n else if (typeof value === 'boolean') {\n // 布尔值与字符串的设置不太一样\n scriptNode[attrName] = value;\n }\n }\n });\n }\n // 设置资源地址\n scriptNode.src = umd.js;\n // styleNode.href = umd.css;\n // 插入到页面中\n document.body.appendChild(scriptNode);\n // document.body.appendChild(styleNode);\n });\n}\nfunction unLoadScript(progectId) {\n if (document.getElementById(progectId)) {\n const scriptNode = document.getElementById(progectId);\n document.body.removeChild(scriptNode);\n }\n}\n\nconst isDate = (value) => {\n let date = value;\n if (value instanceof Date) {\n date = value;\n }\n else if (typeof value === 'string' &&\n String(value).length >= 13 &&\n !isNaN(value)) {\n date = Number(value);\n }\n else if (typeof value === 'string' && value.includes('-')) {\n date = value.replace(/-/g, '/');\n }\n return new Date(date) && String(new Date(date)) !== 'Invalid Date';\n};\n\nconst toDate = (value) => {\n if (isDate(value)) {\n let date = value;\n if (value instanceof Date) {\n date = value;\n }\n else if (typeof value === 'string' &&\n String(value).length >= 13 &&\n !isNaN(value)) {\n date = Number(value);\n }\n else if (typeof value === 'string' && value.includes('-')) {\n date = value.replace(/-/g, '/');\n }\n return new Date(date).getTime();\n }\n return 0;\n};\n\n/**\n * 获取时间搓 消除-连接时,默认时间为8点的问题\n * @param date 时间\n * return number 时间搓。单位:毫秒\n * */\nconst getDate = (date) => {\n const dateStr = date.replace(/-/g, '/');\n return new Date(dateStr).valueOf();\n};\n\nconst dateFormat = (date, format) => {\n if (!isDate(date))\n return null;\n // 时间格式化函数\n let time;\n if (!isNaN(date)) {\n date = Number(date);\n }\n else if (typeof date === 'string' && date.includes('-')) {\n date = date.replace(/-/g, '/');\n }\n time = new Date(date);\n const o = {\n YYYY: time.getFullYear(),\n YY: `${time.getFullYear()}`.slice(-2),\n MM: `0${time.getMonth() + 1}`.slice(-2),\n M: time.getMonth() + 1,\n DD: `0${time.getDate()}`.slice(-2),\n D: time.getDate(),\n HH: `0${time.getHours()}`.slice(-2),\n H: time.getHours(),\n hh: `0${time.getHours() % 12}`.slice(-2),\n h: time.getHours() % 12,\n mm: `0${time.getMinutes()}`.slice(-2),\n m: time.getMinutes(),\n ss: `0${time.getSeconds()}`.slice(-2),\n s: time.getSeconds(),\n w: (function () {\n return ['日', '一', '二', '三', '四', '五', '六'][time.getDay()];\n })(),\n };\n for (const k in o) {\n format = format.replace(k, o[k]);\n }\n return format;\n};\n\n/**\n * 时光流逝\n * @param startDate string 开始时间\n * @param flowTime number 流逝时长 单位秒\n * @param format string 返回格式 默认: 'HH:mm:ss'\n */\nconst timeFlow = (startDate, flowTime, format = 'HH:mm:ss') => (dateFormat(getDate(startDate) + flowTime * 1000, format));\n\n/**\n * 字符串填充\n * @param type sting 填充左侧还是右侧\n * @param sourceStr string 原字符串\n * @param len number 填充后长度\n * @param charStr string 填充的字符\n * @returns string\n */\nconst strPad = (type, sourceStr, len, charStr) => {\n let retStr = '';\n if (sourceStr.length > len)\n return sourceStr;\n if (type === 'left') {\n // leftPad\n retStr = new Array(len - sourceStr.length + 1).join(charStr) + sourceStr;\n }\n else {\n // rightPad\n retStr = sourceStr + new Array(len - sourceStr.length + 1).join(charStr);\n }\n return retStr;\n};\n\n/**\n * 时长展示 比如:300秒 展示为:0:5\n * @param time number 单位:秒\n * @param format 返回的结果格式 {mm}\n * @param allowEmpty 是否允许time为空\n */\nconst [oneDay$1, oneHour$1, oneMinute$1] = [86400, 3600, 60];\nconst formatTime = (time, format, allowEmpty = true) => {\n let timelen = time < 0 ? 0 : parseFloat(`${time}`);\n if ((isNaN(timelen) || !timelen) && !(allowEmpty && timelen === 0)) { // 0代表无数据,显示-\n return '-';\n }\n let [days, hours, minutes, seconds] = [undefined, undefined, undefined, undefined];\n if (format.indexOf('{DD}') > -1) {\n days = Math.floor(timelen / oneDay$1);\n timelen = Math.floor(timelen % oneDay$1);\n }\n if (format.indexOf('{HH}') > -1) {\n hours = Math.floor(timelen / oneHour$1);\n timelen = Math.floor(timelen % oneHour$1);\n }\n if (format.indexOf('{mm}') > -1) {\n minutes = Math.floor(timelen / oneMinute$1);\n timelen = Math.floor(timelen % oneMinute$1);\n }\n seconds = timelen;\n const timeStr = format\n .replace('{ss}', typeof seconds === 'number' ? strPad('left', String(seconds), 2, '0') : '')\n .replace('{mm}', typeof minutes === 'number' ? strPad('left', String(minutes), 2, '0') : '')\n .replace('{HH}', typeof hours === 'number' ? strPad('left', String(hours), 2, '0') : '')\n .replace('{DD}', typeof days === 'number' ? strPad('left', String(days), 2, '0') : '');\n return timeStr;\n};\n\n/**\n * 计算两个时间の间隔\n * @param startTime 开始时间\n * @param endTime 结束时间\n * @param unit 返回的时间单位 s:秒(默认) m:分钟 h: 小时 d: 天\n * @param fixed 小数位\n * return number 间隔时长。单位:秒\n * */\nconst [oneDay, oneHour, oneMinute] = [86400, 3600, 60];\nconst calTimeLen = (startTime, endTime, unit = 's', fixed) => {\n let unitTime;\n switch (unit) {\n case 'm':\n unitTime = 1000 * oneMinute;\n break;\n case 'h':\n unitTime = 1000 * oneHour;\n break;\n case 'd':\n unitTime = 1000 * oneDay;\n break;\n default:\n unitTime = 1000;\n }\n let interval = (getDate(endTime) - getDate(startTime)) / unitTime;\n // 四舍五入\n interval = typeof fixed === 'number' ? Number(interval.toFixed(fixed)) : interval;\n return interval;\n};\n\nconst treeReduce = (target, childKey, data) => {\n const hasChildren = (node) => {\n return hasPath$1([childKey], node);\n };\n const Tree = {\n reduce: curry$1((reducerFn, init, node) => {\n const acc = reducerFn(init, node);\n if (!hasChildren(node)) {\n return acc;\n }\n return node[childKey]\n ? node[childKey].reduce(Tree.reduce(reducerFn), acc)\n : acc;\n }),\n find: curry$1((findFn, init, node) => {\n return pipe(map$1(Tree.reduce(findFn, init)), flatten$1)(node);\n })\n };\n const fn = (arr, data) => {\n if ((target.value && data[target.key] && data[target.key] === target.value) ||\n (!target.value && data[target.key])) {\n return arr.concat([omit$1([childKey], data)]);\n }\n else {\n return arr;\n }\n };\n const type = type$1(data);\n switch (type) {\n case 'Object': {\n return Tree.reduce(fn, [])(data);\n }\n case 'Array': {\n return Tree.find(fn, [])(data);\n }\n default: {\n return data;\n }\n }\n};\n\nconst treeFind = (target, childKey, data) => {\n const hasChildren = (node) => {\n return childKey && hasPath$1([childKey], node) && !isEmpty$1(node[childKey]);\n };\n const Tree = {\n reduce: curry$1((fn, init, node) => {\n const acc = fn(init, node);\n if (!hasChildren(node) && node[target.key] === target.value) {\n return acc;\n }\n return childKey && node[childKey] && !isEmpty$1(node[childKey]) ? Tree.reduce(findFn, acc)(node[childKey]) : acc;\n }),\n find: curry$1((fn, init, node) => {\n return pipe(map$1(Tree.reduce(fn, init)), flatten$1, union$1(init))(node);\n })\n };\n const reducerFn = (arr, data) => {\n if ((target.value && data[target.key] && data[target.key] === target.value) ||\n (!target.value && data[target.key])) {\n return childKey ? arr.concat([omit$1([childKey], data)]) : arr.concat([data]);\n }\n else {\n return arr;\n }\n };\n const findFn = (arr, data) => {\n const keys = Object.keys(data);\n const result = [];\n keys.map((key) => {\n result.push(data[key]);\n });\n return Tree.find(reducerFn, arr)(result);\n };\n const type = type$1(data);\n switch (type) {\n case 'Object': {\n return Tree.reduce(findFn, [])(data);\n }\n case 'Array': {\n return Tree.find(reducerFn, [])(data);\n }\n default: {\n return [];\n }\n }\n};\n\nconst treePaths = (target, childKey, data) => {\n const hasChildren = (node) => {\n return hasPath$1([childKey], node) && !isEmpty$1(node[childKey]);\n };\n const Tree = {\n reduce: curry$1((reducerFn, init, preNode, node) => {\n const acc = reducerFn(init, preNode, node);\n if (!hasChildren(node) && node[target.key] === target.value) {\n if (preNode.path) {\n acc.splice(0, 0, preNode.path);\n }\n return acc;\n }\n return node[childKey] && !isEmpty$1(node[childKey]) ? Tree.reduce(findFn, [], omit$1([childKey], node))(node[childKey]) : acc;\n }),\n find: curry$1((findFn, init, preNode, node) => {\n return pipe(map$1(Tree.reduce(findFn, init, preNode)), flatten$1)(node);\n })\n };\n const reducerFn = (arr, _preNode, data) => {\n if ((target.value && data[target.key] && data[target.key] === target.value) ||\n (!target.value && data[target.key])) {\n return arr.concat([data.path]);\n }\n else {\n return arr;\n }\n };\n const findFn = (arr, preNode, data) => {\n if (!data || isEmpty$1(data)) {\n return arr;\n }\n const keys = Object.keys(data);\n const result = [];\n keys.map((key) => {\n result.push(data[key]);\n });\n return Tree.find(reducerFn, arr, preNode)(result);\n };\n const type = type$1(data);\n switch (type) {\n case 'Object': {\n return Tree.reduce(findFn, [], {})(data);\n }\n case 'Array': {\n return Tree.find(reducerFn, [], {})(data);\n }\n default: {\n return [];\n }\n }\n};\n\nconst pickAll = (key, childKey, data) => {\n const hasChildren = (node) => {\n return hasPath$1([childKey], node);\n };\n const Tree = {\n reduce: curry$1((reducerFn, init, node) => {\n const acc = reducerFn(init, node);\n if (!hasChildren(node)) {\n const res = acc && acc.length ? map$1((item) => {\n return item[key] || item;\n })(acc) : [];\n return res;\n }\n return node[childKey]\n ? node[childKey].reduce(Tree.reduce(reducerFn), acc)\n : acc;\n }),\n find: curry$1((findFn, init, node) => {\n return pipe(map$1(Tree.reduce(findFn, init)), flatten$1)(node);\n })\n };\n const fn = (arr, data) => {\n if (data[key]) {\n return arr.concat([omit$1([childKey], data)]);\n }\n else {\n return arr;\n }\n };\n const type = type$1(data);\n switch (type) {\n case 'Object': {\n return Tree.reduce(fn, [])(data);\n }\n case 'Array': {\n return Tree.find(fn, [])(data);\n }\n default: {\n return data;\n }\n }\n};\n\nconst getRoutes = (permissionList, routerConfig, defaultConfig, pathname) => {\n if (isEmpty$1(permissionList) || isEmpty$1(routerConfig)) {\n return {\n menus: [],\n defaultSelectedMenus: [],\n defaultOpenMenus: [],\n defaultMenu: {},\n permissions: [],\n };\n }\n let paths;\n if (pathname !== '/' && pathname !== '/undefined' && pathname !== '/null') {\n paths = split('/', pathname);\n }\n else {\n paths = [];\n }\n let defaultOpenMenus = [];\n let defaultSelectedMenus = [];\n let defaultMenu = {};\n const resetData = (item) => {\n const currentItem = routerConfig[item.url];\n if (!currentItem) {\n return {};\n }\n const path = item.url.indexOf('/') === 0 ? item.url || '' : `/${item.url}`;\n const result = {\n path,\n param: currentItem.param || '',\n url: currentItem.url,\n name: item.resourceId,\n meta: {\n title: item.name,\n icon: currentItem.icon,\n },\n component: currentItem.component,\n hidden: currentItem.hidden,\n origion_url: path,\n };\n if (((defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.primaryDefaultMenu) &&\n item.url === (defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.primaryDefaultMenu)) ||\n ((defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.secondaryDefaultMenu) &&\n item.url === (defaultConfig === null || defaultConfig === void 0 ? void 0 : defaultConfig.secondaryDefaultMenu))) {\n defaultOpenMenus = [item.resourceParentId];\n defaultSelectedMenus = [item.resourceId];\n defaultMenu = result;\n }\n return result;\n };\n const result = [];\n let permissions = [];\n permissionList.map((item) => {\n const children = [];\n const currentItem = routerConfig[item.url];\n const btns = treeReduce({ key: 'resourceType', value: 'BUTTON' }, 'childMenus', item);\n if (btns && btns.length) {\n const urls = pipe(map$1(prop$1('url')))(btns);\n permissions = concat$1(permissions, urls);\n }\n if (item.childMenus && item.childMenus.length) {\n const childMenus = treeReduce({ key: 'resourceId' }, 'childMenus', item.childMenus);\n childMenus.map((child) => {\n if (child) {\n const data = resetData(child);\n if (data && data.name) {\n children.push(data);\n }\n }\n });\n }\n const data = resetData(item);\n if (currentItem) {\n result.push(Object.assign(Object.assign({}, data), { children }));\n }\n });\n if (paths.length && result.length) {\n const res = setPathToDefaultMenu(paths, result);\n defaultSelectedMenus = res.defaultSelectedMenus;\n defaultOpenMenus = res.defaultOpenMenus;\n defaultMenu = res.defaultMenu;\n }\n else if (!defaultSelectedMenus.length ||\n !defaultOpenMenus.length ||\n !defaultMenu) {\n const res = setFistChildToDefaultMenu(result);\n defaultSelectedMenus = res.defaultSelectedMenus;\n defaultOpenMenus = res.defaultOpenMenus;\n defaultMenu = res.defaultMenu;\n }\n return {\n menus: result,\n defaultSelectedMenus,\n defaultOpenMenus,\n defaultMenu: defaultMenu,\n permissions,\n };\n};\nconst setPathToDefaultMenu = (paths, menus) => {\n let defaultOpenMenus = [];\n let defaultSelectedMenus = [];\n let defaultMenu = {};\n const openMenus = find$1(propEq$1('origion_url', `/${paths[0]}`))(menus);\n if (openMenus) {\n defaultOpenMenus = [openMenus.name];\n if (paths.length > 1 && openMenus.children && openMenus.children.length) {\n const defaultPath = paths.join('/');\n defaultMenu = find$1(propEq$1('origion_url', `/${defaultPath}`))(openMenus.children);\n }\n else {\n defaultMenu =\n openMenus.children && openMenus.children.length\n ? openMenus.children[0]\n : openMenus;\n }\n defaultSelectedMenus = (defaultMenu === null || defaultMenu === void 0 ? void 0 : defaultMenu.name) ? [defaultMenu.name] : [];\n }\n return {\n defaultOpenMenus,\n defaultSelectedMenus,\n defaultMenu,\n };\n};\nconst setFistChildToDefaultMenu = (menus) => {\n var _a, _b;\n let defaultOpenMenus = [];\n let defaultSelectedMenus = [];\n let defaultMenu = {};\n if (menus[0] && menus[0].children && menus[0].children.length) {\n defaultOpenMenus = [menus[0].name];\n defaultSelectedMenus = [menus[0].children[0].name];\n defaultMenu = menus[0].children[0];\n }\n else if (menus[0]) {\n defaultOpenMenus = [(_a = menus[0]) === null || _a === void 0 ? void 0 : _a.name];\n defaultSelectedMenus = [(_b = menus[0]) === null || _b === void 0 ? void 0 : _b.name];\n defaultMenu = menus[0];\n }\n return {\n defaultOpenMenus,\n defaultSelectedMenus,\n defaultMenu,\n };\n};\n\n/**\n * 转换为带单位的短数据\n * @param num 需要转换的数字(非数字 或是 - 将直接返回 -)\n * @param decimal 返回的小数位\n * @param addUnit 返回值是否添加单位:(万或亿)\n * @param retInt 当数据小于1万时,是否返回无小数位的整数\n */\nconst transformShortNum = (num, decimal = 0, addUnit = true, retInt = false) => {\n let formatValue = parseFloat(num);\n if (isNaN(formatValue) || (num !== 0 && !num)) {\n return '-';\n }\n let isNegativeNumber = false;\n let ret = '';\n if (formatValue < 0) {\n isNegativeNumber = true;\n formatValue = Math.abs(formatValue);\n }\n if (formatValue >= 100000000) {\n ret = (formatValue / 100000000).toFixed(decimal) + (addUnit ? '亿' : '');\n }\n else if (formatValue >= 10000) {\n ret = (formatValue / 10000).toFixed(decimal) + (addUnit ? '万' : '');\n }\n else {\n ret = retInt ? formatValue.toFixed(0) : formatValue.toString();\n ret = !retInt && !isNaN(decimal) ? formatValue.toFixed(decimal) : ret;\n }\n return isNegativeNumber ? `-${ret}` : ret;\n};\n\n/**\n * 特定类型数字的统一格式处理\n * @param num 需要转换的数字(非数字 或是 - 将直接返回 -)\n * @param decimal 返回的小数位\n * @param addUnit 返回值是否添加单位:(万或亿)\n * @param retInt 当数据小于1万时,是否返回无小数位的整数\n */\nconst formatData = (config) => {\n let { afterUnit } = config;\n const { type, value, isAbs, beforeUnit } = config;\n if (Number(value) === -2147483648) {\n return '无权限';\n }\n if (type === 'text') { // 文字类型\n return value || value === 0 ? value : '-';\n }\n if (isNaN(value) || (value !== 0 && !value)) {\n return '-';\n }\n let val;\n switch (type) {\n case 'yuan': // 接口数据,单位为元\n val = transformShortNum(value, 2);\n break;\n case 'fen': // 接口数据,单位为分\n val = transformShortNum(value / 100, 2);\n break;\n case 'decimalToPercentSave2Decimal': // 小数转百分比, 保留两位小数\n val = transformShortNum(value * 100, 2);\n afterUnit = typeof afterUnit === 'string' ? afterUnit : '%';\n break;\n case 'decimalToPercentSave0Decimal': // 小数转百分比, 不保留两位小数\n val = transformShortNum(value * 100, 0);\n afterUnit = typeof afterUnit === 'string' ? afterUnit : '%';\n break;\n case 'percentSave2Decimal': // 百分比, 保留两位小数\n val = transformShortNum(value, 2);\n afterUnit = typeof afterUnit === 'string' ? afterUnit : '%';\n break;\n case 'percentSave0Decimal': // 百分比, 不保留两位小数\n val = transformShortNum(value, 0);\n afterUnit = typeof afterUnit === 'string' ? afterUnit : '%';\n break;\n case 'int': // 数量, 小于1万时,舍弃小数点,仅保留整数\n val = transformShortNum(value, 2, true, true);\n break;\n case 'decimal': // 数量, 小于1万时,保留小数点\n val = transformShortNum(value, 2, true, false);\n break;\n case 'secToTimeHM': // 秒转为 xxhyym\n val = formatTime(value, '{HH}h{mm}m');\n break;\n case 'secToTimeChMS': // 秒转为 xx分yy秒\n val = formatTime(value, '{mm}分{ss}秒');\n break;\n case 'secToTimeMS': // 秒转为 xxmyys\n val = formatTime(value, '{mm}m{ss}s');\n break;\n case 'secToTime': // 秒转为 {DD}d{HH}h{mm}m{ss}s,天数和小时为零时不展示\n val = formatTime(value, '{DD}d{HH}h{mm}m{ss}s', false);\n val = val.replace('00d', '').replace('00h', '');\n break;\n default:\n val = transformShortNum(value);\n }\n val = val !== '-' && isAbs ? val.replace('-', '') : val;\n return val === '-' ? '-' : `${beforeUnit || ''}${val}${afterUnit || ''}`;\n};\n\nconst niceNumShow = (val, spiltPoint = false) => {\n if ((val !== 0 && !val) || val === '-') {\n return [{ type: 'num', text: '-' }];\n }\n const resultList = [];\n const list = val.toString().split('');\n let text = '';\n let type; // 1: 数字 2: . 3: 非数字\n list.forEach((character) => {\n let characterType = (/^[0-9\\\\.]*$/.test(character)) ? 'num' : 'character';\n characterType = ((character === '.' && spiltPoint) || (characterType === 'num' && type === 'suffixNum')) ? 'suffixNum' : characterType;\n if (type !== characterType && type) {\n resultList.push({ type, text });\n text = character;\n }\n else {\n text = `${text}${character}`;\n }\n type = characterType;\n });\n type = type || 'num';\n resultList.push({ type, text });\n return resultList;\n};\n\nconst isChinaMobile = (value) => {\n return /^((\\+86)|(86)|(086))?(13[0-9]|15[0-9]|166|17[0-9]|18[0-9]|14[0-9]|19[0-9])[0-9]{8}$/.test(String(value));\n};\n\nconst isURL = (value) => {\n return /^((?:(?:https?|ftp):|)\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test(String(value));\n};\n\nconst YR = {\n email: /\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*/,\n phone: /^1[3|4|5|6|7|8][0-9]{9}$/,\n fixedPhone: /(^0\\d{2,3}-\\d{7,8}$)|(^1[3|4|5|6|7|8][0-9]{9}$)/,\n qq: /[1-9][0-9]{4,}/,\n zipcode: /[1-9]\\d{5}(?!\\d)/,\n IDCard: /^\\d{17}[\\d|X|x]|\\d{15}$/,\n chinese: /^[\\u0391-\\uFFE5]+$/,\n chineseNumberLine: /^[\\u4E00-\\u9FA5A-Za-z0-9_]+$/,\n chineseNumberNoLine: /^[\\u4E00-\\u9FA5A-Za-z0-9]+$/,\n integerZ: /^[1-9]\\d*$/,\n integerF: /^-[1-9]\\d*$/,\n number: /^\\d+(\\.\\d+)?$/,\n numberNoMoreThan1: /^\\-?([0-9](\\d+)?(\\.\\d{1,1})?$)|(^0$)|(^\\d\\.\\d{1,1})$/,\n numberNoMoreThan2: /^\\-?([0-9](\\d+)?(\\.\\d{1,2})?$)|(^0$)|(^\\d\\.\\d{1,2})$/,\n numberNoMoreThan3: /^\\-?([0-9](\\d+)?(\\.\\d{1,3})?$)|(^0$)|(^\\d\\.\\d{1,3})$/,\n numberNoMoreThan4: /^\\-?([0-9](\\d+)?(\\.\\d{1,4})?$)|(^0$)|(^\\d\\.\\d{1,4})$/,\n greaterZero1: /^(0|[1-9]\\d*)(\\.\\d{1,1})?$/,\n greaterZero2: /^(0|[1-9]\\d*)(\\.\\d{1,2})?$/,\n greaterZero3: /^(0|[1-9]\\d*)(\\.\\d{1,3})?$/,\n greaterZero4: /^(0|[1-9]\\d*)(\\.\\d{1,4})?$/,\n zeroTo100: /^((\\d|[1-9]\\d)(\\.\\d{1,2})?$)|(^100|100.0|100.00$)$/,\n zeroTo1000: /^((\\d|[1-9]{1,2}\\d)(\\.\\d{1,2})?$)|(^1000|1000.0|1000.00$)$/, // 零到1000,最多保留两位数字\n};\n\nconst getQueryOfNextPageContext = (ctx) => {\n if (!ctx) {\n return {};\n }\n const { pathname = '', asPath = '', query } = ctx;\n const routes = pipe(split$2('/'), filter$1((item) => /\\[\\w+\\]/.test(item)), map$1((item) => replace$1(']', '', replace$1('[', '', item))))(pathname);\n const path = pipe((split$2('#')), slice$1(0, 1))(asPath) || [];\n const paths = path.length\n ? pipe(split$2('/'), filter$1((item) => item !== ''))(path[0])\n : [];\n const result = routes.map((key, index) => {\n return {\n [`${key}`]: paths[index],\n };\n });\n let newQuery = {};\n if (!routes.length) {\n newQuery.path = paths[0] || 'desktop';\n }\n else {\n newQuery = mergeAll$1(result) || {};\n }\n return Object.assign(Object.assign({}, query), newQuery);\n};\n\nconst getEnv = () => {\n return window.localStorage.getItem('env') || 'prod';\n};\nconst getMock = () => {\n return window.localStorage.getItem('isMock');\n};\n\nconst getHost = (projectId, yapiProjectid, isMock) => {\n const configs = window.configs ? window.configs : {};\n let env = isMock && getMock() ? 'mock' : getEnv();\n const basePath = configs[projectId]\n ? configs[projectId][env].API_BASE_URL +\n `${env === 'mock' ? '/' + yapiProjectid : ''}`\n : '';\n const loginPath = configs['AUTH'] ? configs['AUTH'][env].APPLICATION_URL : '';\n return {\n basePath,\n loginPath,\n };\n};\n\nconst parseParams = (params) => {\n return values$1(params).join('/');\n};\n\nconst reduceParams = (data) => {\n if (!data) {\n return {};\n }\n if (data instanceof FormData) {\n return data;\n }\n const result = filter$1(item => !isNil$1(item) && !isEmpty$1(item))(data) || {};\n return result;\n};\n\nconst parse$1 = (str) => {\n if(!str) {\n return {};\n }\n const result = pipe(\n replace$1('?', ''),\n split$2('&'),\n map$1((item) => split$2('=', decodeURI(item))),\n fromPairs$1,\n )(str);\n return result\n};\n\nconst stringify$2 = (query) => {\n if(isEmpty$1(query)){\n return ''\n }\n const keys = Object.keys(query);\n let result = '';\n keys.map((key) => {\n result += `&${key}=${query[key]}`;\n });\n const params = new URLSearchParams(result);\n return params.toString() || '';\n};\n\nvar querystring = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parse: parse$1,\n stringify: stringify$2\n});\n\n/**\n * 获取地址对应参数\n * @param name\n * @param search\n * @returns\n */\nconst getQuery = (name, search) => {\n const reg = new RegExp(`(\\\\?|&)${name}=([^&]*)(&|$)`, 'i');\n let searchParams = window.location.href;\n const values = reg.exec((search || searchParams));\n if (values != null) {\n return decodeURIComponent(values[2]) || '';\n }\n return '';\n};\n/**\n * 获取地址所有参数\n * @param search\n * @returns\n */\nconst getQueries = (search) => {\n let str = search || window.location.search;\n str = str.replace('?', '');\n let result = parse$1(str);\n return (result || {});\n};\n/**\n * 获取地址对应参数\n * @param name\n * @param urlStr\n * @returns\n */\nconst getQueryName = (name, urlStr) => {\n let url = urlStr || decodeURI(window.location.href);\n url = url.split('?')[1];\n const querys = new Object();\n if (url.indexOf('?') === -1) {\n const strs = url.split('&');\n for (let i = 0; i < strs.length; i++) {\n const oneStr = strs[i];\n const index = oneStr.indexOf('=');\n if (index > 0) {\n querys[oneStr.substr(0, index)] = decodeURI(oneStr.substr(index + 1));\n }\n }\n }\n return querys[name] || '';\n};\n\nconst joinPath = (params) => {\n if (!params || isEmpty$1(params)) {\n return '';\n }\n const keys = Object.keys(params);\n let result = '';\n keys.map((key) => {\n if (params[key] && key !== 'search') {\n result += `/${params[key]}`;\n }\n if (key === 'search') {\n result += params[key];\n }\n });\n return result;\n};\n\nconst slicePath = (path, start = 0, end) => {\n const paths = split('/', path);\n if (!end) {\n end = paths.length - 1;\n }\n const newPaths = paths.slice(start, end);\n return '/' + newPaths.join('/');\n};\n\n/**\n * map 结构转 array\n * @param map\n * @param useAllSelect 全部默认选项\n * @param allSelectLabel 全部项默认lable\n * @param allSelectValue 全部项默认value\n * @returns OptionsItem[]\n */\nconst translateMapToArray = (map, useAllSelect = false, allSelectLabel = '全部', allSelectValue = null) => {\n // 全部项\n const allSelect = { label: allSelectLabel, value: allSelectValue };\n let array = useAllSelect ? [allSelect] : [];\n for (const [key, value] of map.entries()) {\n array.push({\n label: value,\n value: key,\n });\n }\n return array;\n};\n\nconst addQueries = (params) => {\n const arr = [];\n Object.keys(params).forEach((key) => {\n if (!(isEmpty$1(params[key]) || isNil$1(params[key]))) {\n arr.push(`${key}=${params[key]}`);\n }\n });\n return arr.join('&');\n};\n/**\n *\n * @param url 下载地址\n * @param params 参数集合\n */\nconst exportExcel = (url, params = {}) => {\n let token;\n if (typeof window !== 'undefined') {\n token = window.localStorage.getItem('token');\n const data = Object.assign(Object.assign({}, params), { token });\n if (!/^https.*/.test(url)) {\n // eslint-disable-next-line no-param-reassign\n url = url.replace('http', 'https');\n }\n const downloadUrl = `${url}?${addQueries(data)}`;\n console.log('YWFE下载地址=>', downloadUrl);\n const id = `alink_${new Date().getTime()}`;\n const aDom = document.createElement('a');\n aDom.setAttribute('href', downloadUrl);\n aDom.setAttribute('target', '_blank');\n aDom.setAttribute('id', id);\n if (!document.getElementById(id)) {\n document.body.appendChild(aDom);\n }\n aDom.click();\n setTimeout(() => {\n document.body.removeChild(aDom);\n }, 0);\n }\n};\n\n/**\n * 同步下载\n * @param data 带转换的arraybuffer数据\n * @param name 文件名\n */\nconst omadownload = (data, name, fileType) => {\n const uint8Msg = new Uint8Array(data);\n try {\n const uint8String = String.fromCharCode.apply(null, uint8Msg);\n if (uint8String.indexOf('success') > -1) {\n // message.error('导出失败');\n return JSON.parse(uint8String);\n }\n }\n catch (error) {\n console.warn(error);\n }\n const url = window.URL.createObjectURL(new Blob([data], { type: fileType || 'application/vnd.ms-excel' }));\n const link = document.createElement('a');\n link.style.display = 'none';\n link.href = url;\n link.setAttribute('download', decodeURIComponent(name));\n document.body.appendChild(link);\n link.click();\n link.remove();\n};\n\n/*\r\n * big.js v5.2.2\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2018 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * https://github.com/MikeMcl/big.js/LICENCE\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big.\r\n * (This limit is not enforced or checked.)\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n *\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n parse(x, n);\r\n }\r\n\r\n /*\r\n * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which\r\n * points to Object.\r\n */\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.version = '5.2.2';\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n // Minus zero?\r\n if (n === 0 && 1 / n < 0) n = '-0';\r\n else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number');\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of dp decimal places using rounding mode rm.\r\n * Called by stringify, P.div, P.round and P.sqrt.\r\n *\r\n * x {Big} The Big to round.\r\n * dp {number} Integer, 0 to MAX_DP inclusive.\r\n * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP)\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round$1(x, dp, rm, more) {\r\n var xc = x.c,\r\n i = x.e + dp + 1;\r\n\r\n if (i < xc.length) {\r\n if (rm === 1) {\r\n\r\n // xc[i] is the digit after the digit that may be rounded up.\r\n more = xc[i] >= 5;\r\n } else if (rm === 2) {\r\n more = xc[i] > 5 || xc[i] == 5 &&\r\n (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1);\r\n } else if (rm === 3) {\r\n more = more || !!xc[0];\r\n } else {\r\n more = false;\r\n if (rm !== 0) throw Error(INVALID_RM);\r\n }\r\n\r\n if (i < 1) {\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = -dp;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else {\r\n\r\n // Remove any digits after the required decimal places.\r\n xc.length = i--;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[i] > 9;) {\r\n xc[i] = 0;\r\n if (!i--) {\r\n ++x.e;\r\n xc.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; !xc[--i];) xc.pop();\r\n }\r\n } else if (rm < 0 || rm > 3 || rm !== ~~rm) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n *\r\n * x {Big}\r\n * id? {number} Caller id.\r\n * 1 toExponential\r\n * 2 toFixed\r\n * 3 toPrecision\r\n * 4 valueOf\r\n * n? {number|undefined} Caller's argument.\r\n * k? {number|undefined}\r\n */\r\nfunction stringify$1(x, id, n, k) {\r\n var e, s,\r\n Big = x.constructor,\r\n z = !x.c[0];\r\n\r\n if (n !== UNDEFINED) {\r\n if (n !== ~~n || n < (id == 3) || n > MAX_DP) {\r\n throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP);\r\n }\r\n\r\n x = new Big(x);\r\n\r\n // The index of the digit that may be rounded up.\r\n n = k - x.e;\r\n\r\n // Round?\r\n if (x.c.length > ++k) round$1(x, n, Big.RM);\r\n\r\n // toFixed: recalculate k as x.e may have changed if value rounded up.\r\n if (id == 2) k = x.e + n + 1;\r\n\r\n // Append zeros?\r\n for (; x.c.length < k;) x.c.push(0);\r\n }\r\n\r\n e = x.e;\r\n s = x.c.join('');\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) for (e -= n; e--;) s += '0';\r\n else if (e < n) s = s.slice(0, e) + '.' + s.slice(e);\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && (!z || id == 4) ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n*/\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP);\r\n\r\n // Divisor is zero?\r\n if (!b[0]) throw Error(DIV_BY_ZERO);\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) return new Big(k * 0);\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result\r\n\r\n q.s = k;\r\n k = d < 0 ? 0 : d;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n }\r\n\r\n // Round?\r\n if (qi > d) round$1(q, dp, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return !this.cmp(y);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // y is non-zero? x is non-zero? Or both are zero.\r\n return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0);\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) throw Error(DIV_BY_ZERO);\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var t,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero? y is non-zero? x is non-zero? Or both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0);\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n a = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (b) {\r\n xc.unshift(b);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (a = xc.length; xc[--a] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor(1),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent');\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded using rounding mode rm\r\n * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a\r\n * multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n * If rm is not specified, use Big.RM.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP)\r\n */\r\nP.round = function (dp, rm) {\r\n var Big = this.constructor;\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP);\r\n return round$1(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big(0.5);\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) throw Error(NAME + 'No square root');\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s);\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round$1(r, Big.DP -= 4, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) return new Big(y.s * 0);\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = (c[j] + b) % 10;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP inclusive.\r\n */\r\nP.toExponential = function (dp) {\r\n return stringify$1(this, 1, dp, dp);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp) {\r\n return stringify$1(this, 2, dp, this.e + dp);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Integer, 1 to MAX_DP inclusive.\r\n */\r\nP.toPrecision = function (sd) {\r\n return stringify$1(this, 3, sd, sd - 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP.toString = function () {\r\n return stringify$1(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n return stringify$1(this, 4);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nvar Big = _Big_();\n\n/**\n * 求一个数保留小数,不四舍五入\n * @param num 数字\n * @param decimal 精度\n */\nconst formatDecimalNoRound = (num, decimal) => {\n num = num.toString();\n const index = num.indexOf('.');\n if (index !== -1) {\n num = num.substring(0, decimal + index + 1);\n }\n else {\n num = num.substring(0);\n }\n return Number(parseFloat(num).toFixed(decimal));\n};\n\n/**\n * 小数字转大数字\n * @param translateUnit\n */\nconst smallToBig = (translateUnit) => {\n return (num, params) => {\n if (isEmpty$1(num) || isNil$1(num))\n return num;\n if (isNaN(Number(num))) {\n return NaN;\n }\n const newNumber = Number(new Big(Number(num)).mul(translateUnit));\n if (isNil$1(params === null || params === void 0 ? void 0 : params.decimalNumber) && isNil$1(params === null || params === void 0 ? void 0 : params.fn)) {\n return newNumber;\n }\n if (!isNil$1(params === null || params === void 0 ? void 0 : params.decimalNumber) && isNil$1(params === null || params === void 0 ? void 0 : params.fn)) {\n return Number(newNumber.toFixed(params === null || params === void 0 ? void 0 : params.decimalNumber));\n }\n if (!isNil$1(params === null || params === void 0 ? void 0 : params.decimalNumber) && !isNil$1(params === null || params === void 0 ? void 0 : params.fn)) {\n if ((params === null || params === void 0 ? void 0 : params.fn) === 'toFixed') {\n return Number(newNumber.toFixed(params === null || params === void 0 ? void 0 : params.decimalNumber));\n }\n else if ((params === null || params === void 0 ? void 0 : params.fn) === 'floor') {\n return formatDecimalNoRound(newNumber, params === null || params === void 0 ? void 0 : params.decimalNumber);\n }\n }\n };\n};\n\n/**\n * 元转分\n * @param num\n * @param decimalNumber\n * @param fn\n */\nconst yuanTofen = (num, params) => {\n return smallToBig(100)(num, params);\n};\n\n/**\n * 大数字转小数字\n * @param translateUnit\n */\nconst bigToSmall = (translateUnit) => {\n return (num, params) => {\n const decimalNumber = (params === null || params === void 0 ? void 0 : params.decimalNumber) || 2;\n const fn = (params === null || params === void 0 ? void 0 : params.fn) || 'toFixed';\n if (isEmpty$1(num) || isNil$1(num))\n return num;\n if (isNaN(Number(num))) {\n return NaN;\n }\n const newNumber = new Big(Number(num)).div(translateUnit);\n if (fn === 'toFixed') {\n return Number(newNumber.toFixed(decimalNumber));\n }\n else if (fn === 'floor') {\n return formatDecimalNoRound(Number(newNumber), decimalNumber);\n }\n return num;\n };\n};\n\n/**\n * 分转元\n * @param num\n * @param decimalNumber 默认保留两位小数\n * @param fn\n */\nconst fenToyuan = (num, params) => {\n return bigToSmall(100)(num, params);\n};\n\n/**\n * 万转元\n * @param num\n * @param decimalNumber\n * @param fn\n */\nconst wanToyuan = (num, params) => {\n return smallToBig(10000)(num, params);\n};\n\n/**\n * 元转万\n * @param num\n * @param decimalNumber\n * @param fn\n */\nconst yuanTowan = (num, params) => {\n return bigToSmall(10000)(num, params);\n};\n\n/**\n * kg转g\n * @param num\n * @param decimalNumber\n * @param fn\n */\nconst kgTog = (num, params) => {\n return smallToBig(1000)(num, params);\n};\n\n/**\n * g转kg\n * @param num\n * @param decimalNumber\n * @param fn\n */\nconst gTokg = (num, pararms) => {\n return bigToSmall(1000)(num, pararms);\n};\n\n/**\n * 从头开始,最大截取多少个字符串\n * @param str\n * @param len 最大截取多少个字符串\n * @param isSpot 是否带 ...\n */\nconst maxSubstrWord = (str, len = 5, isSpot = true) => {\n if (typeof str === 'string') {\n return isSpot ? `${str.substr(0, len)}...` : str.substr(0, len);\n }\n else {\n return str;\n }\n};\n\n/**\n * 判断类型\n * @param params\n */\nconst getClass = (params) => {\n const str = Object.prototype.toString.call(params);\n const matchResult = /^\\[object (.*)\\]$/.exec(str);\n if (matchResult !== null) {\n return matchResult[1].toLowerCase();\n }\n return null;\n};\n\nconst trimParams = (object) => {\n if (typeof object === 'string') {\n return trim$1(object);\n }\n if (getClass(object) === 'array' || getClass(object) === 'object') {\n if (Array.isArray(object)) {\n object.forEach((newParams) => {\n trimParams(newParams);\n });\n }\n if (typeof object !== null) {\n Object.keys(object).map((key) => {\n const newValue = object[key];\n if (typeof newValue === 'string') {\n object[key] = trim$1(newValue);\n }\n if (getClass(newValue) === 'object' || getClass(newValue) === 'array') {\n trimParams(newValue);\n }\n });\n return object;\n }\n }\n return object;\n};\n\n/**\n * 获取字节长度\n * @param str // 需要获取字节长度的字符串\n * 中文+2 英文+1\n */\nconst getBiteLen = (str) => {\n if (typeof str !== 'string')\n return 0;\n let len = 0;\n for (let i = 0; i < str.length; i++) {\n if (str.charCodeAt(i) > 127 || str.charCodeAt(i) === 94) {\n len += 2;\n }\n else {\n len += 1;\n }\n }\n return len;\n};\n\n/**\n * 下划线转换驼峰\n * @param str string\n * @returns string\n */\nfunction lineToHump(str) {\n if (typeof str !== 'string')\n return str;\n return str.replace(/\\_(\\w)/g, function (_all, letter) {\n return letter.toUpperCase();\n });\n}\n\n/**\n * 驼峰转换下划线\n * @param str string\n * @returns srting\n */\nfunction humpToLine(str) {\n if (typeof str !== 'string')\n return str;\n return str.replace(/([A-Z])/g, '_$1').toLowerCase();\n}\n\nconst sum = (params, api) => {\n let resultSum = new Big(0);\n // 内部递归函数\n const _sum = (params, api) => {\n if (getClass(params) === 'array' && Array.isArray(params)) {\n params.forEach((item) => {\n if (!isNaN(item)) {\n resultSum = resultSum.plus(Number(item));\n }\n if (getClass(item) === 'object' && typeof api !== 'undefined' && item[api] !== null) {\n resultSum = resultSum.plus(Number(item[api]));\n }\n if (getClass(item) === 'array' && Array.isArray(item)) {\n _sum(item, api);\n }\n });\n }\n };\n _sum(params, api);\n return Number(resultSum);\n};\n\n/**\n *start 到 end 之间的随机数\n * @param end\n * @param start\n * @returns number\n */\nconst round = (end, start = 0) => Math.round(Math.random() * (end - start) + start);\n\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}\n\nvar REGEX = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nconst uuidv4 = () => {\n return v4();\n};\n\n/**\n * 2021-07-20 zimu\n * https://github.com/emn178/js-md5/blob/master/src/md5.js\n */\nconst ERROR = 'input is invalid type';\nconst HEX_CHARS = '0123456789abcdef'.split('');\nconst EXTRA = [128, 32768, 8388608, -2147483648];\nlet blocks = [], buffer8;\nconst buffer = new ArrayBuffer(68);\nbuffer8 = new Uint8Array(buffer);\nblocks = new Uint32Array(buffer);\n//@ts-ignore\nconst createMethod = () => (message) => new Md5().update(message)['hex']();\nfunction Md5() {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n this.buffer8 = buffer8;\n this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n}\nMd5.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n let notString;\n const type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw ERROR;\n }\n else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n else if (!Array.isArray(message)) {\n if (!ArrayBuffer.isView(message)) {\n throw ERROR;\n }\n }\n }\n else {\n throw ERROR;\n }\n notString = true;\n }\n let code, index = 0, i, length = message.length, blocks = this.blocks;\n let buffer8 = this.buffer8;\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n buffer8[i++] = message[index];\n }\n }\n else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n buffer8[i++] = code;\n }\n else if (code < 0x800) {\n buffer8[i++] = 0xc0 | (code >> 6);\n buffer8[i++] = 0x80 | (code & 0x3f);\n }\n else if (code < 0xd800 || code >= 0xe000) {\n buffer8[i++] = 0xe0 | (code >> 12);\n buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);\n buffer8[i++] = 0x80 | (code & 0x3f);\n }\n else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n buffer8[i++] = 0xf0 | (code >> 18);\n buffer8[i++] = 0x80 | ((code >> 12) & 0x3f);\n buffer8[i++] = 0x80 | ((code >> 6) & 0x3f);\n buffer8[i++] = 0x80 | (code & 0x3f);\n }\n }\n }\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n }\n else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n};\nMd5.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n const blocks = this.blocks, i = this.lastByteIndex;\n blocks[i >> 2] |= EXTRA[i & 3];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = blocks[16];\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.bytes << 3;\n blocks[15] = this.hBytes << 3 | this.bytes >>> 29;\n this.hash();\n};\nMd5.prototype.hash = function () {\n let a, b, c, d, bc, da, blocks = this.blocks;\n if (this.first) {\n a = blocks[0] - 680876937;\n a = (a << 7 | a >>> 25) - 271733879 << 0;\n d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708;\n d = (d << 12 | d >>> 20) + a << 0;\n c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375;\n c = (c << 17 | c >>> 15) + d << 0;\n b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209;\n b = (b << 22 | b >>> 10) + c << 0;\n }\n else {\n a = this.h0;\n b = this.h1;\n c = this.h2;\n d = this.h3;\n a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330;\n b = (b << 22 | b >>> 10) + c << 0;\n }\n a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[10] - 42063;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682;\n a = (a << 7 | a >>> 25) + b << 0;\n d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101;\n d = (d << 12 | d >>> 20) + a << 0;\n c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290;\n c = (c << 17 | c >>> 15) + d << 0;\n b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329;\n b = (b << 22 | b >>> 10) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501;\n b = (b << 20 | b >>> 12) + c << 0;\n a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467;\n a = (a << 5 | a >>> 27) + b << 0;\n d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784;\n d = (d << 9 | d >>> 23) + a << 0;\n c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473;\n c = (c << 14 | c >>> 18) + d << 0;\n b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734;\n b = (b << 20 | b >>> 12) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[5] - 378558;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[8] - 2022574463;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[11] + 1839030562;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[14] - 35309556;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[1] - 1530992060;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[4] + 1272893353;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[7] - 155497632;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[10] - 1094730640;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[13] + 681279174;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[0] - 358537222;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[3] - 722521979;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[6] + 76029189;\n b = (b << 23 | b >>> 9) + c << 0;\n bc = b ^ c;\n a += (bc ^ d) + blocks[9] - 640364487;\n a = (a << 4 | a >>> 28) + b << 0;\n d += (bc ^ a) + blocks[12] - 421815835;\n d = (d << 11 | d >>> 21) + a << 0;\n da = d ^ a;\n c += (da ^ b) + blocks[15] + 530742520;\n c = (c << 16 | c >>> 16) + d << 0;\n b += (da ^ c) + blocks[2] - 995338651;\n b = (b << 23 | b >>> 9) + c << 0;\n a += (c ^ (b | ~d)) + blocks[0] - 198630844;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[7] + 1126891415;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[14] - 1416354905;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[5] - 57434055;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[12] + 1700485571;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[3] - 1894986606;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[10] - 1051523;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[1] - 2054922799;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[8] + 1873313359;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[15] - 30611744;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[6] - 1560198380;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[13] + 1309151649;\n b = (b << 21 | b >>> 11) + c << 0;\n a += (c ^ (b | ~d)) + blocks[4] - 145523070;\n a = (a << 6 | a >>> 26) + b << 0;\n d += (b ^ (a | ~c)) + blocks[11] - 1120210379;\n d = (d << 10 | d >>> 22) + a << 0;\n c += (a ^ (d | ~b)) + blocks[2] + 718787259;\n c = (c << 15 | c >>> 17) + d << 0;\n b += (d ^ (c | ~a)) + blocks[9] - 343485551;\n b = (b << 21 | b >>> 11) + c << 0;\n if (this.first) {\n this.h0 = a + 1732584193 << 0;\n this.h1 = b - 271733879 << 0;\n this.h2 = c - 1732584194 << 0;\n this.h3 = d + 271733878 << 0;\n this.first = false;\n }\n else {\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n }\n};\nMd5.prototype.hex = function () {\n this.finalize();\n let h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3;\n return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F];\n};\nvar md5 = createMethod();\n\nconst getMD5 = (md5Key) => {\n if (isEmpty$1(md5Key) || isNil$1(md5Key))\n return md5Key;\n if (is$1(String, md5Key))\n return md5(md5Key);\n return md5Key;\n};\n\n/**\n * 扩大倍数,数字变大\n * @param multiple\n * @param num\n * @param decimalNumber\n * @param fn\n */\nconst expandMultiple = (multiple, num, params) => {\n return smallToBig(multiple)(num, params);\n};\n\n/**\n * 缩小倍数,数字变小\n * @param multiple\n * @param num\n * @param decimalNumber\n * @param fn\n */\nconst reduceMultiple = (multiple, num, params) => {\n return bigToSmall(multiple)(num, params);\n};\n\n/**\n * 数值转化为 千分位 展示\n * @param num\n * @param separator 分隔符,默认 ','\n */\nconst numberToThousand = (num, separator = ',') => {\n if (isEmpty$1(num) || isNil$1(num))\n return num;\n if (isNaN(Number(num))) {\n return NaN;\n }\n return num.toString().replace(/\\d+/, (n) => n.replace(/(\\d)(?=(\\d{3})+$)/g, ($1) => `${$1}${separator}`));\n};\n\n// @ts-nocheck\n/**\n * @param {{ leading: any; trailing: any; }} value\n */\nfunction isObject (value) {\n const type = typeof value;\n return value != null && (type === 'object' || type === 'function')\n}\n\n\n/**\n * @param {{ apply: (arg0: any, arg1: any) => any; }} func\n * @param {number} wait\n * @param {{ leading: any; trailing: any; maxWait: any; }} options\n */\nfunction debounce (func, wait, options) {\n if (typeof window === 'undefined') {\n return;\n }\n let lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime;\n\n let lastInvokeTime = 0;\n let leading = false;\n let maxing = false;\n let trailing = true;\n\n // Bypass `requestAnimationFrame` by explicitly setting `wait=0`.\n const useRAF = (!wait && wait !== 0 && typeof requestAnimationFrame === 'function');\n\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function')\n }\n wait = +wait || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? Math.max(+options.maxWait || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n /**\n * @param {number} time\n */\n function invokeFunc (time) {\n const args = lastArgs;\n const thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result\n }\n\n /**\n * @param {FrameRequestCallback} pendingFunc\n * @param {number} wait\n */\n function startTimer (pendingFunc, wait) {\n if (useRAF) {\n cancelAnimationFrame(timerId);\n return requestAnimationFrame(pendingFunc)\n }\n return setTimeout(pendingFunc, wait)\n }\n\n /**\n * @param {number} id\n */\n function cancelTimer (id) {\n if (useRAF) {\n return cancelAnimationFrame(id)\n }\n clearTimeout(id);\n }\n\n /**\n * @param {number} time\n */\n function leadingEdge (time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = startTimer(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result\n }\n\n /**\n * @param {number} time\n */\n function remainingWait (time) {\n const timeSinceLastCall = time - lastCallTime;\n const timeSinceLastInvoke = time - lastInvokeTime;\n const timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? Math.min(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting\n }\n\n /**\n * @param {number} time\n */\n function shouldInvoke (time) {\n const timeSinceLastCall = time - lastCallTime;\n const timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait))\n }\n\n function timerExpired () {\n const time = Date.now();\n if (shouldInvoke(time)) {\n return trailingEdge(time)\n }\n // Restart the timer.\n timerId = startTimer(timerExpired, remainingWait(time));\n }\n\n /**\n * @param {number} time\n */\n function trailingEdge (time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time)\n }\n lastArgs = lastThis = undefined;\n return result\n }\n\n function cancel () {\n if (timerId !== undefined) {\n cancelTimer(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush () {\n return timerId === undefined ? result : trailingEdge(Date.now())\n }\n\n function pending () {\n return timerId !== undefined\n }\n\n /**\n * @param {any[]} args\n */\n function debounced (...args) {\n const time = Date.now();\n const isInvoking = shouldInvoke(time);\n\n lastArgs = args;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime)\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = startTimer(timerExpired, wait);\n return invokeFunc(lastCallTime)\n }\n }\n if (timerId === undefined) {\n timerId = startTimer(timerExpired, wait);\n }\n return result\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n debounced.pending = pending;\n return debounced\n}\n\n/**\n * @param {any} func\n * @param {any} wait\n * @param {{ leading: any; trailing: any; }} options\n */\nfunction throttle (func, wait, options) {\n let leading = true;\n let trailing = true;\n\n if (typeof func !== 'function') {\n throw new TypeError('Expected a function')\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n leading,\n trailing,\n 'maxWait': wait\n })\n}\n\n/**\n * 获取图片地址\n * @param img 原始图片地址\n * @param width 图片宽度\n * @param width 图片高度\n * @param defaultImg 默认图片地址\n * @returns number\n */\nconst defGoodsImg = 'https://cdn.ywwl.com/bps/ywyun/dianhu/assets/def_goods_img.png';\nconst getImgUrl = (img, width = 200, height, defaultImg) => {\n const reg = new RegExp(/resize:(\\d+):(\\d+)/, 'g');\n let retImg = '';\n if (img) {\n retImg = img;\n if (reg.test(retImg)) { // 抖音\n retImg = retImg.replace(reg, `resize:${width}:${height || 0}`);\n }\n else { // 阿里云OSS\n retImg = retImg.indexOf('x-oss-process=image') > -1 || retImg.indexOf('?') > -1 ? retImg\n : `${retImg}?x-oss-process=image/resize,w_${width},limit_0/quality,q_60`;\n }\n }\n else {\n retImg = defaultImg || defGoodsImg;\n }\n return retImg;\n};\n\nvar lib$2 = {};\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AnsiStringType = exports.StringType = exports.BufferType = exports.Uint8ArrayType = exports.IgnoreType = exports.Float80_LE = exports.Float80_BE = exports.Float64_LE = exports.Float64_BE = exports.Float32_LE = exports.Float32_BE = exports.Float16_LE = exports.Float16_BE = exports.INT64_BE = exports.UINT64_BE = exports.INT64_LE = exports.UINT64_LE = exports.INT32_LE = exports.INT32_BE = exports.INT24_BE = exports.INT24_LE = exports.INT16_LE = exports.INT16_BE = exports.INT8 = exports.UINT32_BE = exports.UINT32_LE = exports.UINT24_BE = exports.UINT24_LE = exports.UINT16_BE = exports.UINT16_LE = exports.UINT8 = void 0;\nconst ieee754$1 = ieee754;\n// Primitive types\nfunction dv(array) {\n return new DataView(array.buffer, array.byteOffset);\n}\n/**\n * 8-bit unsigned integer\n */\nexports.UINT8 = {\n len: 1,\n get(array, offset) {\n return dv(array).getUint8(offset);\n },\n put(array, offset, value) {\n dv(array).setUint8(offset, value);\n return offset + 1;\n }\n};\n/**\n * 16-bit unsigned integer, Little Endian byte order\n */\nexports.UINT16_LE = {\n len: 2,\n get(array, offset) {\n return dv(array).getUint16(offset, true);\n },\n put(array, offset, value) {\n dv(array).setUint16(offset, value, true);\n return offset + 2;\n }\n};\n/**\n * 16-bit unsigned integer, Big Endian byte order\n */\nexports.UINT16_BE = {\n len: 2,\n get(array, offset) {\n return dv(array).getUint16(offset);\n },\n put(array, offset, value) {\n dv(array).setUint16(offset, value);\n return offset + 2;\n }\n};\n/**\n * 24-bit unsigned integer, Little Endian byte order\n */\nexports.UINT24_LE = {\n len: 3,\n get(array, offset) {\n const dataView = dv(array);\n return dataView.getUint8(offset) + (dataView.getUint16(offset + 1, true) << 8);\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint8(offset, value & 0xff);\n dataView.setUint16(offset + 1, value >> 8, true);\n return offset + 3;\n }\n};\n/**\n * 24-bit unsigned integer, Big Endian byte order\n */\nexports.UINT24_BE = {\n len: 3,\n get(array, offset) {\n const dataView = dv(array);\n return (dataView.getUint16(offset) << 8) + dataView.getUint8(offset + 2);\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint16(offset, value >> 8);\n dataView.setUint8(offset + 2, value & 0xff);\n return offset + 3;\n }\n};\n/**\n * 32-bit unsigned integer, Little Endian byte order\n */\nexports.UINT32_LE = {\n len: 4,\n get(array, offset) {\n return dv(array).getUint32(offset, true);\n },\n put(array, offset, value) {\n dv(array).setUint32(offset, value, true);\n return offset + 4;\n }\n};\n/**\n * 32-bit unsigned integer, Big Endian byte order\n */\nexports.UINT32_BE = {\n len: 4,\n get(array, offset) {\n return dv(array).getUint32(offset);\n },\n put(array, offset, value) {\n dv(array).setUint32(offset, value);\n return offset + 4;\n }\n};\n/**\n * 8-bit signed integer\n */\nexports.INT8 = {\n len: 1,\n get(array, offset) {\n return dv(array).getInt8(offset);\n },\n put(array, offset, value) {\n dv(array).setInt8(offset, value);\n return offset + 1;\n }\n};\n/**\n * 16-bit signed integer, Big Endian byte order\n */\nexports.INT16_BE = {\n len: 2,\n get(array, offset) {\n return dv(array).getInt16(offset);\n },\n put(array, offset, value) {\n dv(array).setInt16(offset, value);\n return offset + 2;\n }\n};\n/**\n * 16-bit signed integer, Little Endian byte order\n */\nexports.INT16_LE = {\n len: 2,\n get(array, offset) {\n return dv(array).getInt16(offset, true);\n },\n put(array, offset, value) {\n dv(array).setInt16(offset, value, true);\n return offset + 2;\n }\n};\n/**\n * 24-bit signed integer, Little Endian byte order\n */\nexports.INT24_LE = {\n len: 3,\n get(array, offset) {\n const unsigned = exports.UINT24_LE.get(array, offset);\n return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint8(offset, value & 0xff);\n dataView.setUint16(offset + 1, value >> 8, true);\n return offset + 3;\n }\n};\n/**\n * 24-bit signed integer, Big Endian byte order\n */\nexports.INT24_BE = {\n len: 3,\n get(array, offset) {\n const unsigned = exports.UINT24_BE.get(array, offset);\n return unsigned > 0x7fffff ? unsigned - 0x1000000 : unsigned;\n },\n put(array, offset, value) {\n const dataView = dv(array);\n dataView.setUint16(offset, value >> 8);\n dataView.setUint8(offset + 2, value & 0xff);\n return offset + 3;\n }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexports.INT32_BE = {\n len: 4,\n get(array, offset) {\n return dv(array).getInt32(offset);\n },\n put(array, offset, value) {\n dv(array).setInt32(offset, value);\n return offset + 4;\n }\n};\n/**\n * 32-bit signed integer, Big Endian byte order\n */\nexports.INT32_LE = {\n len: 4,\n get(array, offset) {\n return dv(array).getInt32(offset, true);\n },\n put(array, offset, value) {\n dv(array).setInt32(offset, value, true);\n return offset + 4;\n }\n};\n/**\n * 64-bit unsigned integer, Little Endian byte order\n */\nexports.UINT64_LE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigUint64(offset, true);\n },\n put(array, offset, value) {\n dv(array).setBigUint64(offset, value, true);\n return offset + 8;\n }\n};\n/**\n * 64-bit signed integer, Little Endian byte order\n */\nexports.INT64_LE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigInt64(offset, true);\n },\n put(array, offset, value) {\n dv(array).setBigInt64(offset, value, true);\n return offset + 8;\n }\n};\n/**\n * 64-bit unsigned integer, Big Endian byte order\n */\nexports.UINT64_BE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigUint64(offset);\n },\n put(array, offset, value) {\n dv(array).setBigUint64(offset, value);\n return offset + 8;\n }\n};\n/**\n * 64-bit signed integer, Big Endian byte order\n */\nexports.INT64_BE = {\n len: 8,\n get(array, offset) {\n return dv(array).getBigInt64(offset);\n },\n put(array, offset, value) {\n dv(array).setBigInt64(offset, value);\n return offset + 8;\n }\n};\n/**\n * IEEE 754 16-bit (half precision) float, big endian\n */\nexports.Float16_BE = {\n len: 2,\n get(dataView, offset) {\n return ieee754$1.read(dataView, offset, false, 10, this.len);\n },\n put(dataView, offset, value) {\n ieee754$1.write(dataView, value, offset, false, 10, this.len);\n return offset + this.len;\n }\n};\n/**\n * IEEE 754 16-bit (half precision) float, little endian\n */\nexports.Float16_LE = {\n len: 2,\n get(array, offset) {\n return ieee754$1.read(array, offset, true, 10, this.len);\n },\n put(array, offset, value) {\n ieee754$1.write(array, value, offset, true, 10, this.len);\n return offset + this.len;\n }\n};\n/**\n * IEEE 754 32-bit (single precision) float, big endian\n */\nexports.Float32_BE = {\n len: 4,\n get(array, offset) {\n return dv(array).getFloat32(offset);\n },\n put(array, offset, value) {\n dv(array).setFloat32(offset, value);\n return offset + 4;\n }\n};\n/**\n * IEEE 754 32-bit (single precision) float, little endian\n */\nexports.Float32_LE = {\n len: 4,\n get(array, offset) {\n return dv(array).getFloat32(offset, true);\n },\n put(array, offset, value) {\n dv(array).setFloat32(offset, value, true);\n return offset + 4;\n }\n};\n/**\n * IEEE 754 64-bit (double precision) float, big endian\n */\nexports.Float64_BE = {\n len: 8,\n get(array, offset) {\n return dv(array).getFloat64(offset);\n },\n put(array, offset, value) {\n dv(array).setFloat64(offset, value);\n return offset + 8;\n }\n};\n/**\n * IEEE 754 64-bit (double precision) float, little endian\n */\nexports.Float64_LE = {\n len: 8,\n get(array, offset) {\n return dv(array).getFloat64(offset, true);\n },\n put(array, offset, value) {\n dv(array).setFloat64(offset, value, true);\n return offset + 8;\n }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, big endian\n */\nexports.Float80_BE = {\n len: 10,\n get(array, offset) {\n return ieee754$1.read(array, offset, false, 63, this.len);\n },\n put(array, offset, value) {\n ieee754$1.write(array, value, offset, false, 63, this.len);\n return offset + this.len;\n }\n};\n/**\n * IEEE 754 80-bit (extended precision) float, little endian\n */\nexports.Float80_LE = {\n len: 10,\n get(array, offset) {\n return ieee754$1.read(array, offset, true, 63, this.len);\n },\n put(array, offset, value) {\n ieee754$1.write(array, value, offset, true, 63, this.len);\n return offset + this.len;\n }\n};\n/**\n * Ignore a given number of bytes\n */\nclass IgnoreType {\n /**\n * @param len number of bytes to ignore\n */\n constructor(len) {\n this.len = len;\n }\n // ToDo: don't read, but skip data\n get(array, off) {\n }\n}\nexports.IgnoreType = IgnoreType;\nclass Uint8ArrayType {\n constructor(len) {\n this.len = len;\n }\n get(array, offset) {\n return array.subarray(offset, offset + this.len);\n }\n}\nexports.Uint8ArrayType = Uint8ArrayType;\nclass BufferType {\n constructor(len) {\n this.len = len;\n }\n get(uint8Array, off) {\n return Buffer.from(uint8Array.subarray(off, off + this.len));\n }\n}\nexports.BufferType = BufferType;\n/**\n * Consume a fixed number of bytes from the stream and return a string with a specified encoding.\n */\nclass StringType {\n constructor(len, encoding) {\n this.len = len;\n this.encoding = encoding;\n }\n get(uint8Array, offset) {\n return Buffer.from(uint8Array).toString(this.encoding, offset, offset + this.len);\n }\n}\nexports.StringType = StringType;\n/**\n * ANSI Latin 1 String\n * Using windows-1252 / ISO 8859-1 decoding\n */\nclass AnsiStringType {\n constructor(len) {\n this.len = len;\n }\n static decode(buffer, offset, until) {\n let str = '';\n for (let i = offset; i < until; ++i) {\n str += AnsiStringType.codePointToString(AnsiStringType.singleByteDecoder(buffer[i]));\n }\n return str;\n }\n static inRange(a, min, max) {\n return min <= a && a <= max;\n }\n static codePointToString(cp) {\n if (cp <= 0xFFFF) {\n return String.fromCharCode(cp);\n }\n else {\n cp -= 0x10000;\n return String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);\n }\n }\n static singleByteDecoder(bite) {\n if (AnsiStringType.inRange(bite, 0x00, 0x7F)) {\n return bite;\n }\n const codePoint = AnsiStringType.windows1252[bite - 0x80];\n if (codePoint === null) {\n throw Error('invaliding encoding');\n }\n return codePoint;\n }\n get(buffer, offset = 0) {\n return AnsiStringType.decode(buffer, offset, offset + this.len);\n }\n}\nexports.AnsiStringType = AnsiStringType;\nAnsiStringType.windows1252 = [8364, 129, 8218, 402, 8222, 8230, 8224, 8225, 710, 8240, 352,\n 8249, 338, 141, 381, 143, 144, 8216, 8217, 8220, 8221, 8226, 8211, 8212, 732,\n 8482, 353, 8250, 339, 157, 382, 376, 160, 161, 162, 163, 164, 165, 166, 167, 168,\n 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,\n 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,\n 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,\n 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232,\n 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,\n 248, 249, 250, 251, 252, 253, 254, 255];\n}(lib$2));\n\nvar lib$1 = {};\n\nvar FsPromise = {};\n\n/**\r\n * Module convert fs functions to promise based functions\r\n */\r\nObject.defineProperty(FsPromise, \"__esModule\", { value: true });\r\nFsPromise.readFile = FsPromise.writeFileSync = FsPromise.writeFile = FsPromise.read = FsPromise.open = FsPromise.close = FsPromise.stat = FsPromise.createReadStream = FsPromise.pathExists = void 0;\r\nconst fs$1 = require$$0__default[\"default\"];\r\nFsPromise.pathExists = fs$1.existsSync;\r\nFsPromise.createReadStream = fs$1.createReadStream;\r\nasync function stat(path) {\r\n return new Promise((resolve, reject) => {\r\n fs$1.stat(path, (err, stats) => {\r\n if (err)\r\n reject(err);\r\n else\r\n resolve(stats);\r\n });\r\n });\r\n}\r\nFsPromise.stat = stat;\r\nasync function close(fd) {\r\n return new Promise((resolve, reject) => {\r\n fs$1.close(fd, err => {\r\n if (err)\r\n reject(err);\r\n else\r\n resolve();\r\n });\r\n });\r\n}\r\nFsPromise.close = close;\r\nasync function open(path, mode) {\r\n return new Promise((resolve, reject) => {\r\n fs$1.open(path, mode, (err, fd) => {\r\n if (err)\r\n reject(err);\r\n else\r\n resolve(fd);\r\n });\r\n });\r\n}\r\nFsPromise.open = open;\r\nasync function read(fd, buffer, offset, length, position) {\r\n return new Promise((resolve, reject) => {\r\n fs$1.read(fd, buffer, offset, length, position, (err, bytesRead, _buffer) => {\r\n if (err)\r\n reject(err);\r\n else\r\n resolve({ bytesRead, buffer: _buffer });\r\n });\r\n });\r\n}\r\nFsPromise.read = read;\r\nasync function writeFile(path, data) {\r\n return new Promise((resolve, reject) => {\r\n fs$1.writeFile(path, data, err => {\r\n if (err)\r\n reject(err);\r\n else\r\n resolve();\r\n });\r\n });\r\n}\r\nFsPromise.writeFile = writeFile;\r\nfunction writeFileSync(path, data) {\r\n fs$1.writeFileSync(path, data);\r\n}\r\nFsPromise.writeFileSync = writeFileSync;\r\nasync function readFile(path) {\r\n return new Promise((resolve, reject) => {\r\n fs$1.readFile(path, (err, buffer) => {\r\n if (err)\r\n reject(err);\r\n else\r\n resolve(buffer);\r\n });\r\n });\r\n}\r\nFsPromise.readFile = readFile;\n\nvar core = {};\n\nvar ReadStreamTokenizer$1 = {};\n\nvar AbstractTokenizer$1 = {};\n\nvar lib = {};\n\nvar EndOfFileStream = {};\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.EndOfStreamError = exports.defaultMessages = void 0;\r\nexports.defaultMessages = 'End-Of-Stream';\r\n/**\r\n * Thrown on read operation of the end of file or stream has been reached\r\n */\r\nclass EndOfStreamError extends Error {\r\n constructor() {\r\n super(exports.defaultMessages);\r\n }\r\n}\r\nexports.EndOfStreamError = EndOfStreamError;\n}(EndOfFileStream));\n\nvar StreamReader = {};\n\nvar Deferred$1 = {};\n\nObject.defineProperty(Deferred$1, \"__esModule\", { value: true });\r\nDeferred$1.Deferred = void 0;\r\nclass Deferred {\r\n constructor() {\r\n this.resolve = () => null;\r\n this.reject = () => null;\r\n this.promise = new Promise((resolve, reject) => {\r\n this.reject = reject;\r\n this.resolve = resolve;\r\n });\r\n }\r\n}\r\nDeferred$1.Deferred = Deferred;\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StreamReader = exports.EndOfStreamError = void 0;\r\nconst EndOfFileStream_1 = EndOfFileStream;\r\nconst Deferred_1 = Deferred$1;\r\nvar EndOfFileStream_2 = EndOfFileStream;\r\nObject.defineProperty(exports, \"EndOfStreamError\", { enumerable: true, get: function () { return EndOfFileStream_2.EndOfStreamError; } });\r\nconst maxStreamReadSize = 1 * 1024 * 1024; // Maximum request length on read-stream operation\r\nclass StreamReader {\r\n constructor(s) {\r\n this.s = s;\r\n /**\r\n * Deferred used for postponed read request (as not data is yet available to read)\r\n */\r\n this.deferred = null;\r\n this.endOfStream = false;\r\n /**\r\n * Store peeked data\r\n * @type {Array}\r\n */\r\n this.peekQueue = [];\r\n if (!s.read || !s.once) {\r\n throw new Error('Expected an instance of stream.Readable');\r\n }\r\n this.s.once('end', () => this.reject(new EndOfFileStream_1.EndOfStreamError()));\r\n this.s.once('error', err => this.reject(err));\r\n this.s.once('close', () => this.reject(new Error('Stream closed')));\r\n }\r\n /**\r\n * Read ahead (peek) from stream. Subsequent read or peeks will return the same data\r\n * @param uint8Array - Uint8Array (or Buffer) to store data read from stream in\r\n * @param offset - Offset target\r\n * @param length - Number of bytes to read\r\n * @returns Number of bytes peeked\r\n */\r\n async peek(uint8Array, offset, length) {\r\n const bytesRead = await this.read(uint8Array, offset, length);\r\n this.peekQueue.push(uint8Array.subarray(offset, offset + bytesRead)); // Put read data back to peek buffer\r\n return bytesRead;\r\n }\r\n /**\r\n * Read chunk from stream\r\n * @param buffer - Target Uint8Array (or Buffer) to store data read from stream in\r\n * @param offset - Offset target\r\n * @param length - Number of bytes to read\r\n * @returns Number of bytes read\r\n */\r\n async read(buffer, offset, length) {\r\n if (length === 0) {\r\n return 0;\r\n }\r\n if (this.peekQueue.length === 0 && this.endOfStream) {\r\n throw new EndOfFileStream_1.EndOfStreamError();\r\n }\r\n let remaining = length;\r\n let bytesRead = 0;\r\n // consume peeked data first\r\n while (this.peekQueue.length > 0 && remaining > 0) {\r\n const peekData = this.peekQueue.pop(); // Front of queue\r\n if (!peekData)\r\n throw new Error('peekData should be defined');\r\n const lenCopy = Math.min(peekData.length, remaining);\r\n buffer.set(peekData.subarray(0, lenCopy), offset + bytesRead);\r\n bytesRead += lenCopy;\r\n remaining -= lenCopy;\r\n if (lenCopy < peekData.length) {\r\n // remainder back to queue\r\n this.peekQueue.push(peekData.subarray(lenCopy));\r\n }\r\n }\r\n // continue reading from stream if required\r\n while (remaining > 0 && !this.endOfStream) {\r\n const reqLen = Math.min(remaining, maxStreamReadSize);\r\n const chunkLen = await this.readFromStream(buffer, offset + bytesRead, reqLen);\r\n bytesRead += chunkLen;\r\n if (chunkLen < reqLen)\r\n break;\r\n remaining -= chunkLen;\r\n }\r\n return bytesRead;\r\n }\r\n /**\r\n * Read chunk from stream\r\n * @param buffer Target Uint8Array (or Buffer) to store data read from stream in\r\n * @param offset Offset target\r\n * @param length Number of bytes to read\r\n * @returns Number of bytes read\r\n */\r\n async readFromStream(buffer, offset, length) {\r\n const readBuffer = this.s.read(length);\r\n if (readBuffer) {\r\n buffer.set(readBuffer, offset);\r\n return readBuffer.length;\r\n }\r\n else {\r\n const request = {\r\n buffer,\r\n offset,\r\n length,\r\n deferred: new Deferred_1.Deferred()\r\n };\r\n this.deferred = request.deferred;\r\n this.s.once('readable', () => {\r\n this.readDeferred(request);\r\n });\r\n return request.deferred.promise;\r\n }\r\n }\r\n /**\r\n * Process deferred read request\r\n * @param request Deferred read request\r\n */\r\n readDeferred(request) {\r\n const readBuffer = this.s.read(request.length);\r\n if (readBuffer) {\r\n request.buffer.set(readBuffer, request.offset);\r\n request.deferred.resolve(readBuffer.length);\r\n this.deferred = null;\r\n }\r\n else {\r\n this.s.once('readable', () => {\r\n this.readDeferred(request);\r\n });\r\n }\r\n }\r\n reject(err) {\r\n this.endOfStream = true;\r\n if (this.deferred) {\r\n this.deferred.reject(err);\r\n this.deferred = null;\r\n }\r\n }\r\n}\r\nexports.StreamReader = StreamReader;\n}(StreamReader));\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.StreamReader = exports.EndOfStreamError = void 0;\r\nvar EndOfFileStream_1 = EndOfFileStream;\r\nObject.defineProperty(exports, \"EndOfStreamError\", { enumerable: true, get: function () { return EndOfFileStream_1.EndOfStreamError; } });\r\nvar StreamReader_1 = StreamReader;\r\nObject.defineProperty(exports, \"StreamReader\", { enumerable: true, get: function () { return StreamReader_1.StreamReader; } });\n}(lib));\n\nObject.defineProperty(AbstractTokenizer$1, \"__esModule\", { value: true });\r\nAbstractTokenizer$1.AbstractTokenizer = void 0;\r\nconst peek_readable_1$3 = lib;\r\n/**\r\n * Core tokenizer\r\n */\r\nclass AbstractTokenizer {\r\n constructor(fileInfo) {\r\n /**\r\n * Tokenizer-stream position\r\n */\r\n this.position = 0;\r\n this.numBuffer = new Uint8Array(8);\r\n this.fileInfo = fileInfo ? fileInfo : {};\r\n }\r\n /**\r\n * Read a token from the tokenizer-stream\r\n * @param token - The token to read\r\n * @param position - If provided, the desired position in the tokenizer-stream\r\n * @returns Promise with token data\r\n */\r\n async readToken(token, position = this.position) {\r\n const uint8Array = Buffer.alloc(token.len);\r\n const len = await this.readBuffer(uint8Array, { position });\r\n if (len < token.len)\r\n throw new peek_readable_1$3.EndOfStreamError();\r\n return token.get(uint8Array, 0);\r\n }\r\n /**\r\n * Peek a token from the tokenizer-stream.\r\n * @param token - Token to peek from the tokenizer-stream.\r\n * @param position - Offset where to begin reading within the file. If position is null, data will be read from the current file position.\r\n * @returns Promise with token data\r\n */\r\n async peekToken(token, position = this.position) {\r\n const uint8Array = Buffer.alloc(token.len);\r\n const len = await this.peekBuffer(uint8Array, { position });\r\n if (len < token.len)\r\n throw new peek_readable_1$3.EndOfStreamError();\r\n return token.get(uint8Array, 0);\r\n }\r\n /**\r\n * Read a numeric token from the stream\r\n * @param token - Numeric token\r\n * @returns Promise with number\r\n */\r\n async readNumber(token) {\r\n const len = await this.readBuffer(this.numBuffer, { length: token.len });\r\n if (len < token.len)\r\n throw new peek_readable_1$3.EndOfStreamError();\r\n return token.get(this.numBuffer, 0);\r\n }\r\n /**\r\n * Read a numeric token from the stream\r\n * @param token - Numeric token\r\n * @returns Promise with number\r\n */\r\n async peekNumber(token) {\r\n const len = await this.peekBuffer(this.numBuffer, { length: token.len });\r\n if (len < token.len)\r\n throw new peek_readable_1$3.EndOfStreamError();\r\n return token.get(this.numBuffer, 0);\r\n }\r\n /**\r\n * Ignore number of bytes, advances the pointer in under tokenizer-stream.\r\n * @param length - Number of bytes to ignore\r\n * @return resolves the number of bytes ignored, equals length if this available, otherwise the number of bytes available\r\n */\r\n async ignore(length) {\r\n if (this.fileInfo.size !== undefined) {\r\n const bytesLeft = this.fileInfo.size - this.position;\r\n if (length > bytesLeft) {\r\n this.position += bytesLeft;\r\n return bytesLeft;\r\n }\r\n }\r\n this.position += length;\r\n return length;\r\n }\r\n async close() {\r\n // empty\r\n }\r\n normalizeOptions(uint8Array, options) {\r\n if (options && options.position !== undefined && options.position < this.position) {\r\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\r\n }\r\n if (options) {\r\n return {\r\n mayBeLess: options.mayBeLess === true,\r\n offset: options.offset ? options.offset : 0,\r\n length: options.length ? options.length : (uint8Array.length - (options.offset ? options.offset : 0)),\r\n position: options.position ? options.position : this.position\r\n };\r\n }\r\n return {\r\n mayBeLess: false,\r\n offset: 0,\r\n length: uint8Array.length,\r\n position: this.position\r\n };\r\n }\r\n}\r\nAbstractTokenizer$1.AbstractTokenizer = AbstractTokenizer;\n\nObject.defineProperty(ReadStreamTokenizer$1, \"__esModule\", { value: true });\r\nReadStreamTokenizer$1.ReadStreamTokenizer = void 0;\r\nconst AbstractTokenizer_1$2 = AbstractTokenizer$1;\r\nconst peek_readable_1$2 = lib;\r\nconst maxBufferSize = 256000;\r\nclass ReadStreamTokenizer extends AbstractTokenizer_1$2.AbstractTokenizer {\r\n constructor(stream, fileInfo) {\r\n super(fileInfo);\r\n this.streamReader = new peek_readable_1$2.StreamReader(stream);\r\n }\r\n /**\r\n * Get file information, an HTTP-client may implement this doing a HEAD request\r\n * @return Promise with file information\r\n */\r\n async getFileInfo() {\r\n return this.fileInfo;\r\n }\r\n /**\r\n * Read buffer from tokenizer\r\n * @param uint8Array - Target Uint8Array to fill with data read from the tokenizer-stream\r\n * @param options - Read behaviour options\r\n * @returns Promise with number of bytes read\r\n */\r\n async readBuffer(uint8Array, options) {\r\n const normOptions = this.normalizeOptions(uint8Array, options);\r\n const skipBytes = normOptions.position - this.position;\r\n if (skipBytes > 0) {\r\n await this.ignore(skipBytes);\r\n return this.readBuffer(uint8Array, options);\r\n }\r\n else if (skipBytes < 0) {\r\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\r\n }\r\n if (normOptions.length === 0) {\r\n return 0;\r\n }\r\n const bytesRead = await this.streamReader.read(uint8Array, normOptions.offset, normOptions.length);\r\n this.position += bytesRead;\r\n if ((!options || !options.mayBeLess) && bytesRead < normOptions.length) {\r\n throw new peek_readable_1$2.EndOfStreamError();\r\n }\r\n return bytesRead;\r\n }\r\n /**\r\n * Peek (read ahead) buffer from tokenizer\r\n * @param uint8Array - Uint8Array (or Buffer) to write data to\r\n * @param options - Read behaviour options\r\n * @returns Promise with number of bytes peeked\r\n */\r\n async peekBuffer(uint8Array, options) {\r\n const normOptions = this.normalizeOptions(uint8Array, options);\r\n let bytesRead = 0;\r\n if (normOptions.position) {\r\n const skipBytes = normOptions.position - this.position;\r\n if (skipBytes > 0) {\r\n const skipBuffer = new Uint8Array(normOptions.length + skipBytes);\r\n bytesRead = await this.peekBuffer(skipBuffer, { mayBeLess: normOptions.mayBeLess });\r\n uint8Array.set(skipBuffer.subarray(skipBytes), normOptions.offset);\r\n return bytesRead - skipBytes;\r\n }\r\n else if (skipBytes < 0) {\r\n throw new Error('Cannot peek from a negative offset in a stream');\r\n }\r\n }\r\n if (normOptions.length > 0) {\r\n try {\r\n bytesRead = await this.streamReader.peek(uint8Array, normOptions.offset, normOptions.length);\r\n }\r\n catch (err) {\r\n if (options && options.mayBeLess && err instanceof peek_readable_1$2.EndOfStreamError) {\r\n return 0;\r\n }\r\n throw err;\r\n }\r\n if ((!normOptions.mayBeLess) && bytesRead < normOptions.length) {\r\n throw new peek_readable_1$2.EndOfStreamError();\r\n }\r\n }\r\n return bytesRead;\r\n }\r\n async ignore(length) {\r\n // debug(`ignore ${this.position}...${this.position + length - 1}`);\r\n const bufSize = Math.min(maxBufferSize, length);\r\n const buf = new Uint8Array(bufSize);\r\n let totBytesRead = 0;\r\n while (totBytesRead < length) {\r\n const remaining = length - totBytesRead;\r\n const bytesRead = await this.readBuffer(buf, { length: Math.min(bufSize, remaining) });\r\n if (bytesRead < 0) {\r\n return bytesRead;\r\n }\r\n totBytesRead += bytesRead;\r\n }\r\n return totBytesRead;\r\n }\r\n}\r\nReadStreamTokenizer$1.ReadStreamTokenizer = ReadStreamTokenizer;\n\nvar BufferTokenizer$1 = {};\n\nObject.defineProperty(BufferTokenizer$1, \"__esModule\", { value: true });\r\nBufferTokenizer$1.BufferTokenizer = void 0;\r\nconst peek_readable_1$1 = lib;\r\nconst AbstractTokenizer_1$1 = AbstractTokenizer$1;\r\nclass BufferTokenizer extends AbstractTokenizer_1$1.AbstractTokenizer {\r\n /**\r\n * Construct BufferTokenizer\r\n * @param uint8Array - Uint8Array to tokenize\r\n * @param fileInfo - Pass additional file information to the tokenizer\r\n */\r\n constructor(uint8Array, fileInfo) {\r\n super(fileInfo);\r\n this.uint8Array = uint8Array;\r\n this.fileInfo.size = this.fileInfo.size ? this.fileInfo.size : uint8Array.length;\r\n }\r\n /**\r\n * Read buffer from tokenizer\r\n * @param uint8Array - Uint8Array to tokenize\r\n * @param options - Read behaviour options\r\n * @returns {Promise<number>}\r\n */\r\n async readBuffer(uint8Array, options) {\r\n if (options && options.position) {\r\n if (options.position < this.position) {\r\n throw new Error('`options.position` must be equal or greater than `tokenizer.position`');\r\n }\r\n this.position = options.position;\r\n }\r\n const bytesRead = await this.peekBuffer(uint8Array, options);\r\n this.position += bytesRead;\r\n return bytesRead;\r\n }\r\n /**\r\n * Peek (read ahead) buffer from tokenizer\r\n * @param uint8Array\r\n * @param options - Read behaviour options\r\n * @returns {Promise<number>}\r\n */\r\n async peekBuffer(uint8Array, options) {\r\n const normOptions = this.normalizeOptions(uint8Array, options);\r\n const bytes2read = Math.min(this.uint8Array.length - normOptions.position, normOptions.length);\r\n if ((!normOptions.mayBeLess) && bytes2read < normOptions.length) {\r\n throw new peek_readable_1$1.EndOfStreamError();\r\n }\r\n else {\r\n uint8Array.set(this.uint8Array.subarray(normOptions.position, normOptions.position + bytes2read), normOptions.offset);\r\n return bytes2read;\r\n }\r\n }\r\n async close() {\r\n // empty\r\n }\r\n}\r\nBufferTokenizer$1.BufferTokenizer = BufferTokenizer;\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.fromBuffer = exports.fromStream = exports.EndOfStreamError = void 0;\r\nconst ReadStreamTokenizer_1 = ReadStreamTokenizer$1;\r\nconst BufferTokenizer_1 = BufferTokenizer$1;\r\nvar peek_readable_1 = lib;\r\nObject.defineProperty(exports, \"EndOfStreamError\", { enumerable: true, get: function () { return peek_readable_1.EndOfStreamError; } });\r\n/**\r\n * Construct ReadStreamTokenizer from given Stream.\r\n * Will set fileSize, if provided given Stream has set the .path property/\r\n * @param stream - Read from Node.js Stream.Readable\r\n * @param fileInfo - Pass the file information, like size and MIME-type of the corresponding stream.\r\n * @returns ReadStreamTokenizer\r\n */\r\nfunction fromStream(stream, fileInfo) {\r\n fileInfo = fileInfo ? fileInfo : {};\r\n return new ReadStreamTokenizer_1.ReadStreamTokenizer(stream, fileInfo);\r\n}\r\nexports.fromStream = fromStream;\r\n/**\r\n * Construct ReadStreamTokenizer from given Buffer.\r\n * @param uint8Array - Uint8Array to tokenize\r\n * @param fileInfo - Pass additional file information to the tokenizer\r\n * @returns BufferTokenizer\r\n */\r\nfunction fromBuffer(uint8Array, fileInfo) {\r\n return new BufferTokenizer_1.BufferTokenizer(uint8Array, fileInfo);\r\n}\r\nexports.fromBuffer = fromBuffer;\n}(core));\n\nvar FileTokenizer$1 = {};\n\nObject.defineProperty(FileTokenizer$1, \"__esModule\", { value: true });\r\nFileTokenizer$1.fromFile = FileTokenizer$1.FileTokenizer = void 0;\r\nconst AbstractTokenizer_1 = AbstractTokenizer$1;\r\nconst peek_readable_1 = lib;\r\nconst fs = FsPromise;\r\nclass FileTokenizer extends AbstractTokenizer_1.AbstractTokenizer {\r\n constructor(fd, fileInfo) {\r\n super(fileInfo);\r\n this.fd = fd;\r\n }\r\n /**\r\n * Read buffer from file\r\n * @param uint8Array - Uint8Array to write result to\r\n * @param options - Read behaviour options\r\n * @returns Promise number of bytes read\r\n */\r\n async readBuffer(uint8Array, options) {\r\n const normOptions = this.normalizeOptions(uint8Array, options);\r\n this.position = normOptions.position;\r\n const res = await fs.read(this.fd, uint8Array, normOptions.offset, normOptions.length, normOptions.position);\r\n this.position += res.bytesRead;\r\n if (res.bytesRead < normOptions.length && (!options || !options.mayBeLess)) {\r\n throw new peek_readable_1.EndOfStreamError();\r\n }\r\n return res.bytesRead;\r\n }\r\n /**\r\n * Peek buffer from file\r\n * @param uint8Array - Uint8Array (or Buffer) to write data to\r\n * @param options - Read behaviour options\r\n * @returns Promise number of bytes read\r\n */\r\n async peekBuffer(uint8Array, options) {\r\n const normOptions = this.normalizeOptions(uint8Array, options);\r\n const res = await fs.read(this.fd, uint8Array, normOptions.offset, normOptions.length, normOptions.position);\r\n if ((!normOptions.mayBeLess) && res.bytesRead < normOptions.length) {\r\n throw new peek_readable_1.EndOfStreamError();\r\n }\r\n return res.bytesRead;\r\n }\r\n async close() {\r\n return fs.close(this.fd);\r\n }\r\n}\r\nFileTokenizer$1.FileTokenizer = FileTokenizer;\r\nasync function fromFile(sourceFilePath) {\r\n const stat = await fs.stat(sourceFilePath);\r\n if (!stat.isFile) {\r\n throw new Error(`File not a file: ${sourceFilePath}`);\r\n }\r\n const fd = await fs.open(sourceFilePath, 'r');\r\n return new FileTokenizer(fd, { path: sourceFilePath, size: stat.size });\r\n}\r\nFileTokenizer$1.fromFile = fromFile;\n\n(function (exports) {\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.fromStream = exports.fromBuffer = exports.EndOfStreamError = exports.fromFile = void 0;\r\nconst fs = FsPromise;\r\nconst core$1 = core;\r\nvar FileTokenizer_1 = FileTokenizer$1;\r\nObject.defineProperty(exports, \"fromFile\", { enumerable: true, get: function () { return FileTokenizer_1.fromFile; } });\r\nvar core_1 = core;\r\nObject.defineProperty(exports, \"EndOfStreamError\", { enumerable: true, get: function () { return core_1.EndOfStreamError; } });\r\nObject.defineProperty(exports, \"fromBuffer\", { enumerable: true, get: function () { return core_1.fromBuffer; } });\r\n/**\r\n * Construct ReadStreamTokenizer from given Stream.\r\n * Will set fileSize, if provided given Stream has set the .path property.\r\n * @param stream - Node.js Stream.Readable\r\n * @param fileInfo - Pass additional file information to the tokenizer\r\n * @returns Tokenizer\r\n */\r\nasync function fromStream(stream, fileInfo) {\r\n fileInfo = fileInfo ? fileInfo : {};\r\n if (stream.path) {\r\n const stat = await fs.stat(stream.path);\r\n fileInfo.path = stream.path;\r\n fileInfo.size = stat.size;\r\n }\r\n return core$1.fromStream(stream, fileInfo);\r\n}\r\nexports.fromStream = fromStream;\n}(lib$1));\n\nfunction stringToBytes(string) {\n return Object.values(string).map(character => {\n return character.charCodeAt(0);\n });\n}\n/**\nChecks whether the TAR checksum is valid.\n\n@param {Buffer} buffer - The TAR header `[offset ... offset + 512]`.\n@param {number} offset - TAR header offset.\n@returns {boolean} `true` if the TAR checksum is valid, otherwise `false`.\n*/\nfunction tarHeaderChecksumMatches(buffer, offset = 0) {\n const readSum = Number.parseInt(buffer.toString('utf8', 148, 154).replace(/\\0.*$/, '').trim(), 8); // Read sum in header\n if (Number.isNaN(readSum)) {\n return false;\n }\n let sum = 8 * 0x20; // Initialize signed bit sum\n for (let i = offset; i < offset + 148; i++) {\n sum += buffer[i];\n }\n for (let i = offset + 156; i < offset + 512; i++) {\n sum += buffer[i];\n }\n return readSum === sum;\n}\n/**\nID3 UINT32 sync-safe tokenizer token.\n28 bits (representing up to 256MB) integer, the msb is 0 to avoid \"false syncsignals\".\n*/\nconst uint32SyncSafeToken = {\n get: (buffer, offset) => (buffer[offset + 3] & 0x7F) | ((buffer[offset + 2]) << 7) | ((buffer[offset + 1]) << 14) | ((buffer[offset]) << 21),\n len: 4,\n};\n\nconst minimumBytes = 4100; // A fair amount of file-types are detectable within this range.\n// 没有的情况下,均通过\nconst checkFileType = (file, callback) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = async (event) => {\n var _a, _b;\n try {\n const buffers = new Uint8Array((_a = event.target) === null || _a === void 0 ? void 0 : _a.result);\n const tokenizer = await lib$1.fromBuffer(buffers);\n const fileType = await fileTypeFromTokenizer(tokenizer);\n const suffix = file.name.indexOf('.') > -1 ? (file.name.split('.').pop() || '').toLocaleLowerCase() : '';\n let check = fileType ? suffix === fileType.ext : true;\n // 兼容处理\n if (suffix.indexOf('xls') > -1 && (((_b = fileType === null || fileType === void 0 ? void 0 : fileType.ext) === null || _b === void 0 ? void 0 : _b.indexOf('xls')) > -1 || (fileType === null || fileType === void 0 ? void 0 : fileType.ext) === 'cfb')) {\n check = true;\n }\n callback(check, fileType);\n }\n catch (error) {\n if (!(error instanceof lib$1.EndOfStreamError)) {\n throw error;\n }\n callback(true, undefined);\n }\n };\n};\nasync function fileTypeFromTokenizer(tokenizer) {\n try {\n return new FileTypeParser().parse(tokenizer);\n }\n catch (error) {\n if (!(error instanceof lib$1.EndOfStreamError)) {\n throw error;\n }\n }\n}\nfunction _check(buffer, headers, options) {\n options = Object.assign({ offset: 0 }, options);\n for (const [index, header] of headers.entries()) {\n // If a bitmask is set\n if (options.mask) {\n // If header doesn't equal `buf` with bits masked off\n if (header !== (options.mask[index] & buffer[index + options.offset])) {\n return false;\n }\n }\n else if (header !== buffer[index + options.offset]) {\n return false;\n }\n }\n return true;\n}\nclass FileTypeParser {\n constructor() {\n this.buffer = Buffer.alloc(minimumBytes);\n }\n check(header, options) {\n return _check(this.buffer, header, options);\n }\n checkString(header, options) {\n return this.check(stringToBytes(header), options);\n }\n async readTiffTag(bigEndian) {\n if (this.tokenizer) {\n const tagId = await this.tokenizer.readToken(bigEndian ? lib$2.UINT16_BE : lib$2.UINT16_LE);\n this.tokenizer.ignore(10);\n switch (tagId) {\n case 50341:\n return {\n ext: 'arw',\n mime: 'image/x-sony-arw',\n };\n case 50706:\n return {\n ext: 'dng',\n mime: 'image/x-adobe-dng',\n };\n }\n }\n }\n async readTiffIFD(bigEndian) {\n if (this.tokenizer) {\n const numberOfTags = await this.tokenizer.readToken(bigEndian ? lib$2.UINT16_BE : lib$2.UINT16_LE);\n for (let n = 0; n < numberOfTags; ++n) {\n const fileType = await this.readTiffTag(bigEndian);\n if (fileType) {\n return fileType;\n }\n }\n }\n }\n async readTiffHeader(bigEndian) {\n const version = (bigEndian ? lib$2.UINT16_BE : lib$2.UINT16_LE).get(this.buffer, 2);\n const ifdOffset = (bigEndian ? lib$2.UINT32_BE : lib$2.UINT32_LE).get(this.buffer, 4);\n if (version === 42) {\n // TIFF file header\n if (ifdOffset >= 6) {\n if (this.checkString('CR', { offset: 8 })) {\n return {\n ext: 'cr2',\n mime: 'image/x-canon-cr2',\n };\n }\n if (ifdOffset >= 8 && (this.check([0x1C, 0x00, 0xFE, 0x00], { offset: 8 }) || this.check([0x1F, 0x00, 0x0B, 0x00], { offset: 8 }))) {\n return {\n ext: 'nef',\n mime: 'image/x-nikon-nef',\n };\n }\n }\n if (this.tokenizer) {\n await this.tokenizer.ignore(ifdOffset);\n const fileType = await this.readTiffIFD(false);\n return fileType ? fileType : {\n ext: 'tif',\n mime: 'image/tiff',\n };\n }\n }\n if (version === 43) { // Big TIFF file header\n return {\n ext: 'tif',\n mime: 'image/tiff',\n };\n }\n }\n async parse(tokenizer) {\n this.buffer = Buffer.alloc(minimumBytes);\n // Keep reading until EOF if the file size is unknown.\n if (tokenizer.fileInfo.size === undefined) {\n tokenizer.fileInfo.size = Number.MAX_SAFE_INTEGER;\n }\n this.tokenizer = tokenizer;\n await tokenizer.peekBuffer(this.buffer, { length: 12, mayBeLess: true });\n // -- 2-byte signatures --\n if (this.check([0x42, 0x4D])) {\n return {\n ext: 'bmp',\n mime: 'image/bmp',\n };\n }\n if (this.check([0x0B, 0x77])) {\n return {\n ext: 'ac3',\n mime: 'audio/vnd.dolby.dd-raw',\n };\n }\n if (this.check([0x78, 0x01])) {\n return {\n ext: 'dmg',\n mime: 'application/x-apple-diskimage',\n };\n }\n if (this.check([0x4D, 0x5A])) {\n return {\n ext: 'exe',\n mime: 'application/x-msdownload',\n };\n }\n if (this.check([0x25, 0x21])) {\n await tokenizer.peekBuffer(this.buffer, { length: 24, mayBeLess: true });\n if (this.checkString('PS-Adobe-', { offset: 2 })\n && this.checkString(' EPSF-', { offset: 14 })) {\n return {\n ext: 'eps',\n mime: 'application/eps',\n };\n }\n return {\n ext: 'ps',\n mime: 'application/postscript',\n };\n }\n if (this.check([0x1F, 0xA0]) || this.check([0x1F, 0x9D])) {\n return {\n ext: 'Z',\n mime: 'application/x-compress',\n };\n }\n // -- 3-byte signatures --\n if (this.check([0x47, 0x49, 0x46])) {\n return {\n ext: 'gif',\n mime: 'image/gif',\n };\n }\n if (this.check([0xFF, 0xD8, 0xFF])) {\n return {\n ext: 'jpg',\n mime: 'image/jpeg',\n };\n }\n if (this.check([0x49, 0x49, 0xBC])) {\n return {\n ext: 'jxr',\n mime: 'image/vnd.ms-photo',\n };\n }\n if (this.check([0x1F, 0x8B, 0x8])) {\n return {\n ext: 'gz',\n mime: 'application/gzip',\n };\n }\n if (this.check([0x42, 0x5A, 0x68])) {\n return {\n ext: 'bz2',\n mime: 'application/x-bzip2',\n };\n }\n if (this.checkString('ID3')) {\n await tokenizer.ignore(6); // Skip ID3 header until the header size\n const id3HeaderLength = await tokenizer.readToken(uint32SyncSafeToken);\n if (tokenizer.position + id3HeaderLength > tokenizer.fileInfo.size) {\n // Guess file type based on ID3 header for backward compatibility\n return {\n ext: 'mp3',\n mime: 'audio/mpeg',\n };\n }\n await tokenizer.ignore(id3HeaderLength);\n return fileTypeFromTokenizer(tokenizer); // Skip ID3 header, recursion\n }\n // Musepack, SV7\n if (this.checkString('MP+')) {\n return {\n ext: 'mpc',\n mime: 'audio/x-musepack',\n };\n }\n if ((this.buffer[0] === 0x43 || this.buffer[0] === 0x46) && this.check([0x57, 0x53], { offset: 1 })) {\n return {\n ext: 'swf',\n mime: 'application/x-shockwave-flash',\n };\n }\n // -- 4-byte signatures --\n if (this.checkString('FLIF')) {\n return {\n ext: 'flif',\n mime: 'image/flif',\n };\n }\n if (this.checkString('8BPS')) {\n return {\n ext: 'psd',\n mime: 'image/vnd.adobe.photoshop',\n };\n }\n if (this.checkString('WEBP', { offset: 8 })) {\n return {\n ext: 'webp',\n mime: 'image/webp',\n };\n }\n // Musepack, SV8\n if (this.checkString('MPCK')) {\n return {\n ext: 'mpc',\n mime: 'audio/x-musepack',\n };\n }\n if (this.checkString('FORM')) {\n return {\n ext: 'aif',\n mime: 'audio/aiff',\n };\n }\n if (this.checkString('icns', { offset: 0 })) {\n return {\n ext: 'icns',\n mime: 'image/icns',\n };\n }\n // Zip-based file formats\n // Need to be before the `zip` check\n if (this.check([0x50, 0x4B, 0x3, 0x4])) { // Local file header signature\n try {\n while (tokenizer.position + 30 < tokenizer.fileInfo.size) {\n await tokenizer.readBuffer(this.buffer, { length: 30 });\n // https://en.wikipedia.org/wiki/Zip_(file_format)#File_headers\n const zipHeader = {\n compressedSize: this.buffer.readUInt32LE(18),\n uncompressedSize: this.buffer.readUInt32LE(22),\n filenameLength: this.buffer.readUInt16LE(26),\n extraFieldLength: this.buffer.readUInt16LE(28),\n };\n zipHeader.filename = await tokenizer.readToken(new lib$2.StringType(zipHeader.filenameLength, 'utf-8'));\n await tokenizer.ignore(zipHeader.extraFieldLength);\n // Assumes signed `.xpi` from addons.mozilla.org\n if (zipHeader.filename === 'META-INF/mozilla.rsa') {\n return {\n ext: 'xpi',\n mime: 'application/x-xpinstall',\n };\n }\n if (zipHeader.filename.endsWith('.rels') || zipHeader.filename.endsWith('.xml')) {\n const type = zipHeader.filename.split('/')[0];\n switch (type) {\n case '_rels':\n break;\n case 'word':\n return {\n ext: 'docx',\n mime: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n };\n case 'ppt':\n return {\n ext: 'pptx',\n mime: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n };\n case 'xl':\n return {\n ext: 'xlsx',\n mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n };\n default:\n break;\n }\n }\n if (zipHeader.filename.startsWith('xl/')) {\n return {\n ext: 'xlsx',\n mime: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n };\n }\n if (zipHeader.filename.startsWith('3D/') && zipHeader.filename.endsWith('.model')) {\n return {\n ext: '3mf',\n mime: 'model/3mf',\n };\n }\n // The docx, xlsx and pptx file types extend the Office Open XML file format:\n // https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\n // We look for:\n // - one entry named '[Content_Types].xml' or '_rels/.rels',\n // - one entry indicating specific type of file.\n // MS Office, OpenOffice and LibreOffice may put the parts in different order, so the check should not rely on it.\n if (zipHeader.filename === 'mimetype' && zipHeader.compressedSize === zipHeader.uncompressedSize) {\n const mimeType = await tokenizer.readToken(new lib$2.StringType(zipHeader.compressedSize, 'utf-8'));\n switch (mimeType) {\n case 'application/epub+zip':\n return {\n ext: 'epub',\n mime: 'application/epub+zip',\n };\n case 'application/vnd.oasis.opendocument.text':\n return {\n ext: 'odt',\n mime: 'application/vnd.oasis.opendocument.text',\n };\n case 'application/vnd.oasis.opendocument.spreadsheet':\n return {\n ext: 'ods',\n mime: 'application/vnd.oasis.opendocument.spreadsheet',\n };\n case 'application/vnd.oasis.opendocument.presentation':\n return {\n ext: 'odp',\n mime: 'application/vnd.oasis.opendocument.presentation',\n };\n default:\n }\n }\n // Try to find next header manually when current one is corrupted\n if (zipHeader.compressedSize === 0) {\n let nextHeaderIndex = -1;\n while (nextHeaderIndex < 0 && (tokenizer.position < tokenizer.fileInfo.size)) {\n await tokenizer.peekBuffer(this.buffer, { mayBeLess: true });\n nextHeaderIndex = this.buffer.indexOf('504B0304', 0, 'hex');\n // Move position to the next header if found, skip the whole buffer otherwise\n await tokenizer.ignore(nextHeaderIndex >= 0 ? nextHeaderIndex : this.buffer.length);\n }\n }\n else {\n await tokenizer.ignore(zipHeader.compressedSize);\n }\n }\n }\n catch (error) {\n if (!(error instanceof lib$1.EndOfStreamError)) {\n throw error;\n }\n }\n return {\n ext: 'zip',\n mime: 'application/zip',\n };\n }\n if (this.checkString('OggS')) {\n // This is an OGG container\n await tokenizer.ignore(28);\n const type = Buffer.alloc(8);\n await tokenizer.readBuffer(type);\n // Needs to be before `ogg` check\n if (_check(type, [0x4F, 0x70, 0x75, 0x73, 0x48, 0x65, 0x61, 0x64])) {\n return {\n ext: 'opus',\n mime: 'audio/opus',\n };\n }\n // If ' theora' in header.\n if (_check(type, [0x80, 0x74, 0x68, 0x65, 0x6F, 0x72, 0x61])) {\n return {\n ext: 'ogv',\n mime: 'video/ogg',\n };\n }\n // If '\\x01video' in header.\n if (_check(type, [0x01, 0x76, 0x69, 0x64, 0x65, 0x6F, 0x00])) {\n return {\n ext: 'ogm',\n mime: 'video/ogg',\n };\n }\n // If ' FLAC' in header https://xiph.org/flac/faq.html\n if (_check(type, [0x7F, 0x46, 0x4C, 0x41, 0x43])) {\n return {\n ext: 'oga',\n mime: 'audio/ogg',\n };\n }\n // 'Speex ' in header https://en.wikipedia.org/wiki/Speex\n if (_check(type, [0x53, 0x70, 0x65, 0x65, 0x78, 0x20, 0x20])) {\n return {\n ext: 'spx',\n mime: 'audio/ogg',\n };\n }\n // If '\\x01vorbis' in header\n if (_check(type, [0x01, 0x76, 0x6F, 0x72, 0x62, 0x69, 0x73])) {\n return {\n ext: 'ogg',\n mime: 'audio/ogg',\n };\n }\n // Default OGG container https://www.iana.org/assignments/media-types/application/ogg\n return {\n ext: 'ogx',\n mime: 'application/ogg',\n };\n }\n if (this.check([0x50, 0x4B])\n && (this.buffer[2] === 0x3 || this.buffer[2] === 0x5 || this.buffer[2] === 0x7)\n && (this.buffer[3] === 0x4 || this.buffer[3] === 0x6 || this.buffer[3] === 0x8)) {\n return {\n ext: 'zip',\n mime: 'application/zip',\n };\n }\n //\n // File Type Box (https://en.wikipedia.org/wiki/ISO_base_media_file_format)\n // It's not required to be first, but it's recommended to be. Almost all ISO base media files start with `ftyp` box.\n // `ftyp` box must contain a brand major identifier, which must consist of ISO 8859-1 printable characters.\n // Here we check for 8859-1 printable characters (for simplicity, it's a mask which also catches one non-printable character).\n if (this.checkString('ftyp', { offset: 4 })\n && (this.buffer[8] & 0x60) !== 0x00 // Brand major, first character ASCII?\n ) {\n // They all can have MIME `video/mp4` except `application/mp4` special-case which is hard to detect.\n // For some cases, we're specific, everything else falls to `video/mp4` with `mp4` extension.\n const brandMajor = this.buffer.toString('binary', 8, 12).replace('\\0', ' ').trim();\n switch (brandMajor) {\n case 'avif':\n case 'avis':\n return { ext: 'avif', mime: 'image/avif' };\n case 'mif1':\n return { ext: 'heic', mime: 'image/heif' };\n case 'msf1':\n return { ext: 'heic', mime: 'image/heif-sequence' };\n case 'heic':\n case 'heix':\n return { ext: 'heic', mime: 'image/heic' };\n case 'hevc':\n case 'hevx':\n return { ext: 'heic', mime: 'image/heic-sequence' };\n case 'qt':\n return { ext: 'mov', mime: 'video/quicktime' };\n case 'M4V':\n case 'M4VH':\n case 'M4VP':\n return { ext: 'm4v', mime: 'video/x-m4v' };\n case 'M4P':\n return { ext: 'm4p', mime: 'video/mp4' };\n case 'M4B':\n return { ext: 'm4b', mime: 'audio/mp4' };\n case 'M4A':\n return { ext: 'm4a', mime: 'audio/x-m4a' };\n case 'F4V':\n return { ext: 'f4v', mime: 'video/mp4' };\n case 'F4P':\n return { ext: 'f4p', mime: 'video/mp4' };\n case 'F4A':\n return { ext: 'f4a', mime: 'audio/mp4' };\n case 'F4B':\n return { ext: 'f4b', mime: 'audio/mp4' };\n case 'crx':\n return { ext: 'cr3', mime: 'image/x-canon-cr3' };\n default:\n if (brandMajor.startsWith('3g')) {\n if (brandMajor.startsWith('3g2')) {\n return { ext: '3g2', mime: 'video/3gpp2' };\n }\n return { ext: '3gp', mime: 'video/3gpp' };\n }\n return { ext: 'mp4', mime: 'video/mp4' };\n }\n }\n if (this.checkString('MThd')) {\n return {\n ext: 'mid',\n mime: 'audio/midi',\n };\n }\n if (this.checkString('wOFF')\n && (this.check([0x00, 0x01, 0x00, 0x00], { offset: 4 })\n || this.checkString('OTTO', { offset: 4 }))) {\n return {\n ext: 'woff',\n mime: 'font/woff',\n };\n }\n if (this.checkString('wOF2')\n && (this.check([0x00, 0x01, 0x00, 0x00], { offset: 4 })\n || this.checkString('OTTO', { offset: 4 }))) {\n return {\n ext: 'woff2',\n mime: 'font/woff2',\n };\n }\n if (this.check([0xD4, 0xC3, 0xB2, 0xA1]) || this.check([0xA1, 0xB2, 0xC3, 0xD4])) {\n return {\n ext: 'pcap',\n mime: 'application/vnd.tcpdump.pcap',\n };\n }\n // Sony DSD Stream File (DSF)\n if (this.checkString('DSD ')) {\n return {\n ext: 'dsf',\n mime: 'audio/x-dsf', // Non-standard\n };\n }\n if (this.checkString('LZIP')) {\n return {\n ext: 'lz',\n mime: 'application/x-lzip',\n };\n }\n if (this.checkString('fLaC')) {\n return {\n ext: 'flac',\n mime: 'audio/flac', // todo: audio/x-flac\n };\n }\n if (this.check([0x42, 0x50, 0x47, 0xFB])) {\n return {\n ext: 'bpg',\n mime: 'image/bpg',\n };\n }\n if (this.checkString('wvpk')) {\n return {\n ext: 'wv',\n mime: 'audio/wavpack',\n };\n }\n if (this.checkString('%PDF')) {\n await tokenizer.ignore(1350);\n const maxBufferSize = 10 * 1024 * 1024;\n const buffer = Buffer.alloc(Math.min(maxBufferSize, tokenizer.fileInfo.size));\n await tokenizer.readBuffer(buffer, { mayBeLess: true });\n // Check if this is an Adobe Illustrator file\n if (buffer.includes(Buffer.from('AIPrivateData'))) {\n return {\n ext: 'ai',\n mime: 'application/postscript',\n };\n }\n // Assume this is just a normal PDF\n return {\n ext: 'pdf',\n mime: 'application/pdf',\n };\n }\n if (this.check([0x00, 0x61, 0x73, 0x6D])) {\n return {\n ext: 'wasm',\n mime: 'application/wasm',\n };\n }\n // TIFF, little-endian type\n if (this.check([0x49, 0x49])) {\n const fileType = await this.readTiffHeader(false);\n if (fileType) {\n return fileType;\n }\n }\n // TIFF, big-endian type\n if (this.check([0x4D, 0x4D])) {\n const fileType = await this.readTiffHeader(true);\n if (fileType) {\n return fileType;\n }\n }\n if (this.checkString('MAC ')) {\n return {\n ext: 'ape',\n mime: 'audio/ape',\n };\n }\n // https://github.com/threatstack/libmagic/blob/master/magic/Magdir/matroska\n if (this.check([0x1A, 0x45, 0xDF, 0xA3])) { // Root element: EBML\n async function readField() {\n const msb = await tokenizer.peekNumber(lib$2.UINT8);\n let mask = 0x80;\n let ic = 0; // 0 = A, 1 = B, 2 = C, 3\n // = D\n while ((msb & mask) === 0) {\n ++ic;\n mask >>= 1;\n }\n const id = Buffer.alloc(ic + 1);\n await tokenizer.readBuffer(id);\n return id;\n }\n async function readElement() {\n const id = await readField();\n const lengthField = await readField();\n lengthField[0] ^= 0x80 >> (lengthField.length - 1);\n const nrLength = Math.min(6, lengthField.length); // JavaScript can max read 6 bytes integer\n return {\n id: id.readUIntBE(0, id.length),\n len: lengthField.readUIntBE(lengthField.length - nrLength, nrLength),\n };\n }\n async function readChildren(_level, children) {\n while (children > 0) {\n const element = await readElement();\n if (element.id === 17026) {\n const rawValue = await tokenizer.readToken(new lib$2.StringType(element.len, 'utf-8'));\n return rawValue.replace(/\\00.*$/g, ''); // Return DocType\n }\n await tokenizer.ignore(element.len); // ignore payload\n --children;\n }\n }\n const re = await readElement();\n const docType = await readChildren(1, re.len);\n switch (docType) {\n case 'webm':\n return {\n ext: 'webm',\n mime: 'video/webm',\n };\n case 'matroska':\n return {\n ext: 'mkv',\n mime: 'video/x-matroska',\n };\n default:\n return;\n }\n }\n // RIFF file format which might be AVI, WAV, QCP, etc\n if (this.check([0x52, 0x49, 0x46, 0x46])) {\n if (this.check([0x41, 0x56, 0x49], { offset: 8 })) {\n return {\n ext: 'avi',\n mime: 'video/vnd.avi',\n };\n }\n if (this.check([0x57, 0x41, 0x56, 0x45], { offset: 8 })) {\n return {\n ext: 'wav',\n mime: 'audio/vnd.wave',\n };\n }\n // QLCM, QCP file\n if (this.check([0x51, 0x4C, 0x43, 0x4D], { offset: 8 })) {\n return {\n ext: 'qcp',\n mime: 'audio/qcelp',\n };\n }\n }\n if (this.checkString('SQLi')) {\n return {\n ext: 'sqlite',\n mime: 'application/x-sqlite3',\n };\n }\n if (this.check([0x4E, 0x45, 0x53, 0x1A])) {\n return {\n ext: 'nes',\n mime: 'application/x-nintendo-nes-rom',\n };\n }\n if (this.checkString('Cr24')) {\n return {\n ext: 'crx',\n mime: 'application/x-google-chrome-extension',\n };\n }\n if (this.checkString('MSCF')\n || this.checkString('ISc(')) {\n return {\n ext: 'cab',\n mime: 'application/vnd.ms-cab-compressed',\n };\n }\n if (this.check([0xED, 0xAB, 0xEE, 0xDB])) {\n return {\n ext: 'rpm',\n mime: 'application/x-rpm',\n };\n }\n if (this.check([0xC5, 0xD0, 0xD3, 0xC6])) {\n return {\n ext: 'eps',\n mime: 'application/eps',\n };\n }\n if (this.check([0x28, 0xB5, 0x2F, 0xFD])) {\n return {\n ext: 'zst',\n mime: 'application/zstd',\n };\n }\n if (this.check([0x7F, 0x45, 0x4C, 0x46])) {\n return {\n ext: 'elf',\n mime: 'application/x-elf',\n };\n }\n // -- 5-byte signatures --\n if (this.check([0x4F, 0x54, 0x54, 0x4F, 0x00])) {\n return {\n ext: 'otf',\n mime: 'font/otf',\n };\n }\n if (this.checkString('#!AMR')) {\n return {\n ext: 'amr',\n mime: 'audio/amr',\n };\n }\n if (this.checkString('{\\\\rtf')) {\n return {\n ext: 'rtf',\n mime: 'application/rtf',\n };\n }\n if (this.check([0x46, 0x4C, 0x56, 0x01])) {\n return {\n ext: 'flv',\n mime: 'video/x-flv',\n };\n }\n if (this.checkString('IMPM')) {\n return {\n ext: 'it',\n mime: 'audio/x-it',\n };\n }\n if (this.checkString('-lh0-', { offset: 2 })\n || this.checkString('-lh1-', { offset: 2 })\n || this.checkString('-lh2-', { offset: 2 })\n || this.checkString('-lh3-', { offset: 2 })\n || this.checkString('-lh4-', { offset: 2 })\n || this.checkString('-lh5-', { offset: 2 })\n || this.checkString('-lh6-', { offset: 2 })\n || this.checkString('-lh7-', { offset: 2 })\n || this.checkString('-lzs-', { offset: 2 })\n || this.checkString('-lz4-', { offset: 2 })\n || this.checkString('-lz5-', { offset: 2 })\n || this.checkString('-lhd-', { offset: 2 })) {\n return {\n ext: 'lzh',\n mime: 'application/x-lzh-compressed',\n };\n }\n // MPEG program stream (PS or MPEG-PS)\n if (this.check([0x00, 0x00, 0x01, 0xBA])) {\n // MPEG-PS, MPEG-1 Part 1\n if (this.check([0x21], { offset: 4, mask: [0xF1] })) {\n return {\n ext: 'mpg',\n mime: 'video/MP1S',\n };\n }\n // MPEG-PS, MPEG-2 Part 1\n if (this.check([0x44], { offset: 4, mask: [0xC4] })) {\n return {\n ext: 'mpg',\n mime: 'video/MP2P',\n };\n }\n }\n if (this.checkString('ITSF')) {\n return {\n ext: 'chm',\n mime: 'application/vnd.ms-htmlhelp',\n };\n }\n // -- 6-byte signatures --\n if (this.check([0xFD, 0x37, 0x7A, 0x58, 0x5A, 0x00])) {\n return {\n ext: 'xz',\n mime: 'application/x-xz',\n };\n }\n if (this.checkString('<?xml ')) {\n return {\n ext: 'xml',\n mime: 'application/xml',\n };\n }\n if (this.check([0x37, 0x7A, 0xBC, 0xAF, 0x27, 0x1C])) {\n return {\n ext: '7z',\n mime: 'application/x-7z-compressed',\n };\n }\n if (this.check([0x52, 0x61, 0x72, 0x21, 0x1A, 0x7])\n && (this.buffer[6] === 0x0 || this.buffer[6] === 0x1)) {\n return {\n ext: 'rar',\n mime: 'application/x-rar-compressed',\n };\n }\n if (this.checkString('solid ')) {\n return {\n ext: 'stl',\n mime: 'model/stl',\n };\n }\n // -- 7-byte signatures --\n if (this.checkString('BLENDER')) {\n return {\n ext: 'blend',\n mime: 'application/x-blender',\n };\n }\n if (this.checkString('!<arch>')) {\n await tokenizer.ignore(8);\n const string = await tokenizer.readToken(new lib$2.StringType(13, 'ascii'));\n if (string === 'debian-binary') {\n return {\n ext: 'deb',\n mime: 'application/x-deb',\n };\n }\n return {\n ext: 'ar',\n mime: 'application/x-unix-archive',\n };\n }\n // -- 8-byte signatures --\n if (this.check([0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A])) {\n // APNG format (https://wiki.mozilla.org/APNG_Specification)\n // 1. Find the first IDAT (image data) chunk (49 44 41 54)\n // 2. Check if there is an \"acTL\" chunk before the IDAT one (61 63 54 4C)\n // Offset calculated as follows:\n // - 8 bytes: PNG signature\n // - 4 (length) + 4 (chunk type) + 13 (chunk data) + 4 (CRC): IHDR chunk\n await tokenizer.ignore(8); // ignore PNG signature\n async function readChunkHeader() {\n return {\n length: await tokenizer.readToken(lib$2.INT32_BE),\n type: await tokenizer.readToken(new lib$2.StringType(4, 'binary')),\n };\n }\n do {\n const chunk = await readChunkHeader();\n if (chunk.length < 0) {\n return; // Invalid chunk length\n }\n switch (chunk.type) {\n case 'IDAT':\n return {\n ext: 'png',\n mime: 'image/png',\n };\n case 'acTL':\n return {\n ext: 'apng',\n mime: 'image/apng',\n };\n default:\n await tokenizer.ignore(chunk.length + 4); // Ignore chunk-data + CRC\n }\n } while (tokenizer.position + 8 < tokenizer.fileInfo.size);\n return {\n ext: 'png',\n mime: 'image/png',\n };\n }\n if (this.check([0x41, 0x52, 0x52, 0x4F, 0x57, 0x31, 0x00, 0x00])) {\n return {\n ext: 'arrow',\n mime: 'application/x-apache-arrow',\n };\n }\n if (this.check([0x67, 0x6C, 0x54, 0x46, 0x02, 0x00, 0x00, 0x00])) {\n return {\n ext: 'glb',\n mime: 'model/gltf-binary',\n };\n }\n // `mov` format variants\n if (this.check([0x66, 0x72, 0x65, 0x65], { offset: 4 }) // `free`\n || this.check([0x6D, 0x64, 0x61, 0x74], { offset: 4 }) // `mdat` MJPEG\n || this.check([0x6D, 0x6F, 0x6F, 0x76], { offset: 4 }) // `moov`\n || this.check([0x77, 0x69, 0x64, 0x65], { offset: 4 }) // `wide`\n ) {\n return {\n ext: 'mov',\n mime: 'video/quicktime',\n };\n }\n if (this.check([0xEF, 0xBB, 0xBF]) && this.checkString('<?xml', { offset: 3 })) { // UTF-8-BOM\n return {\n ext: 'xml',\n mime: 'application/xml',\n };\n }\n // -- 9-byte signatures --\n if (this.check([0x49, 0x49, 0x52, 0x4F, 0x08, 0x00, 0x00, 0x00, 0x18])) {\n return {\n ext: 'orf',\n mime: 'image/x-olympus-orf',\n };\n }\n if (this.checkString('gimp xcf ')) {\n return {\n ext: 'xcf',\n mime: 'image/x-xcf',\n };\n }\n // -- 12-byte signatures --\n if (this.check([0x49, 0x49, 0x55, 0x00, 0x18, 0x00, 0x00, 0x00, 0x88, 0xE7, 0x74, 0xD8])) {\n return {\n ext: 'rw2',\n mime: 'image/x-panasonic-rw2',\n };\n }\n // ASF_Header_Object first 80 bytes\n if (this.check([0x30, 0x26, 0xB2, 0x75, 0x8E, 0x66, 0xCF, 0x11, 0xA6, 0xD9])) {\n async function readHeader() {\n const guid = Buffer.alloc(16);\n await tokenizer.readBuffer(guid);\n return {\n id: guid,\n size: Number(await tokenizer.readToken(lib$2.UINT64_LE)),\n };\n }\n await tokenizer.ignore(30);\n // Search for header should be in first 1KB of file.\n while (tokenizer.position + 24 < tokenizer.fileInfo.size) {\n const header = await readHeader();\n let payload = header.size - 24;\n if (_check(header.id, [0x91, 0x07, 0xDC, 0xB7, 0xB7, 0xA9, 0xCF, 0x11, 0x8E, 0xE6, 0x00, 0xC0, 0x0C, 0x20, 0x53, 0x65])) {\n // Sync on Stream-Properties-Object (B7DC0791-A9B7-11CF-8EE6-00C00C205365)\n const typeId = Buffer.alloc(16);\n payload -= await tokenizer.readBuffer(typeId);\n if (_check(typeId, [0x40, 0x9E, 0x69, 0xF8, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n // Found audio:\n return {\n ext: 'asf',\n mime: 'audio/x-ms-asf',\n };\n }\n if (_check(typeId, [0xC0, 0xEF, 0x19, 0xBC, 0x4D, 0x5B, 0xCF, 0x11, 0xA8, 0xFD, 0x00, 0x80, 0x5F, 0x5C, 0x44, 0x2B])) {\n // Found video:\n return {\n ext: 'asf',\n mime: 'video/x-ms-asf',\n };\n }\n break;\n }\n await tokenizer.ignore(payload);\n }\n // Default to ASF generic extension\n return {\n ext: 'asf',\n mime: 'application/vnd.ms-asf',\n };\n }\n if (this.check([0xAB, 0x4B, 0x54, 0x58, 0x20, 0x31, 0x31, 0xBB, 0x0D, 0x0A, 0x1A, 0x0A])) {\n return {\n ext: 'ktx',\n mime: 'image/ktx',\n };\n }\n if ((this.check([0x7E, 0x10, 0x04]) || this.check([0x7E, 0x18, 0x04])) && this.check([0x30, 0x4D, 0x49, 0x45], { offset: 4 })) {\n return {\n ext: 'mie',\n mime: 'application/x-mie',\n };\n }\n if (this.check([0x27, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00], { offset: 2 })) {\n return {\n ext: 'shp',\n mime: 'application/x-esri-shape',\n };\n }\n if (this.check([0x00, 0x00, 0x00, 0x0C, 0x6A, 0x50, 0x20, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n // JPEG-2000 family\n await tokenizer.ignore(20);\n const type = await tokenizer.readToken(new lib$2.StringType(4, 'ascii'));\n switch (type) {\n case 'jp2 ':\n return {\n ext: 'jp2',\n mime: 'image/jp2',\n };\n case 'jpx ':\n return {\n ext: 'jpx',\n mime: 'image/jpx',\n };\n case 'jpm ':\n return {\n ext: 'jpm',\n mime: 'image/jpm',\n };\n case 'mjp2':\n return {\n ext: 'mj2',\n mime: 'image/mj2',\n };\n default:\n return;\n }\n }\n if (this.check([0xFF, 0x0A])\n || this.check([0x00, 0x00, 0x00, 0x0C, 0x4A, 0x58, 0x4C, 0x20, 0x0D, 0x0A, 0x87, 0x0A])) {\n return {\n ext: 'jxl',\n mime: 'image/jxl',\n };\n }\n if (this.check([0xFE, 0xFF, 0, 60, 0, 63, 0, 120, 0, 109, 0, 108]) // UTF-16-BOM-LE\n || this.check([0xFF, 0xFE, 60, 0, 63, 0, 120, 0, 109, 0, 108, 0]) // UTF-16-BOM-LE\n ) {\n return {\n ext: 'xml',\n mime: 'application/xml',\n };\n }\n // -- Unsafe signatures --\n if (this.check([0x0, 0x0, 0x1, 0xBA])\n || this.check([0x0, 0x0, 0x1, 0xB3])) {\n return {\n ext: 'mpg',\n mime: 'video/mpeg',\n };\n }\n if (this.check([0x00, 0x01, 0x00, 0x00, 0x00])) {\n return {\n ext: 'ttf',\n mime: 'font/ttf',\n };\n }\n if (this.check([0x00, 0x00, 0x01, 0x00])) {\n return {\n ext: 'ico',\n mime: 'image/x-icon',\n };\n }\n if (this.check([0x00, 0x00, 0x02, 0x00])) {\n return {\n ext: 'cur',\n mime: 'image/x-icon',\n };\n }\n if (this.check([0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1])) {\n // Detected Microsoft Compound File Binary File (MS-CFB) Format.\n return {\n ext: 'cfb',\n mime: 'application/x-cfb',\n };\n }\n // Increase sample size from 12 to 256.\n await tokenizer.peekBuffer(this.buffer, { length: Math.min(256, tokenizer.fileInfo.size), mayBeLess: true });\n // -- 15-byte signatures --\n if (this.checkString('BEGIN:')) {\n if (this.checkString('VCARD', { offset: 6 })) {\n return {\n ext: 'vcf',\n mime: 'text/vcard',\n };\n }\n if (this.checkString('VCALENDAR', { offset: 6 })) {\n return {\n ext: 'ics',\n mime: 'text/calendar',\n };\n }\n }\n // `raf` is here just to keep all the raw image detectors together.\n if (this.checkString('FUJIFILMCCD-RAW')) {\n return {\n ext: 'raf',\n mime: 'image/x-fujifilm-raf',\n };\n }\n if (this.checkString('Extended Module:')) {\n return {\n ext: 'xm',\n mime: 'audio/x-xm',\n };\n }\n if (this.checkString('Creative Voice File')) {\n return {\n ext: 'voc',\n mime: 'audio/x-voc',\n };\n }\n if (this.check([0x04, 0x00, 0x00, 0x00]) && this.buffer.length >= 16) { // Rough & quick check Pickle/ASAR\n const jsonSize = this.buffer.readUInt32LE(12);\n if (jsonSize > 12 && this.buffer.length >= jsonSize + 16) {\n try {\n const header = this.buffer.slice(16, jsonSize + 16).toString();\n const json = JSON.parse(header);\n // Check if Pickle is ASAR\n if (json.files) { // Final check, assuring Pickle/ASAR format\n return {\n ext: 'asar',\n mime: 'application/x-asar',\n };\n }\n }\n catch (_a) { }\n }\n }\n if (this.check([0x06, 0x0E, 0x2B, 0x34, 0x02, 0x05, 0x01, 0x01, 0x0D, 0x01, 0x02, 0x01, 0x01, 0x02])) {\n return {\n ext: 'mxf',\n mime: 'application/mxf',\n };\n }\n if (this.checkString('SCRM', { offset: 44 })) {\n return {\n ext: 's3m',\n mime: 'audio/x-s3m',\n };\n }\n // Raw MPEG-2 transport stream (188-byte packets)\n if (this.check([0x47]) && this.check([0x47], { offset: 188 })) {\n return {\n ext: 'mts',\n mime: 'video/mp2t',\n };\n }\n // Blu-ray Disc Audio-Video (BDAV) MPEG-2 transport stream has 4-byte TP_extra_header before each 188-byte packet\n if (this.check([0x47], { offset: 4 }) && this.check([0x47], { offset: 196 })) {\n return {\n ext: 'mts',\n mime: 'video/mp2t',\n };\n }\n if (this.check([0x42, 0x4F, 0x4F, 0x4B, 0x4D, 0x4F, 0x42, 0x49], { offset: 60 })) {\n return {\n ext: 'mobi',\n mime: 'application/x-mobipocket-ebook',\n };\n }\n if (this.check([0x44, 0x49, 0x43, 0x4D], { offset: 128 })) {\n return {\n ext: 'dcm',\n mime: 'application/dicom',\n };\n }\n if (this.check([0x4C, 0x00, 0x00, 0x00, 0x01, 0x14, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46])) {\n return {\n ext: 'lnk',\n mime: 'application/x.ms.shortcut', // Invented by us\n };\n }\n if (this.check([0x62, 0x6F, 0x6F, 0x6B, 0x00, 0x00, 0x00, 0x00, 0x6D, 0x61, 0x72, 0x6B, 0x00, 0x00, 0x00, 0x00])) {\n return {\n ext: 'alias',\n mime: 'application/x.apple.alias', // Invented by us\n };\n }\n if (this.check([0x4C, 0x50], { offset: 34 })\n && (this.check([0x00, 0x00, 0x01], { offset: 8 })\n || this.check([0x01, 0x00, 0x02], { offset: 8 })\n || this.check([0x02, 0x00, 0x02], { offset: 8 }))) {\n return {\n ext: 'eot',\n mime: 'application/vnd.ms-fontobject',\n };\n }\n if (this.check([0x06, 0x06, 0xED, 0xF5, 0xD8, 0x1D, 0x46, 0xE5, 0xBD, 0x31, 0xEF, 0xE7, 0xFE, 0x74, 0xB7, 0x1D])) {\n return {\n ext: 'indd',\n mime: 'application/x-indesign',\n };\n }\n // Increase sample size from 256 to 512\n await tokenizer.peekBuffer(this.buffer, { length: Math.min(512, tokenizer.fileInfo.size), mayBeLess: true });\n // Requires a buffer size of 512 bytes\n if (tarHeaderChecksumMatches(this.buffer)) {\n return {\n ext: 'tar',\n mime: 'application/x-tar',\n };\n }\n if (this.check([0xFF, 0xFE, 0xFF, 0x0E, 0x53, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x74, 0x00, 0x63, 0x00, 0x68, 0x00, 0x55, 0x00, 0x70, 0x00, 0x20, 0x00, 0x4D, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x65, 0x00, 0x6C, 0x00])) {\n return {\n ext: 'skp',\n mime: 'application/vnd.sketchup.skp',\n };\n }\n if (this.checkString('-----BEGIN PGP MESSAGE-----')) {\n return {\n ext: 'pgp',\n mime: 'application/pgp-encrypted',\n };\n }\n // Check MPEG 1 or 2 Layer 3 header, or 'layer 0' for ADTS (MPEG sync-word 0xFFE)\n if (this.buffer.length >= 2 && this.check([0xFF, 0xE0], { offset: 0, mask: [0xFF, 0xE0] })) {\n if (this.check([0x10], { offset: 1, mask: [0x16] })) {\n // Check for (ADTS) MPEG-2\n if (this.check([0x08], { offset: 1, mask: [0x08] })) {\n return {\n ext: 'aac',\n mime: 'audio/aac',\n };\n }\n // Must be (ADTS) MPEG-4\n return {\n ext: 'aac',\n mime: 'audio/aac',\n };\n }\n // MPEG 1 or 2 Layer 3 header\n // Check for MPEG layer 3\n if (this.check([0x02], { offset: 1, mask: [0x06] })) {\n return {\n ext: 'mp3',\n mime: 'audio/mpeg',\n };\n }\n // Check for MPEG layer 2\n if (this.check([0x04], { offset: 1, mask: [0x06] })) {\n return {\n ext: 'mp2',\n mime: 'audio/mpeg',\n };\n }\n // Check for MPEG layer 1\n if (this.check([0x06], { offset: 1, mask: [0x06] })) {\n return {\n ext: 'mp1',\n mime: 'audio/mpeg',\n };\n }\n }\n }\n}\n\nexports.YC = YC;\nexports.YL = YL;\nexports.YR = YR;\nexports.YS = YS;\nexports.calTimeLen = calTimeLen;\nexports.checkFileType = checkFileType;\nexports.dateFormat = dateFormat;\nexports.debounce = debounce;\nexports.expandMultiple = expandMultiple;\nexports.exportExcel = exportExcel;\nexports.fenToyuan = fenToyuan;\nexports.fileTypeFromTokenizer = fileTypeFromTokenizer;\nexports.formatData = formatData;\nexports.formatTime = formatTime;\nexports.gTokg = gTokg;\nexports.getBiteLen = getBiteLen;\nexports.getDate = getDate;\nexports.getEnv = getEnv;\nexports.getHost = getHost;\nexports.getImgUrl = getImgUrl;\nexports.getMD5 = getMD5;\nexports.getMock = getMock;\nexports.getQueries = getQueries;\nexports.getQuery = getQuery;\nexports.getQueryName = getQueryName;\nexports.getQueryOfNextPageContext = getQueryOfNextPageContext;\nexports.getRoutes = getRoutes;\nexports.humpToLine = humpToLine;\nexports.isChinaMobile = isChinaMobile;\nexports.isDate = isDate;\nexports.isURL = isURL;\nexports.joinPath = joinPath;\nexports.kgTog = kgTog;\nexports.lineToHump = lineToHump;\nexports.loadScript = loadScript;\nexports.maxSubstrWord = maxSubstrWord;\nexports.niceNumShow = niceNumShow;\nexports.numberToThousand = numberToThousand;\nexports.omadownload = omadownload;\nexports.parseParams = parseParams;\nexports.pickAll = pickAll;\nexports.querystring = querystring;\nexports.reduceMultiple = reduceMultiple;\nexports.reduceParams = reduceParams;\nexports.remove = remove;\nexports.round = round;\nexports.slicePath = slicePath;\nexports.split = split;\nexports.strPad = strPad;\nexports.sum = sum;\nexports.throttle = throttle;\nexports.timeFlow = timeFlow;\nexports.toDate = toDate;\nexports.transformShortNum = transformShortNum;\nexports.translateMapToArray = translateMapToArray;\nexports.treeFind = treeFind;\nexports.treePaths = treePaths;\nexports.treeReduce = treeReduce;\nexports.trimAll = trimAll;\nexports.trimParams = trimParams;\nexports.unLoadScript = unLoadScript;\nexports.uuidv4 = uuidv4;\nexports.wanToyuan = wanToyuan;\nexports.yuanTofen = yuanTofen;\nexports.yuanTowan = yuanTowan;\n//# sourceMappingURL=ywfe-utils.esm.js.map\n","interface userInput {\n data?: object;\n}\nfunction JSON2String({ input }) {\n const { data = {} } = input;\n try {\n return \"```json\" + JSON.stringify(data) + \"json```\";\n } catch (error) {\n return \"```json\" + JSON.stringify({}) + \"json```\";\n }\n}\n\nexport default JSON2String","// Ctrl-S保存代码\nimport { querystring } from \"@ywfe/utils\";\ninterface RequestOptions {\n url: string;\n method?: string;\n params?: any;\n}\nasync function request({ input }: { input: RequestOptions }) {\n const method = input.method || \"GET\";\n const basePathMap = new Map([\n [\"prod\", \"https://gateway.ywwl.com\"],\n [\"test\", \"https://test-gateway.ywwl.com\"],\n [\"test2\", \"https://test2-gateway.ywwl.com\"],\n [\"dev\", \"https://dev-gateway.ywwl.com\"],\n ]);\n const getBasePath = () => {\n const env = \"{{env}}\";\n return basePathMap.get(env);\n };\n const isValidURL = (url) => {\n var pattern = new RegExp(\n \"^(https?:\\\\/\\\\/)?\" + // protocol\n \"((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|\" + // domain name\n \"((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))\" + // OR ip (v4) address\n \"(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.&#126;+]*)*\" + // port and path\n \"(\\\\?[;&a-z\\\\d%_.&#126;+=-]*)?\" + // query string\n \"(\\\\#[-a-z\\\\d_]*)?$\",\n \"i\"\n ); // fragment locator\n return !!pattern.test(url);\n };\n const prefix = getBasePath();\n let requestUrl = isValidURL(input.url) ? input.url : `${prefix}${input.url}`;\n const fetchOption: { [key: string]: any } = {\n method: method,\n headers: {\n \"Content-type\": \"application/json\",\n \"x-token\": \"{{token}}\",\n },\n };\n if (method.toUpperCase() === \"POST\") {\n fetchOption.body = JSON.stringify(input.params);\n } else if (method.toUpperCase() === \"GET\") {\n requestUrl = `${requestUrl}?${querystring.stringify(input.params || {})}`;\n }\n const response = await fetch(requestUrl, fetchOption);\n if (!response.ok) {\n const message = `An error has occured: ${response.status}`;\n return { success: false, message };\n }\n const result = await response.json();\n return result;\n}\n\nexport default request"],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","length","push","SuppressedError","global$1","global","self","window","lookup","revLookup","Arr","Uint8Array","Array","inited","init","code","i","charCodeAt","encodeChunk","uint8","start","end","tmp","num","output","join","fromByteArray","len","extraBytes","parts","maxChunkLength","len2","read","buffer","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","Math","pow","write","c","rt","abs","isNaN","floor","log","LN2","toString","isArray","arr","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","that","RangeError","__proto__","prototype","arg","encodingOrOffset","Error","allocUnsafe","from","ArrayBuffer","array","byteOffset","byteLength","undefined","fromArrayLike","fromArrayBuffer","string","encoding","isEncoding","actual","slice","fromString","obj","internalIsBuffer","checked","copy","val","type","data","fromObject","assertSize","size","b","_isBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","toLowerCase","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","indexOf","lastIndexOf","indexSize","arrLength","valLength","String","buf","readUInt16BE","foundIndex","found","j","hexWrite","Number","remaining","strLen","parsed","parseInt","substr","utf8Write","blitBuffer","asciiWrite","str","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","poolSize","_augment","alloc","fill","allocUnsafeSlow","isBuffer","isFastBuffer","readFloatLE","isSlowBuffer","compare","a","x","concat","list","pos","swap16","swap32","swap64","arguments","equals","inspect","match","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","toJSON","_arr","ret","out","toHex","bytes","checkOffset","ext","checkInt","max","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","subarray","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","set","INVALID_BASE64_RE","leadSurrogate","b64","l","placeHolders","L","toByteArray","trim","replace","stringtrim","base64clean","src","dst","constructor","_interopDefaultLegacy","default","Object","defineProperty","exports","require$$0__default","require$$1","_isPlaceholder","_curry1","fn","f1","_curry2","f2","_b","_a","_concat","set1","set2","idx","len1","_arity","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","_curryN","received","combined","argsIdx","left","combinedIdx","curryN$1","_curry3","f3","_c","_isArray","_dispatchable","methodNames","xf","args","_isTransformer","transducer","_xfBase","_map","functor","_isString","_isArrayLike$1","nodeType","hasOwnProperty","XWrap","acc","bind","thisObj","bind$1","_iterableReduce","iter","_methodReduce","methodName","symIterator","_reduce","_xwrap","_arrayReduce","reduce","XMap","input","_xmap$1","_has","prop","toString$2","_isArguments","_isArguments$1","hasEnumBug","propertyIsEnumerable","nonEnumerableProps","hasArgsEnumBug","contains","item","keys","nIdx","ks","checkArgsLength","keys$1","map","key","map$1","_isInteger","isInteger","nth$1","charAt","paths$1","pathsArray","paths","p","path$1","pathAr","prop$1","reduce$1","ap$1","applyF","applyX","ap","values$1","props","vals","isNil$1","_isFunction","liftN","arity","lifted","liftN$1","lift$1","curry$1","_makeFlat","recursive","flatt","jlen","ilen","type$1","complement$1","_pipe","_checkForMethod","methodname","slice$1","fromIndex","toIndex","tail$1","pipe","reverse$1","split","reverse","compose","_identity","identity$1","_arrayFromIterator","_includesWith","pred","_objectIs$1","is","_uniqContentEquals","aIterator","bIterator","stackA","stackB","eq","_equals","aItem","typeA","valueOf","name","message","source","ignoreCase","multiline","sticky","unicode","entries","values","keysA","extendedStackA","extendedStackB","equals$1","_includes","inf","_indexOf","_quote","pad","_toISOString$1","Date","toISOString","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","toFixed","_isObject","XFilter","filter$1","filterable","_filter","reject$1","_toString","seen","recur","xs","mapPairs","k","sort","test","repr","toString$1","concat$1","hasOrAdd","shouldAdd","prevSize","_items","_nativeSet","add","has","bIdx","_Set$1","_Set","Set","empty","empty$1","XFind","find$1","flatten$1","fromPairs$1","pairs","hasPath$1","_path","uniq$1","appliedItem","uniqBy$1","_objectAssign$1","assign","nextKey","invoker","method","invoker$1","is$1","Ctor","isEmpty$1","mergeAll$1","omit","names","index","omit$1","propEq$1","replace$1","regex","replacement","split$2","ws","trim$1","beginRx","RegExp","endRx","union$1","trimAll","separator","YS","sessionStorage","setItem","get","getItem","remove","removeItem","clear","YL","localStorage","YC","exdays","setTime","getTime","expires","toUTCString","document","cookie","escape","ca","substring","once","node","options","addEventListener","listener","event","removeEventListener","allowLists","isDate","date","getDate","dateStr","dateFormat","format","time","o","YYYY","getFullYear","YY","MM","getMonth","M","DD","D","HH","getHours","H","hh","h","mm","getMinutes","ss","getSeconds","w","getDay","strPad","sourceStr","charStr","retStr","oneDay$1","oneHour$1","oneMinute$1","formatTime","allowEmpty","timelen","parseFloat","days","hours","minutes","seconds","oneDay","oneHour","oneMinute","treeReduce","childKey","Tree","reducerFn","hasChildren","find","findFn","setPathToDefaultMenu","menus","defaultOpenMenus","defaultSelectedMenus","defaultMenu","openMenus","children","defaultPath","setFistChildToDefaultMenu","transformShortNum","decimal","addUnit","retInt","formatValue","isNegativeNumber","getEnv","getMock","parse$1","decodeURI","querystring","freeze","parse","stringify","query","URLSearchParams","MAX_DP","MAX_POWER","NAME","INVALID","INVALID_DP","INVALID_RM","DIV_BY_ZERO","UNDEFINED","NUMERIC","round$1","dp","rm","more","xc","unshift","stringify$1","id","Big","z","RM","NE","PE","cmp","isneg","yc","div","DP","bl","bt","ri","bz","ai","al","r","rl","q","qc","qi","shift","gt","gte","lt","lte","minus","xlty","plus","xe","ye","mod","ygtx","times","one","round","sqrt","half","toExponential","toPrecision","sd","_Big_","nl","search","version","formatDecimalNoRound","smallToBig","translateUnit","params","newNumber","decimalNumber","bigToSmall","getClass","matchResult","exec","trimParams","object","forEach","newParams","newValue","getRandomValues","rnds8","rng","crypto","msCrypto","REGEX","byteToHex","uuid","validate","v4","rnds","random","ERROR","HEX_CHARS","EXTRA","buffer8","blocks","Uint32Array","Md5","h0","h1","h2","h3","hBytes","finalized","hashed","first","update","notString","lastByteIndex","hash","finalize","bc","da","hex","md5","isObject","debounce","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","useRAF","requestAnimationFrame","invokeFunc","startTimer","pendingFunc","cancelAnimationFrame","setTimeout","shouldInvoke","timeSinceLastCall","timerExpired","now","trailingEdge","timeSinceLastInvoke","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","cancel","clearTimeout","cancelTimer","flush","pending","lib$2","ieee754","AnsiStringType","StringType","BufferType","Uint8ArrayType","IgnoreType","Float80_LE","Float80_BE","Float64_LE","Float64_BE","Float32_LE","Float32_BE","Float16_LE","Float16_BE","INT64_BE","UINT64_BE","INT64_LE","UINT64_LE","INT32_LE","INT32_BE","INT24_BE","INT24_LE","INT16_LE","INT16_BE","INT8","UINT32_BE","UINT32_LE","UINT24_BE","UINT24_LE","UINT16_BE","UINT16_LE","UINT8","ieee754$1","dv","DataView","getUint8","put","setUint8","getUint16","setUint16","dataView","getUint32","setUint32","getInt8","setInt8","getInt16","setInt16","unsigned","getInt32","setInt32","getBigUint64","setBigUint64","getBigInt64","setBigInt64","getFloat32","setFloat32","getFloat64","setFloat64","off","uint8Array","decode","until","codePointToString","singleByteDecoder","inRange","cp","bite","windows1252","lib$1","FsPromise","readFile","writeFileSync","writeFile","open","close","stat","createReadStream","pathExists","fs$1","existsSync","async","path","err","stats","fd","mode","position","bytesRead","_buffer","core","ReadStreamTokenizer$1","AbstractTokenizer$1","lib","EndOfFileStream","EndOfStreamError","defaultMessages","super","StreamReader","Deferred$1","Deferred","promise","EndOfFileStream_1","Deferred_1","EndOfFileStream_2","enumerable","deferred","endOfStream","peekQueue","peek","peekData","lenCopy","reqLen","chunkLen","readFromStream","readBuffer","request","readDeferred","StreamReader_1","AbstractTokenizer","peek_readable_1$3","fileInfo","numBuffer","readToken","token","peekToken","peekBuffer","readNumber","peekNumber","ignore","bytesLeft","normalizeOptions","mayBeLess","ReadStreamTokenizer","AbstractTokenizer_1$2","peek_readable_1$2","stream","streamReader","getFileInfo","normOptions","skipBytes","skipBuffer","bufSize","totBytesRead","BufferTokenizer$1","BufferTokenizer","peek_readable_1$1","AbstractTokenizer_1$1","bytes2read","fromBuffer","fromStream","ReadStreamTokenizer_1","BufferTokenizer_1","peek_readable_1","FileTokenizer$1","fromFile","FileTokenizer","AbstractTokenizer_1","fs","sourceFilePath","isFile","core$1","FileTokenizer_1","core_1","uint32SyncSafeToken","fileTypeFromTokenizer","tokenizer","FileTypeParser","error","_check","headers","header","mask","check","checkString","character","readTiffTag","bigEndian","tagId","mime","readTiffIFD","numberOfTags","fileType","readTiffHeader","ifdOffset","MAX_SAFE_INTEGER","id3HeaderLength","zipHeader","compressedSize","uncompressedSize","filenameLength","extraFieldLength","filename","endsWith","startsWith","nextHeaderIndex","brandMajor","maxBufferSize","readField","msb","ic","readElement","lengthField","nrLength","readChildren","_level","element","re","readChunkHeader","chunk","readHeader","guid","payload","typeId","jsonSize","JSON","files","readSum","sum","tarHeaderChecksumMatches","YR","email","phone","fixedPhone","qq","zipcode","IDCard","chinese","chineseNumberLine","chineseNumberNoLine","integerZ","integerF","number","numberNoMoreThan1","numberNoMoreThan2","numberNoMoreThan3","numberNoMoreThan4","greaterZero1","greaterZero2","greaterZero3","greaterZero4","zeroTo100","zeroTo1000","calTimeLen","startTime","endTime","unit","fixed","unitTime","interval","checkFileType","file","callback","reader","FileReader","readAsArrayBuffer","onload","buffers","suffix","toLocaleLowerCase","expandMultiple","multiple","exportExcel","url","downloadUrl","addQueries","console","aDom","createElement","setAttribute","getElementById","appendChild","click","removeChild","fenToyuan","formatData","config","afterUnit","isAbs","beforeUnit","gTokg","pararms","getBiteLen","getHost","projectId","yapiProjectid","isMock","configs","env","basePath","API_BASE_URL","loginPath","APPLICATION_URL","getImgUrl","img","width","height","defaultImg","reg","retImg","getMD5","md5Key","getQueries","location","getQuery","searchParams","href","decodeURIComponent","getQueryName","urlStr","querys","strs","oneStr","getQueryOfNextPageContext","ctx","pathname","asPath","routes","newQuery","getRoutes","permissionList","routerConfig","defaultConfig","permissions","resetData","currentItem","param","resourceId","meta","title","icon","component","hidden","origion_url","primaryDefaultMenu","secondaryDefaultMenu","resourceParentId","btns","urls","childMenus","child","humpToLine","isChinaMobile","isURL","joinPath","kgTog","lineToHump","_all","letter","toUpperCase","loadScript","umd","progectId","attrs","scriptNode","readyState","onreadystatechange","onSuccess","onError","listen","attrName","js","maxSubstrWord","isSpot","niceNumShow","spiltPoint","text","resultList","characterType","numberToThousand","$1","omadownload","uint8Msg","uint8String","warn","URL","createObjectURL","Blob","link","style","display","parseParams","pickAll","reduceMultiple","reduceParams","FormData","predicate","indexes","lastIndex","previous","splice","basePullAt","slicePath","api","resultSum","_sum","throttle","timeFlow","startDate","flowTime","toDate","translateMapToArray","useAllSelect","allSelectLabel","allSelectValue","treeFind","treePaths","preNode","_preNode","unLoadScript","uuidv4","wanToyuan","yuanTofen","yuanTowan","basePathMap","Map","isValidURL","prefix","getBasePath","requestUrl","fetchOption","fetch","response","ok","json","success","status"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}