"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __esm = (fn, res, err) => function __init() { if (err) throw err[0]; try { return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; } catch (e) { throw err = [e], e; } }; var __commonJS = (cb, mod) => function __require() { try { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; } catch (e) { throw mod = 0, e; } }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // var define_import_meta_env_default; var init_define_import_meta_env = __esm({ ""() { define_import_meta_env_default = { BASE_URL: "/" }; } }); // ../backend/node_modules/depd/index.js var require_depd = __commonJS({ "../backend/node_modules/depd/index.js"(exports2, module2) { init_define_import_meta_env(); var relative = require("path").relative; module2.exports = depd; var basePath = process.cwd(); function containsNamespace(str, namespace) { var vals = str.split(/[ ,]+/); var ns = String(namespace).toLowerCase(); for (var i = 0; i < vals.length; i++) { var val = vals[i]; if (val && (val === "*" || val.toLowerCase() === ns)) { return true; } } return false; } function convertDataDescriptorToAccessor(obj, prop, message) { var descriptor = Object.getOwnPropertyDescriptor(obj, prop); var value = descriptor.value; descriptor.get = function getter() { return value; }; if (descriptor.writable) { descriptor.set = function setter(val) { return value = val; }; } delete descriptor.value; delete descriptor.writable; Object.defineProperty(obj, prop, descriptor); return descriptor; } function createArgumentsString(arity) { var str = ""; for (var i = 0; i < arity; i++) { str += ", arg" + i; } return str.substr(2); } function createStackString(stack) { var str = this.name + ": " + this.namespace; if (this.message) { str += " deprecated " + this.message; } for (var i = 0; i < stack.length; i++) { str += "\n at " + stack[i].toString(); } return str; } function depd(namespace) { if (!namespace) { throw new TypeError("argument namespace is required"); } var stack = getStack(); var site = callSiteLocation(stack[1]); var file = site[0]; function deprecate(message) { log.call(deprecate, message); } deprecate._file = file; deprecate._ignored = isignored(namespace); deprecate._namespace = namespace; deprecate._traced = istraced(namespace); deprecate._warned = /* @__PURE__ */ Object.create(null); deprecate.function = wrapfunction; deprecate.property = wrapproperty; return deprecate; } function eehaslisteners(emitter, type) { var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); return count > 0; } function isignored(namespace) { if (process.noDeprecation) { return true; } var str = process.env.NO_DEPRECATION || ""; return containsNamespace(str, namespace); } function istraced(namespace) { if (process.traceDeprecation) { return true; } var str = process.env.TRACE_DEPRECATION || ""; return containsNamespace(str, namespace); } function log(message, site) { var haslisteners = eehaslisteners(process, "deprecation"); if (!haslisteners && this._ignored) { return; } var caller; var callFile; var callSite; var depSite; var i = 0; var seen = false; var stack = getStack(); var file = this._file; if (site) { depSite = site; callSite = callSiteLocation(stack[1]); callSite.name = depSite.name; file = callSite[0]; } else { i = 2; depSite = callSiteLocation(stack[i]); callSite = depSite; } for (; i < stack.length; i++) { caller = callSiteLocation(stack[i]); callFile = caller[0]; if (callFile === file) { seen = true; } else if (callFile === this._file) { file = this._file; } else if (seen) { break; } } var key = caller ? depSite.join(":") + "__" + caller.join(":") : void 0; if (key !== void 0 && key in this._warned) { return; } this._warned[key] = true; var msg = message; if (!msg) { msg = callSite === depSite || !callSite.name ? defaultMessage(depSite) : defaultMessage(callSite); } if (haslisteners) { var err = DeprecationError(this._namespace, msg, stack.slice(i)); process.emit("deprecation", err); return; } var format = process.stderr.isTTY ? formatColor : formatPlain; var output = format.call(this, msg, caller, stack.slice(i)); process.stderr.write(output + "\n", "utf8"); } function callSiteLocation(callSite) { var file = callSite.getFileName() || ""; var line = callSite.getLineNumber(); var colm = callSite.getColumnNumber(); if (callSite.isEval()) { file = callSite.getEvalOrigin() + ", " + file; } var site = [file, line, colm]; site.callSite = callSite; site.name = callSite.getFunctionName(); return site; } function defaultMessage(site) { var callSite = site.callSite; var funcName = site.name; if (!funcName) { funcName = ""; } var context2 = callSite.getThis(); var typeName = context2 && callSite.getTypeName(); if (typeName === "Object") { typeName = void 0; } if (typeName === "Function") { typeName = context2.name || typeName; } return typeName && callSite.getMethodName() ? typeName + "." + funcName : funcName; } function formatPlain(msg, caller, stack) { var timestamp = (/* @__PURE__ */ new Date()).toUTCString(); var formatted = timestamp + " " + this._namespace + " deprecated " + msg; if (this._traced) { for (var i = 0; i < stack.length; i++) { formatted += "\n at " + stack[i].toString(); } return formatted; } if (caller) { formatted += " at " + formatLocation(caller); } return formatted; } function formatColor(msg, caller, stack) { var formatted = "\x1B[36;1m" + this._namespace + "\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m" + msg + "\x1B[39m"; if (this._traced) { for (var i = 0; i < stack.length; i++) { formatted += "\n \x1B[36mat " + stack[i].toString() + "\x1B[39m"; } return formatted; } if (caller) { formatted += " \x1B[36m" + formatLocation(caller) + "\x1B[39m"; } return formatted; } function formatLocation(callSite) { return relative(basePath, callSite[0]) + ":" + callSite[1] + ":" + callSite[2]; } function getStack() { var limit = Error.stackTraceLimit; var obj = {}; var prep = Error.prepareStackTrace; Error.prepareStackTrace = prepareObjectStackTrace; Error.stackTraceLimit = Math.max(10, limit); Error.captureStackTrace(obj); var stack = obj.stack.slice(1); Error.prepareStackTrace = prep; Error.stackTraceLimit = limit; return stack; } function prepareObjectStackTrace(obj, stack) { return stack; } function wrapfunction(fn, message) { if (typeof fn !== "function") { throw new TypeError("argument fn must be a function"); } var args = createArgumentsString(fn.length); var stack = getStack(); var site = callSiteLocation(stack[1]); site.name = fn.name; var deprecatedfn = new Function( "fn", "log", "deprecate", "message", "site", '"use strict"\nreturn function (' + args + ") {log.call(deprecate, message, site)\nreturn fn.apply(this, arguments)\n}" )(fn, log, this, message, site); return deprecatedfn; } function wrapproperty(obj, prop, message) { if (!obj || typeof obj !== "object" && typeof obj !== "function") { throw new TypeError("argument obj must be object"); } var descriptor = Object.getOwnPropertyDescriptor(obj, prop); if (!descriptor) { throw new TypeError("must call property on owner object"); } if (!descriptor.configurable) { throw new TypeError("property must be configurable"); } var deprecate = this; var stack = getStack(); var site = callSiteLocation(stack[1]); site.name = prop; if ("value" in descriptor) { descriptor = convertDataDescriptorToAccessor(obj, prop, message); } var get = descriptor.get; var set = descriptor.set; if (typeof get === "function") { descriptor.get = function getter() { log.call(deprecate, message, site); return get.apply(this, arguments); }; } if (typeof set === "function") { descriptor.set = function setter() { log.call(deprecate, message, site); return set.apply(this, arguments); }; } Object.defineProperty(obj, prop, descriptor); } function DeprecationError(namespace, message, stack) { var error = new Error(); var stackString; Object.defineProperty(error, "constructor", { value: DeprecationError }); Object.defineProperty(error, "message", { configurable: true, enumerable: false, value: message, writable: true }); Object.defineProperty(error, "name", { enumerable: false, configurable: true, value: "DeprecationError", writable: true }); Object.defineProperty(error, "namespace", { configurable: true, enumerable: false, value: namespace, writable: true }); Object.defineProperty(error, "stack", { configurable: true, enumerable: false, get: function() { if (stackString !== void 0) { return stackString; } return stackString = createStackString.call(this, stack); }, set: function setter(val) { stackString = val; } }); return error; } } }); // ../backend/node_modules/bytes/index.js var require_bytes = __commonJS({ "../backend/node_modules/bytes/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = bytes; module2.exports.format = format; module2.exports.parse = parse3; var formatThousandsRegExp = /\B(?=(\d{3})+(?!\d))/g; var formatDecimalsRegExp = /(?:\.0*|(\.[^0]+)0+)$/; var map = { b: 1, kb: 1 << 10, mb: 1 << 20, gb: 1 << 30, tb: Math.pow(1024, 4), pb: Math.pow(1024, 5) }; var parseRegExp = /^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i; function bytes(value, options) { if (typeof value === "string") { return parse3(value); } if (typeof value === "number") { return format(value, options); } return null; } function format(value, options) { if (!Number.isFinite(value)) { return null; } var mag = Math.abs(value); var thousandsSeparator = options && options.thousandsSeparator || ""; var unitSeparator = options && options.unitSeparator || ""; var decimalPlaces = options && options.decimalPlaces !== void 0 ? options.decimalPlaces : 2; var fixedDecimals = Boolean(options && options.fixedDecimals); var unit = options && options.unit || ""; if (!unit || !map[unit.toLowerCase()]) { if (mag >= map.pb) { unit = "PB"; } else if (mag >= map.tb) { unit = "TB"; } else if (mag >= map.gb) { unit = "GB"; } else if (mag >= map.mb) { unit = "MB"; } else if (mag >= map.kb) { unit = "KB"; } else { unit = "B"; } } var val = value / map[unit.toLowerCase()]; var str = val.toFixed(decimalPlaces); if (!fixedDecimals) { str = str.replace(formatDecimalsRegExp, "$1"); } if (thousandsSeparator) { str = str.split(".").map(function(s, i) { return i === 0 ? s.replace(formatThousandsRegExp, thousandsSeparator) : s; }).join("."); } return str + unitSeparator + unit; } function parse3(val) { if (typeof val === "number" && !isNaN(val)) { return val; } if (typeof val !== "string") { return null; } var results = parseRegExp.exec(val); var floatValue; var unit = "b"; if (!results) { floatValue = parseInt(val, 10); unit = "b"; } else { floatValue = parseFloat(results[1]); unit = results[4].toLowerCase(); } if (isNaN(floatValue)) { return null; } return Math.floor(map[unit] * floatValue); } } }); // ../backend/node_modules/content-type/index.js var require_content_type = __commonJS({ "../backend/node_modules/content-type/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g; var TEXT_REGEXP = /^[\u000b\u0020-\u007e\u0080-\u00ff]+$/; var TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; var QESC_REGEXP = /\\([\u000b\u0020-\u00ff])/g; var QUOTE_REGEXP = /([\\"])/g; var TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/; exports2.format = format; exports2.parse = parse3; function format(obj) { if (!obj || typeof obj !== "object") { throw new TypeError("argument obj is required"); } var parameters = obj.parameters; var type = obj.type; if (!type || !TYPE_REGEXP.test(type)) { throw new TypeError("invalid type"); } var string = type; if (parameters && typeof parameters === "object") { var param; var params = Object.keys(parameters).sort(); for (var i = 0; i < params.length; i++) { param = params[i]; if (!TOKEN_REGEXP.test(param)) { throw new TypeError("invalid parameter name"); } string += "; " + param + "=" + qstring(parameters[param]); } } return string; } function parse3(string) { if (!string) { throw new TypeError("argument string is required"); } var header = typeof string === "object" ? getcontenttype(string) : string; if (typeof header !== "string") { throw new TypeError("argument string is required to be a string"); } var index2 = header.indexOf(";"); var type = index2 !== -1 ? header.slice(0, index2).trim() : header.trim(); if (!TYPE_REGEXP.test(type)) { throw new TypeError("invalid media type"); } var obj = new ContentType(type.toLowerCase()); if (index2 !== -1) { var key; var match; var value; PARAM_REGEXP.lastIndex = index2; while (match = PARAM_REGEXP.exec(header)) { if (match.index !== index2) { throw new TypeError("invalid parameter format"); } index2 += match[0].length; key = match[1].toLowerCase(); value = match[2]; if (value.charCodeAt(0) === 34) { value = value.slice(1, -1); if (value.indexOf("\\") !== -1) { value = value.replace(QESC_REGEXP, "$1"); } } obj.parameters[key] = value; } if (index2 !== header.length) { throw new TypeError("invalid parameter format"); } } return obj; } function getcontenttype(obj) { var header; if (typeof obj.getHeader === "function") { header = obj.getHeader("content-type"); } else if (typeof obj.headers === "object") { header = obj.headers && obj.headers["content-type"]; } if (typeof header !== "string") { throw new TypeError("content-type header is missing from object"); } return header; } function qstring(val) { var str = String(val); if (TOKEN_REGEXP.test(str)) { return str; } if (str.length > 0 && !TEXT_REGEXP.test(str)) { throw new TypeError("invalid parameter value"); } return '"' + str.replace(QUOTE_REGEXP, "\\$1") + '"'; } function ContentType(type) { this.parameters = /* @__PURE__ */ Object.create(null); this.type = type; } } }); // ../backend/node_modules/setprototypeof/index.js var require_setprototypeof = __commonJS({ "../backend/node_modules/setprototypeof/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties); function setProtoOf(obj, proto) { obj.__proto__ = proto; return obj; } function mixinProperties(obj, proto) { for (var prop in proto) { if (!Object.prototype.hasOwnProperty.call(obj, prop)) { obj[prop] = proto[prop]; } } return obj; } } }); // ../backend/node_modules/statuses/codes.json var require_codes = __commonJS({ "../backend/node_modules/statuses/codes.json"(exports2, module2) { module2.exports = { "100": "Continue", "101": "Switching Protocols", "102": "Processing", "103": "Early Hints", "200": "OK", "201": "Created", "202": "Accepted", "203": "Non-Authoritative Information", "204": "No Content", "205": "Reset Content", "206": "Partial Content", "207": "Multi-Status", "208": "Already Reported", "226": "IM Used", "300": "Multiple Choices", "301": "Moved Permanently", "302": "Found", "303": "See Other", "304": "Not Modified", "305": "Use Proxy", "307": "Temporary Redirect", "308": "Permanent Redirect", "400": "Bad Request", "401": "Unauthorized", "402": "Payment Required", "403": "Forbidden", "404": "Not Found", "405": "Method Not Allowed", "406": "Not Acceptable", "407": "Proxy Authentication Required", "408": "Request Timeout", "409": "Conflict", "410": "Gone", "411": "Length Required", "412": "Precondition Failed", "413": "Payload Too Large", "414": "URI Too Long", "415": "Unsupported Media Type", "416": "Range Not Satisfiable", "417": "Expectation Failed", "418": "I'm a Teapot", "421": "Misdirected Request", "422": "Unprocessable Entity", "423": "Locked", "424": "Failed Dependency", "425": "Too Early", "426": "Upgrade Required", "428": "Precondition Required", "429": "Too Many Requests", "431": "Request Header Fields Too Large", "451": "Unavailable For Legal Reasons", "500": "Internal Server Error", "501": "Not Implemented", "502": "Bad Gateway", "503": "Service Unavailable", "504": "Gateway Timeout", "505": "HTTP Version Not Supported", "506": "Variant Also Negotiates", "507": "Insufficient Storage", "508": "Loop Detected", "509": "Bandwidth Limit Exceeded", "510": "Not Extended", "511": "Network Authentication Required" }; } }); // ../backend/node_modules/statuses/index.js var require_statuses = __commonJS({ "../backend/node_modules/statuses/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var codes = require_codes(); module2.exports = status; status.message = codes; status.code = createMessageToStatusCodeMap(codes); status.codes = createStatusCodeList(codes); status.redirect = { 300: true, 301: true, 302: true, 303: true, 305: true, 307: true, 308: true }; status.empty = { 204: true, 205: true, 304: true }; status.retry = { 502: true, 503: true, 504: true }; function createMessageToStatusCodeMap(codes2) { var map = {}; Object.keys(codes2).forEach(function forEachCode(code) { var message = codes2[code]; var status2 = Number(code); map[message.toLowerCase()] = status2; }); return map; } function createStatusCodeList(codes2) { return Object.keys(codes2).map(function mapCode(code) { return Number(code); }); } function getStatusCode(message) { var msg = message.toLowerCase(); if (!Object.prototype.hasOwnProperty.call(status.code, msg)) { throw new Error('invalid status message: "' + message + '"'); } return status.code[msg]; } function getStatusMessage(code) { if (!Object.prototype.hasOwnProperty.call(status.message, code)) { throw new Error("invalid status code: " + code); } return status.message[code]; } function status(code) { if (typeof code === "number") { return getStatusMessage(code); } if (typeof code !== "string") { throw new TypeError("code must be a number or string"); } var n = parseInt(code, 10); if (!isNaN(n)) { return getStatusMessage(n); } return getStatusCode(code); } } }); // ../backend/node_modules/inherits/inherits_browser.js var require_inherits_browser = __commonJS({ "../backend/node_modules/inherits/inherits_browser.js"(exports2, module2) { init_define_import_meta_env(); if (typeof Object.create === "function") { module2.exports = function inherits(ctor, superCtor) { if (superCtor) { ctor.super_ = superCtor; ctor.prototype = Object.create(superCtor.prototype, { constructor: { value: ctor, enumerable: false, writable: true, configurable: true } }); } }; } else { module2.exports = function inherits(ctor, superCtor) { if (superCtor) { ctor.super_ = superCtor; var TempCtor = function() { }; TempCtor.prototype = superCtor.prototype; ctor.prototype = new TempCtor(); ctor.prototype.constructor = ctor; } }; } } }); // ../backend/node_modules/inherits/inherits.js var require_inherits = __commonJS({ "../backend/node_modules/inherits/inherits.js"(exports2, module2) { init_define_import_meta_env(); try { util = require("util"); if (typeof util.inherits !== "function") throw ""; module2.exports = util.inherits; } catch (e) { module2.exports = require_inherits_browser(); } var util; } }); // ../backend/node_modules/toidentifier/index.js var require_toidentifier = __commonJS({ "../backend/node_modules/toidentifier/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = toIdentifier; function toIdentifier(str) { return str.split(" ").map(function(token) { return token.slice(0, 1).toUpperCase() + token.slice(1); }).join("").replace(/[^ _0-9a-z]/gi, ""); } } }); // ../backend/node_modules/http-errors/index.js var require_http_errors = __commonJS({ "../backend/node_modules/http-errors/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var deprecate = require_depd()("http-errors"); var setPrototypeOf = require_setprototypeof(); var statuses = require_statuses(); var inherits = require_inherits(); var toIdentifier = require_toidentifier(); module2.exports = createError2; module2.exports.HttpError = createHttpErrorConstructor(); module2.exports.isHttpError = createIsHttpErrorFunction(module2.exports.HttpError); populateConstructorExports(module2.exports, statuses.codes, module2.exports.HttpError); function codeClass(status) { return Number(String(status).charAt(0) + "00"); } function createError2() { var err; var msg; var status = 500; var props = {}; for (var i = 0; i < arguments.length; i++) { var arg = arguments[i]; var type = typeof arg; if (type === "object" && arg instanceof Error) { err = arg; status = err.status || err.statusCode || status; } else if (type === "number" && i === 0) { status = arg; } else if (type === "string") { msg = arg; } else if (type === "object") { props = arg; } else { throw new TypeError("argument #" + (i + 1) + " unsupported type " + type); } } if (typeof status === "number" && (status < 400 || status >= 600)) { deprecate("non-error status code; use only 4xx or 5xx status codes"); } if (typeof status !== "number" || !statuses.message[status] && (status < 400 || status >= 600)) { status = 500; } var HttpError = createError2[status] || createError2[codeClass(status)]; if (!err) { err = HttpError ? new HttpError(msg) : new Error(msg || statuses.message[status]); Error.captureStackTrace(err, createError2); } if (!HttpError || !(err instanceof HttpError) || err.status !== status) { err.expose = status < 500; err.status = err.statusCode = status; } for (var key in props) { if (key !== "status" && key !== "statusCode") { err[key] = props[key]; } } return err; } function createHttpErrorConstructor() { function HttpError() { throw new TypeError("cannot construct abstract class"); } inherits(HttpError, Error); return HttpError; } function createClientErrorConstructor(HttpError, name, code) { var className = toClassName(name); function ClientError(message) { var msg = message != null ? message : statuses.message[code]; var err = new Error(msg); Error.captureStackTrace(err, ClientError); setPrototypeOf(err, ClientError.prototype); Object.defineProperty(err, "message", { enumerable: true, configurable: true, value: msg, writable: true }); Object.defineProperty(err, "name", { enumerable: false, configurable: true, value: className, writable: true }); return err; } inherits(ClientError, HttpError); nameFunc(ClientError, className); ClientError.prototype.status = code; ClientError.prototype.statusCode = code; ClientError.prototype.expose = true; return ClientError; } function createIsHttpErrorFunction(HttpError) { return function isHttpError(val) { if (!val || typeof val !== "object") { return false; } if (val instanceof HttpError) { return true; } return val instanceof Error && typeof val.expose === "boolean" && typeof val.statusCode === "number" && val.status === val.statusCode; }; } function createServerErrorConstructor(HttpError, name, code) { var className = toClassName(name); function ServerError(message) { var msg = message != null ? message : statuses.message[code]; var err = new Error(msg); Error.captureStackTrace(err, ServerError); setPrototypeOf(err, ServerError.prototype); Object.defineProperty(err, "message", { enumerable: true, configurable: true, value: msg, writable: true }); Object.defineProperty(err, "name", { enumerable: false, configurable: true, value: className, writable: true }); return err; } inherits(ServerError, HttpError); nameFunc(ServerError, className); ServerError.prototype.status = code; ServerError.prototype.statusCode = code; ServerError.prototype.expose = false; return ServerError; } function nameFunc(func, name) { var desc = Object.getOwnPropertyDescriptor(func, "name"); if (desc && desc.configurable) { desc.value = name; Object.defineProperty(func, "name", desc); } } function populateConstructorExports(exports3, codes, HttpError) { codes.forEach(function forEachCode(code) { var CodeError; var name = toIdentifier(statuses.message[code]); switch (codeClass(code)) { case 400: CodeError = createClientErrorConstructor(HttpError, name, code); break; case 500: CodeError = createServerErrorConstructor(HttpError, name, code); break; } if (CodeError) { exports3[code] = CodeError; exports3[name] = CodeError; } }); } function toClassName(name) { return name.slice(-5) === "Error" ? name : name + "Error"; } } }); // ../backend/node_modules/ms/index.js var require_ms = __commonJS({ "../backend/node_modules/ms/index.js"(exports2, module2) { init_define_import_meta_env(); var s = 1e3; var m = s * 60; var h = m * 60; var d = h * 24; var y = d * 365.25; module2.exports = function(val, options) { options = options || {}; var type = typeof val; if (type === "string" && val.length > 0) { return parse3(val); } else if (type === "number" && isNaN(val) === false) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) ); }; function parse3(str) { str = String(str); if (str.length > 100) { return; } var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( str ); if (!match) { return; } var n = parseFloat(match[1]); var type = (match[2] || "ms").toLowerCase(); switch (type) { case "years": case "year": case "yrs": case "yr": case "y": return n * y; case "days": case "day": case "d": return n * d; case "hours": case "hour": case "hrs": case "hr": case "h": return n * h; case "minutes": case "minute": case "mins": case "min": case "m": return n * m; case "seconds": case "second": case "secs": case "sec": case "s": return n * s; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return n; default: return void 0; } } function fmtShort(ms) { if (ms >= d) { return Math.round(ms / d) + "d"; } if (ms >= h) { return Math.round(ms / h) + "h"; } if (ms >= m) { return Math.round(ms / m) + "m"; } if (ms >= s) { return Math.round(ms / s) + "s"; } return ms + "ms"; } function fmtLong(ms) { return plural(ms, d, "day") || plural(ms, h, "hour") || plural(ms, m, "minute") || plural(ms, s, "second") || ms + " ms"; } function plural(ms, n, name) { if (ms < n) { return; } if (ms < n * 1.5) { return Math.floor(ms / n) + " " + name; } return Math.ceil(ms / n) + " " + name + "s"; } } }); // ../backend/node_modules/debug/src/debug.js var require_debug = __commonJS({ "../backend/node_modules/debug/src/debug.js"(exports2, module2) { init_define_import_meta_env(); exports2 = module2.exports = createDebug.debug = createDebug["default"] = createDebug; exports2.coerce = coerce; exports2.disable = disable; exports2.enable = enable; exports2.enabled = enabled; exports2.humanize = require_ms(); exports2.names = []; exports2.skips = []; exports2.formatters = {}; var prevTime; function selectColor(namespace) { var hash2 = 0, i; for (i in namespace) { hash2 = (hash2 << 5) - hash2 + namespace.charCodeAt(i); hash2 |= 0; } return exports2.colors[Math.abs(hash2) % exports2.colors.length]; } function createDebug(namespace) { function debug() { if (!debug.enabled) return; var self2 = debug; var curr = +/* @__PURE__ */ new Date(); var ms = curr - (prevTime || curr); self2.diff = ms; self2.prev = prevTime; self2.curr = curr; prevTime = curr; var args = new Array(arguments.length); for (var i = 0; i < args.length; i++) { args[i] = arguments[i]; } args[0] = exports2.coerce(args[0]); if ("string" !== typeof args[0]) { args.unshift("%O"); } var index2 = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { if (match === "%%") return match; index2++; var formatter = exports2.formatters[format]; if ("function" === typeof formatter) { var val = args[index2]; match = formatter.call(self2, val); args.splice(index2, 1); index2--; } return match; }); exports2.formatArgs.call(self2, args); var logFn = debug.log || exports2.log || console.log.bind(console); logFn.apply(self2, args); } debug.namespace = namespace; debug.enabled = exports2.enabled(namespace); debug.useColors = exports2.useColors(); debug.color = selectColor(namespace); if ("function" === typeof exports2.init) { exports2.init(debug); } return debug; } function enable(namespaces) { exports2.save(namespaces); exports2.names = []; exports2.skips = []; var split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); var len = split.length; for (var i = 0; i < len; i++) { if (!split[i]) continue; namespaces = split[i].replace(/\*/g, ".*?"); if (namespaces[0] === "-") { exports2.skips.push(new RegExp("^" + namespaces.substr(1) + "$")); } else { exports2.names.push(new RegExp("^" + namespaces + "$")); } } } function disable() { exports2.enable(""); } function enabled(name) { var i, len; for (i = 0, len = exports2.skips.length; i < len; i++) { if (exports2.skips[i].test(name)) { return false; } } for (i = 0, len = exports2.names.length; i < len; i++) { if (exports2.names[i].test(name)) { return true; } } return false; } function coerce(val) { if (val instanceof Error) return val.stack || val.message; return val; } } }); // ../backend/node_modules/debug/src/browser.js var require_browser = __commonJS({ "../backend/node_modules/debug/src/browser.js"(exports2, module2) { init_define_import_meta_env(); exports2 = module2.exports = require_debug(); exports2.log = log; exports2.formatArgs = formatArgs; exports2.save = save2; exports2.load = load2; exports2.useColors = useColors; exports2.storage = "undefined" != typeof chrome && "undefined" != typeof chrome.storage ? chrome.storage.local : localstorage(); exports2.colors = [ "lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson" ]; function useColors() { if (typeof window !== "undefined" && window.process && window.process.type === "renderer") { return true; } return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773 typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); } exports2.formatters.j = function(v) { try { return JSON.stringify(v); } catch (err) { return "[UnexpectedJSONParseError]: " + err.message; } }; function formatArgs(args) { var useColors2 = this.useColors; args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports2.humanize(this.diff); if (!useColors2) return; var c = "color: " + this.color; args.splice(1, 0, c, "color: inherit"); var index2 = 0; var lastC = 0; args[0].replace(/%[a-zA-Z%]/g, function(match) { if ("%%" === match) return; index2++; if ("%c" === match) { lastC = index2; } }); args.splice(lastC, 0, c); } function log() { return "object" === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments); } function save2(namespaces) { try { if (null == namespaces) { exports2.storage.removeItem("debug"); } else { exports2.storage.debug = namespaces; } } catch (e) { } } function load2() { var r; try { r = exports2.storage.debug; } catch (e) { } if (!r && typeof process !== "undefined" && "env" in process) { r = process.env.DEBUG; } return r; } exports2.enable(load2()); function localstorage() { try { return window.localStorage; } catch (e) { } } } }); // ../backend/node_modules/debug/src/node.js var require_node = __commonJS({ "../backend/node_modules/debug/src/node.js"(exports2, module2) { init_define_import_meta_env(); var tty = require("tty"); var util = require("util"); exports2 = module2.exports = require_debug(); exports2.init = init; exports2.log = log; exports2.formatArgs = formatArgs; exports2.save = save2; exports2.load = load2; exports2.useColors = useColors; exports2.colors = [6, 2, 3, 4, 5, 1]; exports2.inspectOpts = Object.keys(process.env).filter(function(key) { return /^debug_/i.test(key); }).reduce(function(obj, key) { var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function(_, k) { return k.toUpperCase(); }); var val = process.env[key]; if (/^(yes|on|true|enabled)$/i.test(val)) val = true; else if (/^(no|off|false|disabled)$/i.test(val)) val = false; else if (val === "null") val = null; else val = Number(val); obj[prop] = val; return obj; }, {}); var fd = parseInt(process.env.DEBUG_FD, 10) || 2; if (1 !== fd && 2 !== fd) { util.deprecate(function() { }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); } var stream = 1 === fd ? process.stdout : 2 === fd ? process.stderr : createWritableStdioStream(fd); function useColors() { return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(fd); } exports2.formatters.o = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts).split("\n").map(function(str) { return str.trim(); }).join(" "); }; exports2.formatters.O = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts); }; function formatArgs(args) { var name = this.namespace; var useColors2 = this.useColors; if (useColors2) { var c = this.color; var prefix = " \x1B[3" + c + ";1m" + name + " \x1B[0m"; args[0] = prefix + args[0].split("\n").join("\n" + prefix); args.push("\x1B[3" + c + "m+" + exports2.humanize(this.diff) + "\x1B[0m"); } else { args[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + name + " " + args[0]; } } function log() { return stream.write(util.format.apply(util, arguments) + "\n"); } function save2(namespaces) { if (null == namespaces) { delete process.env.DEBUG; } else { process.env.DEBUG = namespaces; } } function load2() { return process.env.DEBUG; } function createWritableStdioStream(fd2) { var stream2; var tty_wrap = process.binding("tty_wrap"); switch (tty_wrap.guessHandleType(fd2)) { case "TTY": stream2 = new tty.WriteStream(fd2); stream2._type = "tty"; if (stream2._handle && stream2._handle.unref) { stream2._handle.unref(); } break; case "FILE": var fs = require("fs"); stream2 = new fs.SyncWriteStream(fd2, { autoClose: false }); stream2._type = "fs"; break; case "PIPE": case "TCP": var net = require("net"); stream2 = new net.Socket({ fd: fd2, readable: false, writable: true }); stream2.readable = false; stream2.read = null; stream2._type = "pipe"; if (stream2._handle && stream2._handle.unref) { stream2._handle.unref(); } break; default: throw new Error("Implement me. Unknown stream file type!"); } stream2.fd = fd2; stream2._isStdio = true; return stream2; } function init(debug) { debug.inspectOpts = {}; var keys = Object.keys(exports2.inspectOpts); for (var i = 0; i < keys.length; i++) { debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; } } exports2.enable(load2()); } }); // ../backend/node_modules/debug/src/index.js var require_src = __commonJS({ "../backend/node_modules/debug/src/index.js"(exports2, module2) { init_define_import_meta_env(); if (typeof process !== "undefined" && process.type === "renderer") { module2.exports = require_browser(); } else { module2.exports = require_node(); } } }); // ../backend/node_modules/destroy/index.js var require_destroy = __commonJS({ "../backend/node_modules/destroy/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var EventEmitter = require("events").EventEmitter; var ReadStream = require("fs").ReadStream; var Stream = require("stream"); var Zlib = require("zlib"); module2.exports = destroy; function destroy(stream, suppress) { if (isFsReadStream(stream)) { destroyReadStream(stream); } else if (isZlibStream(stream)) { destroyZlibStream(stream); } else if (hasDestroy(stream)) { stream.destroy(); } if (isEventEmitter(stream) && suppress) { stream.removeAllListeners("error"); stream.addListener("error", noop); } return stream; } function destroyReadStream(stream) { stream.destroy(); if (typeof stream.close === "function") { stream.on("open", onOpenClose); } } function closeZlibStream(stream) { if (stream._hadError === true) { var prop = stream._binding === null ? "_binding" : "_handle"; stream[prop] = { close: function() { this[prop] = null; } }; } stream.close(); } function destroyZlibStream(stream) { if (typeof stream.destroy === "function") { if (stream._binding) { stream.destroy(); if (stream._processing) { stream._needDrain = true; stream.once("drain", onDrainClearBinding); } else { stream._binding.clear(); } } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) { stream.destroy(); } else if (stream._destroy && typeof stream.close === "function") { stream.destroyed = true; stream.close(); } else { stream.destroy(); } } else if (typeof stream.close === "function") { closeZlibStream(stream); } } function hasDestroy(stream) { return stream instanceof Stream && typeof stream.destroy === "function"; } function isEventEmitter(val) { return val instanceof EventEmitter; } function isFsReadStream(stream) { return stream instanceof ReadStream; } function isZlibStream(stream) { return stream instanceof Zlib.Gzip || stream instanceof Zlib.Gunzip || stream instanceof Zlib.Deflate || stream instanceof Zlib.DeflateRaw || stream instanceof Zlib.Inflate || stream instanceof Zlib.InflateRaw || stream instanceof Zlib.Unzip; } function noop() { } function onDrainClearBinding() { this._binding.clear(); } function onOpenClose() { if (typeof this.fd === "number") { this.close(); } } } }); // ../backend/node_modules/safer-buffer/safer.js var require_safer = __commonJS({ "../backend/node_modules/safer-buffer/safer.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var buffer = require("buffer"); var Buffer2 = buffer.Buffer; var safer = {}; var key; for (key in buffer) { if (!buffer.hasOwnProperty(key)) continue; if (key === "SlowBuffer" || key === "Buffer") continue; safer[key] = buffer[key]; } var Safer = safer.Buffer = {}; for (key in Buffer2) { if (!Buffer2.hasOwnProperty(key)) continue; if (key === "allocUnsafe" || key === "allocUnsafeSlow") continue; Safer[key] = Buffer2[key]; } safer.Buffer.prototype = Buffer2.prototype; if (!Safer.from || Safer.from === Uint8Array.from) { Safer.from = function(value, encodingOrOffset, length) { if (typeof value === "number") { throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value); } if (value && typeof value.length === "undefined") { throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type " + typeof value); } return Buffer2(value, encodingOrOffset, length); }; } if (!Safer.alloc) { Safer.alloc = function(size, fill, encoding) { if (typeof size !== "number") { throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size); } if (size < 0 || size >= 2 * (1 << 30)) { throw new RangeError('The value "' + size + '" is invalid for option "size"'); } var buf = Buffer2(size); if (!fill || fill.length === 0) { buf.fill(0); } else if (typeof encoding === "string") { buf.fill(fill, encoding); } else { buf.fill(fill); } return buf; }; } if (!safer.kStringMaxLength) { try { safer.kStringMaxLength = process.binding("buffer").kStringMaxLength; } catch (e) { } } if (!safer.constants) { safer.constants = { MAX_LENGTH: safer.kMaxLength }; if (safer.kStringMaxLength) { safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength; } } module2.exports = safer; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/lib/bom-handling.js"(exports2) { "use strict"; init_define_import_meta_env(); var BOMChar = "\uFEFF"; exports2.PrependBOM = PrependBOMWrapper; function PrependBOMWrapper(encoder2, options) { this.encoder = encoder2; this.addBOM = true; } PrependBOMWrapper.prototype.write = function(str) { if (this.addBOM) { str = BOMChar + str; this.addBOM = false; } return this.encoder.write(str); }; PrependBOMWrapper.prototype.end = function() { return this.encoder.end(); }; exports2.StripBOM = StripBOMWrapper; function StripBOMWrapper(decoder, options) { this.decoder = decoder; this.pass = false; this.options = options || {}; } StripBOMWrapper.prototype.write = function(buf) { var res = this.decoder.write(buf); if (this.pass || !res) return res; if (res[0] === BOMChar) { res = res.slice(1); if (typeof this.options.stripBOM === "function") this.options.stripBOM(); } this.pass = true; return res; }; StripBOMWrapper.prototype.end = function() { return this.decoder.end(); }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js var require_internal = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/internal.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; module2.exports = { // Encodings utf8: { type: "_internal", bomAware: true }, cesu8: { type: "_internal", bomAware: true }, unicode11utf8: "utf8", ucs2: { type: "_internal", bomAware: true }, utf16le: "ucs2", binary: { type: "_internal" }, base64: { type: "_internal" }, hex: { type: "_internal" }, // Codec. _internal: InternalCodec }; function InternalCodec(codecOptions, iconv) { this.enc = codecOptions.encodingName; this.bomAware = codecOptions.bomAware; if (this.enc === "base64") this.encoder = InternalEncoderBase64; else if (this.enc === "cesu8") { this.enc = "utf8"; this.encoder = InternalEncoderCesu8; if (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") { this.decoder = InternalDecoderCesu8; this.defaultCharUnicode = iconv.defaultCharUnicode; } } } InternalCodec.prototype.encoder = InternalEncoder; InternalCodec.prototype.decoder = InternalDecoder; var StringDecoder = require("string_decoder").StringDecoder; if (!StringDecoder.prototype.end) StringDecoder.prototype.end = function() { }; function InternalDecoder(options, codec) { StringDecoder.call(this, codec.enc); } InternalDecoder.prototype = StringDecoder.prototype; function InternalEncoder(options, codec) { this.enc = codec.enc; } InternalEncoder.prototype.write = function(str) { return Buffer2.from(str, this.enc); }; InternalEncoder.prototype.end = function() { }; function InternalEncoderBase64(options, codec) { this.prevStr = ""; } InternalEncoderBase64.prototype.write = function(str) { str = this.prevStr + str; var completeQuads = str.length - str.length % 4; this.prevStr = str.slice(completeQuads); str = str.slice(0, completeQuads); return Buffer2.from(str, "base64"); }; InternalEncoderBase64.prototype.end = function() { return Buffer2.from(this.prevStr, "base64"); }; function InternalEncoderCesu8(options, codec) { } InternalEncoderCesu8.prototype.write = function(str) { var buf = Buffer2.alloc(str.length * 3), bufIdx = 0; for (var i = 0; i < str.length; i++) { var charCode = str.charCodeAt(i); if (charCode < 128) buf[bufIdx++] = charCode; else if (charCode < 2048) { buf[bufIdx++] = 192 + (charCode >>> 6); buf[bufIdx++] = 128 + (charCode & 63); } else { buf[bufIdx++] = 224 + (charCode >>> 12); buf[bufIdx++] = 128 + (charCode >>> 6 & 63); buf[bufIdx++] = 128 + (charCode & 63); } } return buf.slice(0, bufIdx); }; InternalEncoderCesu8.prototype.end = function() { }; function InternalDecoderCesu8(options, codec) { this.acc = 0; this.contBytes = 0; this.accBytes = 0; this.defaultCharUnicode = codec.defaultCharUnicode; } InternalDecoderCesu8.prototype.write = function(buf) { var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, res = ""; for (var i = 0; i < buf.length; i++) { var curByte = buf[i]; if ((curByte & 192) !== 128) { if (contBytes > 0) { res += this.defaultCharUnicode; contBytes = 0; } if (curByte < 128) { res += String.fromCharCode(curByte); } else if (curByte < 224) { acc = curByte & 31; contBytes = 1; accBytes = 1; } else if (curByte < 240) { acc = curByte & 15; contBytes = 2; accBytes = 1; } else { res += this.defaultCharUnicode; } } else { if (contBytes > 0) { acc = acc << 6 | curByte & 63; contBytes--; accBytes++; if (contBytes === 0) { if (accBytes === 2 && acc < 128 && acc > 0) res += this.defaultCharUnicode; else if (accBytes === 3 && acc < 2048) res += this.defaultCharUnicode; else res += String.fromCharCode(acc); } } else { res += this.defaultCharUnicode; } } } this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; return res; }; InternalDecoderCesu8.prototype.end = function() { var res = 0; if (this.contBytes > 0) res += this.defaultCharUnicode; return res; }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js var require_utf16 = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/utf16.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2.utf16be = Utf16BECodec; function Utf16BECodec() { } Utf16BECodec.prototype.encoder = Utf16BEEncoder; Utf16BECodec.prototype.decoder = Utf16BEDecoder; Utf16BECodec.prototype.bomAware = true; function Utf16BEEncoder() { } Utf16BEEncoder.prototype.write = function(str) { var buf = Buffer2.from(str, "ucs2"); for (var i = 0; i < buf.length; i += 2) { var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp; } return buf; }; Utf16BEEncoder.prototype.end = function() { }; function Utf16BEDecoder() { this.overflowByte = -1; } Utf16BEDecoder.prototype.write = function(buf) { if (buf.length == 0) return ""; var buf2 = Buffer2.alloc(buf.length + 1), i = 0, j = 0; if (this.overflowByte !== -1) { buf2[0] = buf[0]; buf2[1] = this.overflowByte; i = 1; j = 2; } for (; i < buf.length - 1; i += 2, j += 2) { buf2[j] = buf[i + 1]; buf2[j + 1] = buf[i]; } this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1; return buf2.slice(0, j).toString("ucs2"); }; Utf16BEDecoder.prototype.end = function() { }; exports2.utf16 = Utf16Codec; function Utf16Codec(codecOptions, iconv) { this.iconv = iconv; } Utf16Codec.prototype.encoder = Utf16Encoder; Utf16Codec.prototype.decoder = Utf16Decoder; function Utf16Encoder(options, codec) { options = options || {}; if (options.addBOM === void 0) options.addBOM = true; this.encoder = codec.iconv.getEncoder("utf-16le", options); } Utf16Encoder.prototype.write = function(str) { return this.encoder.write(str); }; Utf16Encoder.prototype.end = function() { return this.encoder.end(); }; function Utf16Decoder(options, codec) { this.decoder = null; this.initialBytes = []; this.initialBytesLen = 0; this.options = options || {}; this.iconv = codec.iconv; } Utf16Decoder.prototype.write = function(buf) { if (!this.decoder) { this.initialBytes.push(buf); this.initialBytesLen += buf.length; if (this.initialBytesLen < 16) return ""; var buf = Buffer2.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding); this.decoder = this.iconv.getDecoder(encoding, this.options); this.initialBytes.length = this.initialBytesLen = 0; } return this.decoder.write(buf); }; Utf16Decoder.prototype.end = function() { if (!this.decoder) { var buf = Buffer2.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding); this.decoder = this.iconv.getDecoder(encoding, this.options); var res = this.decoder.write(buf), trail = this.decoder.end(); return trail ? res + trail : res; } return this.decoder.end(); }; function detectEncoding(buf, defaultEncoding) { var enc = defaultEncoding || "utf-16le"; if (buf.length >= 2) { if (buf[0] == 254 && buf[1] == 255) enc = "utf-16be"; else if (buf[0] == 255 && buf[1] == 254) enc = "utf-16le"; else { var asciiCharsLE = 0, asciiCharsBE = 0, _len = Math.min(buf.length - buf.length % 2, 64); for (var i = 0; i < _len; i += 2) { if (buf[i] === 0 && buf[i + 1] !== 0) asciiCharsBE++; if (buf[i] !== 0 && buf[i + 1] === 0) asciiCharsLE++; } if (asciiCharsBE > asciiCharsLE) enc = "utf-16be"; else if (asciiCharsBE < asciiCharsLE) enc = "utf-16le"; } } return enc; } } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js var require_utf7 = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/utf7.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2.utf7 = Utf7Codec; exports2.unicode11utf7 = "utf7"; function Utf7Codec(codecOptions, iconv) { this.iconv = iconv; } Utf7Codec.prototype.encoder = Utf7Encoder; Utf7Codec.prototype.decoder = Utf7Decoder; Utf7Codec.prototype.bomAware = true; var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; function Utf7Encoder(options, codec) { this.iconv = codec.iconv; } Utf7Encoder.prototype.write = function(str) { return Buffer2.from(str.replace(nonDirectChars, function(chunk) { return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; }.bind(this))); }; Utf7Encoder.prototype.end = function() { }; function Utf7Decoder(options, codec) { this.iconv = codec.iconv; this.inBase64 = false; this.base64Accum = ""; } var base64Regex = /[A-Za-z0-9\/+]/; var base64Chars = []; for (i = 0; i < 256; i++) base64Chars[i] = base64Regex.test(String.fromCharCode(i)); var i; var plusChar = "+".charCodeAt(0); var minusChar = "-".charCodeAt(0); var andChar = "&".charCodeAt(0); Utf7Decoder.prototype.write = function(buf) { var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; for (var i2 = 0; i2 < buf.length; i2++) { if (!inBase64) { if (buf[i2] == plusChar) { res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); lastI = i2 + 1; inBase64 = true; } } else { if (!base64Chars[buf[i2]]) { if (i2 == lastI && buf[i2] == minusChar) { res += "+"; } else { var b64str = base64Accum + buf.slice(lastI, i2).toString(); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } if (buf[i2] != minusChar) i2--; lastI = i2 + 1; inBase64 = false; base64Accum = ""; } } } if (!inBase64) { res += this.iconv.decode(buf.slice(lastI), "ascii"); } else { var b64str = base64Accum + buf.slice(lastI).toString(); var canBeDecoded = b64str.length - b64str.length % 8; base64Accum = b64str.slice(canBeDecoded); b64str = b64str.slice(0, canBeDecoded); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } this.inBase64 = inBase64; this.base64Accum = base64Accum; return res; }; Utf7Decoder.prototype.end = function() { var res = ""; if (this.inBase64 && this.base64Accum.length > 0) res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); this.inBase64 = false; this.base64Accum = ""; return res; }; exports2.utf7imap = Utf7IMAPCodec; function Utf7IMAPCodec(codecOptions, iconv) { this.iconv = iconv; } Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; Utf7IMAPCodec.prototype.bomAware = true; function Utf7IMAPEncoder(options, codec) { this.iconv = codec.iconv; this.inBase64 = false; this.base64Accum = Buffer2.alloc(6); this.base64AccumIdx = 0; } Utf7IMAPEncoder.prototype.write = function(str) { var inBase64 = this.inBase64, base64Accum = this.base64Accum, base64AccumIdx = this.base64AccumIdx, buf = Buffer2.alloc(str.length * 5 + 10), bufIdx = 0; for (var i2 = 0; i2 < str.length; i2++) { var uChar = str.charCodeAt(i2); if (32 <= uChar && uChar <= 126) { if (inBase64) { if (base64AccumIdx > 0) { bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); base64AccumIdx = 0; } buf[bufIdx++] = minusChar; inBase64 = false; } if (!inBase64) { buf[bufIdx++] = uChar; if (uChar === andChar) buf[bufIdx++] = minusChar; } } else { if (!inBase64) { buf[bufIdx++] = andChar; inBase64 = true; } if (inBase64) { base64Accum[base64AccumIdx++] = uChar >> 8; base64Accum[base64AccumIdx++] = uChar & 255; if (base64AccumIdx == base64Accum.length) { bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx); base64AccumIdx = 0; } } } } this.inBase64 = inBase64; this.base64AccumIdx = base64AccumIdx; return buf.slice(0, bufIdx); }; Utf7IMAPEncoder.prototype.end = function() { var buf = Buffer2.alloc(10), bufIdx = 0; if (this.inBase64) { if (this.base64AccumIdx > 0) { bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); this.base64AccumIdx = 0; } buf[bufIdx++] = minusChar; this.inBase64 = false; } return buf.slice(0, bufIdx); }; function Utf7IMAPDecoder(options, codec) { this.iconv = codec.iconv; this.inBase64 = false; this.base64Accum = ""; } var base64IMAPChars = base64Chars.slice(); base64IMAPChars[",".charCodeAt(0)] = true; Utf7IMAPDecoder.prototype.write = function(buf) { var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; for (var i2 = 0; i2 < buf.length; i2++) { if (!inBase64) { if (buf[i2] == andChar) { res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); lastI = i2 + 1; inBase64 = true; } } else { if (!base64IMAPChars[buf[i2]]) { if (i2 == lastI && buf[i2] == minusChar) { res += "&"; } else { var b64str = base64Accum + buf.slice(lastI, i2).toString().replace(/,/g, "/"); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } if (buf[i2] != minusChar) i2--; lastI = i2 + 1; inBase64 = false; base64Accum = ""; } } } if (!inBase64) { res += this.iconv.decode(buf.slice(lastI), "ascii"); } else { var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, "/"); var canBeDecoded = b64str.length - b64str.length % 8; base64Accum = b64str.slice(canBeDecoded); b64str = b64str.slice(0, canBeDecoded); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } this.inBase64 = inBase64; this.base64Accum = base64Accum; return res; }; Utf7IMAPDecoder.prototype.end = function() { var res = ""; if (this.inBase64 && this.base64Accum.length > 0) res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); this.inBase64 = false; this.base64Accum = ""; return res; }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2._sbcs = SBCSCodec; function SBCSCodec(codecOptions, iconv) { if (!codecOptions) throw new Error("SBCS codec is called without the data."); if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)"); if (codecOptions.chars.length === 128) { var asciiString = ""; for (var i = 0; i < 128; i++) asciiString += String.fromCharCode(i); codecOptions.chars = asciiString + codecOptions.chars; } this.decodeBuf = Buffer2.from(codecOptions.chars, "ucs2"); var encodeBuf = Buffer2.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); for (var i = 0; i < codecOptions.chars.length; i++) encodeBuf[codecOptions.chars.charCodeAt(i)] = i; this.encodeBuf = encodeBuf; } SBCSCodec.prototype.encoder = SBCSEncoder; SBCSCodec.prototype.decoder = SBCSDecoder; function SBCSEncoder(options, codec) { this.encodeBuf = codec.encodeBuf; } SBCSEncoder.prototype.write = function(str) { var buf = Buffer2.alloc(str.length); for (var i = 0; i < str.length; i++) buf[i] = this.encodeBuf[str.charCodeAt(i)]; return buf; }; SBCSEncoder.prototype.end = function() { }; function SBCSDecoder(options, codec) { this.decodeBuf = codec.decodeBuf; } SBCSDecoder.prototype.write = function(buf) { var decodeBuf = this.decodeBuf; var newBuf = Buffer2.alloc(buf.length * 2); var idx1 = 0, idx2 = 0; for (var i = 0; i < buf.length; i++) { idx1 = buf[i] * 2; idx2 = i * 2; newBuf[idx2] = decodeBuf[idx1]; newBuf[idx2 + 1] = decodeBuf[idx1 + 1]; } return newBuf.toString("ucs2"); }; SBCSDecoder.prototype.end = function() { }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { // Not supported by iconv, not sure why. "10029": "maccenteuro", "maccenteuro": { "type": "_sbcs", "chars": "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" }, "808": "cp808", "ibm808": "cp808", "cp808": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" }, "mik": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, // Aliases of generated encodings. "ascii8bit": "ascii", "usascii": "ascii", "ansix34": "ascii", "ansix341968": "ascii", "ansix341986": "ascii", "csascii": "ascii", "cp367": "ascii", "ibm367": "ascii", "isoir6": "ascii", "iso646us": "ascii", "iso646irv": "ascii", "us": "ascii", "latin1": "iso88591", "latin2": "iso88592", "latin3": "iso88593", "latin4": "iso88594", "latin5": "iso88599", "latin6": "iso885910", "latin7": "iso885913", "latin8": "iso885914", "latin9": "iso885915", "latin10": "iso885916", "csisolatin1": "iso88591", "csisolatin2": "iso88592", "csisolatin3": "iso88593", "csisolatin4": "iso88594", "csisolatincyrillic": "iso88595", "csisolatinarabic": "iso88596", "csisolatingreek": "iso88597", "csisolatinhebrew": "iso88598", "csisolatin5": "iso88599", "csisolatin6": "iso885910", "l1": "iso88591", "l2": "iso88592", "l3": "iso88593", "l4": "iso88594", "l5": "iso88599", "l6": "iso885910", "l7": "iso885913", "l8": "iso885914", "l9": "iso885915", "l10": "iso885916", "isoir14": "iso646jp", "isoir57": "iso646cn", "isoir100": "iso88591", "isoir101": "iso88592", "isoir109": "iso88593", "isoir110": "iso88594", "isoir144": "iso88595", "isoir127": "iso88596", "isoir126": "iso88597", "isoir138": "iso88598", "isoir148": "iso88599", "isoir157": "iso885910", "isoir166": "tis620", "isoir179": "iso885913", "isoir199": "iso885914", "isoir203": "iso885915", "isoir226": "iso885916", "cp819": "iso88591", "ibm819": "iso88591", "cyrillic": "iso88595", "arabic": "iso88596", "arabic8": "iso88596", "ecma114": "iso88596", "asmo708": "iso88596", "greek": "iso88597", "greek8": "iso88597", "ecma118": "iso88597", "elot928": "iso88597", "hebrew": "iso88598", "hebrew8": "iso88598", "turkish": "iso88599", "turkish8": "iso88599", "thai": "iso885911", "thai8": "iso885911", "celtic": "iso885914", "celtic8": "iso885914", "isoceltic": "iso885914", "tis6200": "tis620", "tis62025291": "tis620", "tis62025330": "tis620", "10000": "macroman", "10006": "macgreek", "10007": "maccyrillic", "10079": "maciceland", "10081": "macturkish", "cspc8codepage437": "cp437", "cspc775baltic": "cp775", "cspc850multilingual": "cp850", "cspcp852": "cp852", "cspc862latinhebrew": "cp862", "cpgr": "cp869", "msee": "cp1250", "mscyrl": "cp1251", "msansi": "cp1252", "msgreek": "cp1253", "msturk": "cp1254", "mshebr": "cp1255", "msarab": "cp1256", "winbaltrim": "cp1257", "cp20866": "koi8r", "20866": "koi8r", "ibm878": "koi8r", "cskoi8r": "koi8r", "cp21866": "koi8u", "21866": "koi8u", "ibm1168": "koi8u", "strk10482002": "rk1048", "tcvn5712": "tcvn", "tcvn57121": "tcvn", "gb198880": "iso646cn", "cn": "iso646cn", "csiso14jisc6220ro": "iso646jp", "jisc62201969ro": "iso646jp", "jp": "iso646jp", "cshproman8": "hproman8", "r8": "hproman8", "roman8": "hproman8", "xroman8": "hproman8", "ibm1051": "hproman8", "mac": "macintosh", "csmacintosh": "macintosh" }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { "437": "cp437", "737": "cp737", "775": "cp775", "850": "cp850", "852": "cp852", "855": "cp855", "856": "cp856", "857": "cp857", "858": "cp858", "860": "cp860", "861": "cp861", "862": "cp862", "863": "cp863", "864": "cp864", "865": "cp865", "866": "cp866", "869": "cp869", "874": "windows874", "922": "cp922", "1046": "cp1046", "1124": "cp1124", "1125": "cp1125", "1129": "cp1129", "1133": "cp1133", "1161": "cp1161", "1162": "cp1162", "1163": "cp1163", "1250": "windows1250", "1251": "windows1251", "1252": "windows1252", "1253": "windows1253", "1254": "windows1254", "1255": "windows1255", "1256": "windows1256", "1257": "windows1257", "1258": "windows1258", "28591": "iso88591", "28592": "iso88592", "28593": "iso88593", "28594": "iso88594", "28595": "iso88595", "28596": "iso88596", "28597": "iso88597", "28598": "iso88598", "28599": "iso88599", "28600": "iso885910", "28601": "iso885911", "28603": "iso885913", "28604": "iso885914", "28605": "iso885915", "28606": "iso885916", "windows874": { "type": "_sbcs", "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, "win874": "windows874", "cp874": "windows874", "windows1250": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" }, "win1250": "windows1250", "cp1250": "windows1250", "windows1251": { "type": "_sbcs", "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, "win1251": "windows1251", "cp1251": "windows1251", "windows1252": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "win1252": "windows1252", "cp1252": "windows1252", "windows1253": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" }, "win1253": "windows1253", "cp1253": "windows1253", "windows1254": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" }, "win1254": "windows1254", "cp1254": "windows1254", "windows1255": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" }, "win1255": "windows1255", "cp1255": "windows1255", "windows1256": { "type": "_sbcs", "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" }, "win1256": "windows1256", "cp1256": "windows1256", "windows1257": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" }, "win1257": "windows1257", "cp1257": "windows1257", "windows1258": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, "win1258": "windows1258", "cp1258": "windows1258", "iso88591": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "cp28591": "iso88591", "iso88592": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" }, "cp28592": "iso88592", "iso88593": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" }, "cp28593": "iso88593", "iso88594": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" }, "cp28594": "iso88594", "iso88595": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" }, "cp28595": "iso88595", "iso88596": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "cp28596": "iso88596", "iso88597": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" }, "cp28597": "iso88597", "iso88598": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" }, "cp28598": "iso88598", "iso88599": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" }, "cp28599": "iso88599", "iso885910": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" }, "cp28600": "iso885910", "iso885911": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, "cp28601": "iso885911", "iso885913": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" }, "cp28603": "iso885913", "iso885914": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" }, "cp28604": "iso885914", "iso885915": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "cp28605": "iso885915", "iso885916": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" }, "cp28606": "iso885916", "cp437": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm437": "cp437", "csibm437": "cp437", "cp737": { "type": "_sbcs", "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm737": "cp737", "csibm737": "cp737", "cp775": { "type": "_sbcs", "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm775": "cp775", "csibm775": "cp775", "cp850": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm850": "cp850", "csibm850": "cp850", "cp852": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" }, "ibm852": "cp852", "csibm852": "cp852", "cp855": { "type": "_sbcs", "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" }, "ibm855": "cp855", "csibm855": "cp855", "cp856": { "type": "_sbcs", "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm856": "cp856", "csibm856": "cp856", "cp857": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm857": "cp857", "csibm857": "cp857", "cp858": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm858": "cp858", "csibm858": "cp858", "cp860": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm860": "cp860", "csibm860": "cp860", "cp861": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm861": "cp861", "csibm861": "cp861", "cp862": { "type": "_sbcs", "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm862": "cp862", "csibm862": "cp862", "cp863": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm863": "cp863", "csibm863": "cp863", "cp864": { "type": "_sbcs", "chars": "\0\x07\b \n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" }, "ibm864": "cp864", "csibm864": "cp864", "cp865": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm865": "cp865", "csibm865": "cp865", "cp866": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" }, "ibm866": "cp866", "csibm866": "cp866", "cp869": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" }, "ibm869": "cp869", "csibm869": "cp869", "cp922": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" }, "ibm922": "cp922", "csibm922": "cp922", "cp1046": { "type": "_sbcs", "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" }, "ibm1046": "cp1046", "csibm1046": "cp1046", "cp1124": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" }, "ibm1124": "cp1124", "csibm1124": "cp1124", "cp1125": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" }, "ibm1125": "cp1125", "csibm1125": "cp1125", "cp1129": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, "ibm1129": "cp1129", "csibm1129": "cp1129", "cp1133": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" }, "ibm1133": "cp1133", "csibm1133": "cp1133", "cp1161": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" }, "ibm1161": "cp1161", "csibm1161": "cp1161", "cp1162": { "type": "_sbcs", "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, "ibm1162": "cp1162", "csibm1162": "cp1162", "cp1163": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, "ibm1163": "cp1163", "csibm1163": "cp1163", "maccroatian": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" }, "maccyrillic": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" }, "macgreek": { "type": "_sbcs", "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" }, "maciceland": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macroman": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macromania": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macthai": { "type": "_sbcs", "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" }, "macturkish": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macukraine": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" }, "koi8r": { "type": "_sbcs", "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "koi8u": { "type": "_sbcs", "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "koi8ru": { "type": "_sbcs", "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "koi8t": { "type": "_sbcs", "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "armscii8": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" }, "rk1048": { "type": "_sbcs", "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, "tcvn": { "type": "_sbcs", "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0" }, "georgianacademy": { "type": "_sbcs", "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "georgianps": { "type": "_sbcs", "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "pt154": { "type": "_sbcs", "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, "viscii": { "type": "_sbcs", "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b \n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE" }, "iso646cn": { "type": "_sbcs", "chars": "\0\x07\b \n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "iso646jp": { "type": "_sbcs", "chars": "\0\x07\b \n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "hproman8": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" }, "macintosh": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "ascii": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "tis620": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" } }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2._dbcs = DBCSCodec; var UNASSIGNED = -1; var GB18030_CODE = -2; var SEQ_START = -10; var NODE_START = -1e3; var UNASSIGNED_NODE = new Array(256); var DEF_CHAR = -1; for (i = 0; i < 256; i++) UNASSIGNED_NODE[i] = UNASSIGNED; var i; function DBCSCodec(codecOptions, iconv) { this.encodingName = codecOptions.encodingName; if (!codecOptions) throw new Error("DBCS codec is called without the data."); if (!codecOptions.table) throw new Error("Encoding '" + this.encodingName + "' has no data."); var mappingTable = codecOptions.table(); this.decodeTables = []; this.decodeTables[0] = UNASSIGNED_NODE.slice(0); this.decodeTableSeq = []; for (var i2 = 0; i2 < mappingTable.length; i2++) this._addDecodeChunk(mappingTable[i2]); this.defaultCharUnicode = iconv.defaultCharUnicode; this.encodeTable = []; this.encodeTableSeq = []; var skipEncodeChars = {}; if (codecOptions.encodeSkipVals) for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) { var val = codecOptions.encodeSkipVals[i2]; if (typeof val === "number") skipEncodeChars[val] = true; else for (var j = val.from; j <= val.to; j++) skipEncodeChars[j] = true; } this._fillEncodeTable(0, 0, skipEncodeChars); if (codecOptions.encodeAdd) { for (var uChar in codecOptions.encodeAdd) if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); } this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"]; if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); if (typeof codecOptions.gb18030 === "function") { this.gb18030 = codecOptions.gb18030(); var thirdByteNodeIdx = this.decodeTables.length; var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); var fourthByteNodeIdx = this.decodeTables.length; var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); for (var i2 = 129; i2 <= 254; i2++) { var secondByteNodeIdx = NODE_START - this.decodeTables[0][i2]; var secondByteNode = this.decodeTables[secondByteNodeIdx]; for (var j = 48; j <= 57; j++) secondByteNode[j] = NODE_START - thirdByteNodeIdx; } for (var i2 = 129; i2 <= 254; i2++) thirdByteNode[i2] = NODE_START - fourthByteNodeIdx; for (var i2 = 48; i2 <= 57; i2++) fourthByteNode[i2] = GB18030_CODE; } } DBCSCodec.prototype.encoder = DBCSEncoder; DBCSCodec.prototype.decoder = DBCSDecoder; DBCSCodec.prototype._getDecodeTrieNode = function(addr) { var bytes = []; for (; addr > 0; addr >>= 8) bytes.push(addr & 255); if (bytes.length == 0) bytes.push(0); var node = this.decodeTables[0]; for (var i2 = bytes.length - 1; i2 > 0; i2--) { var val = node[bytes[i2]]; if (val == UNASSIGNED) { node[bytes[i2]] = NODE_START - this.decodeTables.length; this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); } else if (val <= NODE_START) { node = this.decodeTables[NODE_START - val]; } else throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); } return node; }; DBCSCodec.prototype._addDecodeChunk = function(chunk) { var curAddr = parseInt(chunk[0], 16); var writeTable = this._getDecodeTrieNode(curAddr); curAddr = curAddr & 255; for (var k = 1; k < chunk.length; k++) { var part = chunk[k]; if (typeof part === "string") { for (var l = 0; l < part.length; ) { var code = part.charCodeAt(l++); if (55296 <= code && code < 56320) { var codeTrail = part.charCodeAt(l++); if (56320 <= codeTrail && codeTrail < 57344) writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320); else throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); } else if (4080 < code && code <= 4095) { var len = 4095 - code + 2; var seq = []; for (var m = 0; m < len; m++) seq.push(part.charCodeAt(l++)); writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; this.decodeTableSeq.push(seq); } else writeTable[curAddr++] = code; } } else if (typeof part === "number") { var charCode = writeTable[curAddr - 1] + 1; for (var l = 0; l < part; l++) writeTable[curAddr++] = charCode++; } else throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); } if (curAddr > 255) throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); }; DBCSCodec.prototype._getEncodeBucket = function(uCode) { var high = uCode >> 8; if (this.encodeTable[high] === void 0) this.encodeTable[high] = UNASSIGNED_NODE.slice(0); return this.encodeTable[high]; }; DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { var bucket = this._getEncodeBucket(uCode); var low = uCode & 255; if (bucket[low] <= SEQ_START) this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode; else if (bucket[low] == UNASSIGNED) bucket[low] = dbcsCode; }; DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { var uCode = seq[0]; var bucket = this._getEncodeBucket(uCode); var low = uCode & 255; var node; if (bucket[low] <= SEQ_START) { node = this.encodeTableSeq[SEQ_START - bucket[low]]; } else { node = {}; if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; bucket[low] = SEQ_START - this.encodeTableSeq.length; this.encodeTableSeq.push(node); } for (var j = 1; j < seq.length - 1; j++) { var oldVal = node[uCode]; if (typeof oldVal === "object") node = oldVal; else { node = node[uCode] = {}; if (oldVal !== void 0) node[DEF_CHAR] = oldVal; } } uCode = seq[seq.length - 1]; node[uCode] = dbcsCode; }; DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { var node = this.decodeTables[nodeIdx]; for (var i2 = 0; i2 < 256; i2++) { var uCode = node[i2]; var mbCode = prefix + i2; if (skipEncodeChars[mbCode]) continue; if (uCode >= 0) this._setEncodeChar(uCode, mbCode); else if (uCode <= NODE_START) this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); else if (uCode <= SEQ_START) this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); } }; function DBCSEncoder(options, codec) { this.leadSurrogate = -1; this.seqObj = void 0; this.encodeTable = codec.encodeTable; this.encodeTableSeq = codec.encodeTableSeq; this.defaultCharSingleByte = codec.defCharSB; this.gb18030 = codec.gb18030; } DBCSEncoder.prototype.write = function(str) { var newBuf = Buffer2.alloc(str.length * (this.gb18030 ? 4 : 3)), leadSurrogate = this.leadSurrogate, seqObj = this.seqObj, nextChar = -1, i2 = 0, j = 0; while (true) { if (nextChar === -1) { if (i2 == str.length) break; var uCode = str.charCodeAt(i2++); } else { var uCode = nextChar; nextChar = -1; } if (55296 <= uCode && uCode < 57344) { if (uCode < 56320) { if (leadSurrogate === -1) { leadSurrogate = uCode; continue; } else { leadSurrogate = uCode; uCode = UNASSIGNED; } } else { if (leadSurrogate !== -1) { uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320); leadSurrogate = -1; } else { uCode = UNASSIGNED; } } } else if (leadSurrogate !== -1) { nextChar = uCode; uCode = UNASSIGNED; leadSurrogate = -1; } var dbcsCode = UNASSIGNED; if (seqObj !== void 0 && uCode != UNASSIGNED) { var resCode = seqObj[uCode]; if (typeof resCode === "object") { seqObj = resCode; continue; } else if (typeof resCode == "number") { dbcsCode = resCode; } else if (resCode == void 0) { resCode = seqObj[DEF_CHAR]; if (resCode !== void 0) { dbcsCode = resCode; nextChar = uCode; } else { } } seqObj = void 0; } else if (uCode >= 0) { var subtable = this.encodeTable[uCode >> 8]; if (subtable !== void 0) dbcsCode = subtable[uCode & 255]; if (dbcsCode <= SEQ_START) { seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]; continue; } if (dbcsCode == UNASSIGNED && this.gb18030) { var idx = findIdx(this.gb18030.uChars, uCode); if (idx != -1) { var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); newBuf[j++] = 129 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; newBuf[j++] = 48 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; newBuf[j++] = 129 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; newBuf[j++] = 48 + dbcsCode; continue; } } } if (dbcsCode === UNASSIGNED) dbcsCode = this.defaultCharSingleByte; if (dbcsCode < 256) { newBuf[j++] = dbcsCode; } else if (dbcsCode < 65536) { newBuf[j++] = dbcsCode >> 8; newBuf[j++] = dbcsCode & 255; } else { newBuf[j++] = dbcsCode >> 16; newBuf[j++] = dbcsCode >> 8 & 255; newBuf[j++] = dbcsCode & 255; } } this.seqObj = seqObj; this.leadSurrogate = leadSurrogate; return newBuf.slice(0, j); }; DBCSEncoder.prototype.end = function() { if (this.leadSurrogate === -1 && this.seqObj === void 0) return; var newBuf = Buffer2.alloc(10), j = 0; if (this.seqObj) { var dbcsCode = this.seqObj[DEF_CHAR]; if (dbcsCode !== void 0) { if (dbcsCode < 256) { newBuf[j++] = dbcsCode; } else { newBuf[j++] = dbcsCode >> 8; newBuf[j++] = dbcsCode & 255; } } else { } this.seqObj = void 0; } if (this.leadSurrogate !== -1) { newBuf[j++] = this.defaultCharSingleByte; this.leadSurrogate = -1; } return newBuf.slice(0, j); }; DBCSEncoder.prototype.findIdx = findIdx; function DBCSDecoder(options, codec) { this.nodeIdx = 0; this.prevBuf = Buffer2.alloc(0); this.decodeTables = codec.decodeTables; this.decodeTableSeq = codec.decodeTableSeq; this.defaultCharUnicode = codec.defaultCharUnicode; this.gb18030 = codec.gb18030; } DBCSDecoder.prototype.write = function(buf) { var newBuf = Buffer2.alloc(buf.length * 2), nodeIdx = this.nodeIdx, prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, seqStart = -this.prevBuf.length, uCode; if (prevBufOffset > 0) prevBuf = Buffer2.concat([prevBuf, buf.slice(0, 10)]); for (var i2 = 0, j = 0; i2 < buf.length; i2++) { var curByte = i2 >= 0 ? buf[i2] : prevBuf[i2 + prevBufOffset]; var uCode = this.decodeTables[nodeIdx][curByte]; if (uCode >= 0) { } else if (uCode === UNASSIGNED) { i2 = seqStart; uCode = this.defaultCharUnicode.charCodeAt(0); } else if (uCode === GB18030_CODE) { var curSeq = seqStart >= 0 ? buf.slice(seqStart, i2 + 1) : prevBuf.slice(seqStart + prevBufOffset, i2 + 1 + prevBufOffset); var ptr = (curSeq[0] - 129) * 12600 + (curSeq[1] - 48) * 1260 + (curSeq[2] - 129) * 10 + (curSeq[3] - 48); var idx = findIdx(this.gb18030.gbChars, ptr); uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; } else if (uCode <= NODE_START) { nodeIdx = NODE_START - uCode; continue; } else if (uCode <= SEQ_START) { var seq = this.decodeTableSeq[SEQ_START - uCode]; for (var k = 0; k < seq.length - 1; k++) { uCode = seq[k]; newBuf[j++] = uCode & 255; newBuf[j++] = uCode >> 8; } uCode = seq[seq.length - 1]; } else throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); if (uCode > 65535) { uCode -= 65536; var uCodeLead = 55296 + Math.floor(uCode / 1024); newBuf[j++] = uCodeLead & 255; newBuf[j++] = uCodeLead >> 8; uCode = 56320 + uCode % 1024; } newBuf[j++] = uCode & 255; newBuf[j++] = uCode >> 8; nodeIdx = 0; seqStart = i2 + 1; } this.nodeIdx = nodeIdx; this.prevBuf = seqStart >= 0 ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); return newBuf.slice(0, j).toString("ucs2"); }; DBCSDecoder.prototype.end = function() { var ret = ""; while (this.prevBuf.length > 0) { ret += this.defaultCharUnicode; var buf = this.prevBuf.slice(1); this.prevBuf = Buffer2.alloc(0); this.nodeIdx = 0; if (buf.length > 0) ret += this.write(buf); } this.nodeIdx = 0; return ret; }; function findIdx(table, val) { if (table[0] > val) return -1; var l = 0, r = table.length; while (l < r - 1) { var mid = l + Math.floor((r - l + 1) / 2); if (table[mid] <= val) l = mid; else r = mid; } return l; } } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) { module2.exports = [ ["0", "\0", 128], ["a1", "\uFF61", 62], ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], ["81fc", "\u25EF"], ["824f", "\uFF10", 9], ["8260", "\uFF21", 25], ["8281", "\uFF41", 25], ["829f", "\u3041", 82], ["8340", "\u30A1", 62], ["8380", "\u30E0", 22], ["839f", "\u0391", 16, "\u03A3", 6], ["83bf", "\u03B1", 16, "\u03C3", 6], ["8440", "\u0410", 5, "\u0401\u0416", 25], ["8470", "\u0430", 5, "\u0451\u0436", 7], ["8480", "\u043E", 17], ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], ["8740", "\u2460", 19, "\u2160", 9], ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], ["877e", "\u337B"], ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], ["f040", "\uE000", 62], ["f080", "\uE03F", 124], ["f140", "\uE0BC", 62], ["f180", "\uE0FB", 124], ["f240", "\uE178", 62], ["f280", "\uE1B7", 124], ["f340", "\uE234", 62], ["f380", "\uE273", 124], ["f440", "\uE2F0", 62], ["f480", "\uE32F", 124], ["f540", "\uE3AC", 62], ["f580", "\uE3EB", 124], ["f640", "\uE468", 62], ["f680", "\uE4A7", 124], ["f740", "\uE524", 62], ["f780", "\uE563", 124], ["f840", "\uE5E0", 62], ["f880", "\uE61F", 124], ["f940", "\uE69C"], ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"] ]; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["8ea1", "\uFF61", 62], ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], ["a2fe", "\u25EF"], ["a3b0", "\uFF10", 9], ["a3c1", "\uFF21", 25], ["a3e1", "\uFF41", 25], ["a4a1", "\u3041", 82], ["a5a1", "\u30A1", 85], ["a6a1", "\u0391", 16, "\u03A3", 6], ["a6c1", "\u03B1", 16, "\u03C3", 6], ["a7a1", "\u0410", 5, "\u0401\u0416", 25], ["a7d1", "\u0430", 5, "\u0451\u0436", 25], ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], ["ada1", "\u2460", 19, "\u2160", 9], ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], ["8fa2c2", "\xA1\xA6\xBF"], ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], ["8fa6e7", "\u038C"], ["8fa6e9", "\u038E\u03AB"], ["8fa6ec", "\u038F"], ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], ["8fa7c2", "\u0402", 10, "\u040E\u040F"], ["8fa7f2", "\u0452", 10, "\u045E\u045F"], ["8fa9a1", "\xC6\u0110"], ["8fa9a4", "\u0126"], ["8fa9a6", "\u0132"], ["8fa9a8", "\u0141\u013F"], ["8fa9ab", "\u014A\xD8\u0152"], ["8fa9af", "\u0166\xDE"], ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"] ]; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json var require_cp936 = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127, "\u20AC"], ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], ["a2a1", "\u2170", 9], ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], ["a2e5", "\u3220", 9], ["a2f1", "\u2160", 11], ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], ["a4a1", "\u3041", 82], ["a5a1", "\u30A1", 85], ["a6a1", "\u0391", 16, "\u03A3", 6], ["a6c1", "\u03B1", 16, "\u03C3", 6], ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], ["a6f4", "\uFE33\uFE34"], ["a7a1", "\u0410", 5, "\u0401\u0416", 25], ["a7d1", "\u0430", 5, "\u0451\u0436", 25], ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], ["a8bd", "\u0144\u0148"], ["a8c0", "\u0261"], ["a8c5", "\u3105", 36], ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], ["a959", "\u2121\u3231"], ["a95c", "\u2010"], ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], ["a996", "\u3007"], ["a9a4", "\u2500", 75], ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], ["bd40", "\u7D37", 54, "\u7D6F", 7], ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], ["bf40", "\u7DFB", 62], ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], ["d640", "\u8AE4", 34, "\u8B08", 27], ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], ["d940", "\u8CAE", 62], ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], ["dd40", "\u8EE5", 62], ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], ["e240", "\u91E6", 62], ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], ["e340", "\u9246", 45, "\u9275", 16], ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], ["e540", "\u930A", 51, "\u933F", 10], ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], ["e640", "\u936C", 34, "\u9390", 27], ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], ["e740", "\u93CE", 7, "\u93D7", 54], ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], ["ee40", "\u980F", 62], ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], ["f240", "\u99FA", 62], ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], ["f540", "\u9B7C", 62], ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], ["f640", "\u9BDC", 62], ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], ["f740", "\u9C3C", 62], ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], ["f840", "\u9CE3", 62], ["f880", "\u9D22", 32], ["f940", "\u9D43", 62], ["f980", "\u9D82", 32], ["fa40", "\u9DA3", 62], ["fa80", "\u9DE2", 32], ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"] ]; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) { module2.exports = [ ["a140", "\uE4C6", 62], ["a180", "\uE505", 32], ["a240", "\uE526", 62], ["a280", "\uE565", 32], ["a2ab", "\uE766", 5], ["a2e3", "\u20AC\uE76D"], ["a2ef", "\uE76E\uE76F"], ["a2fd", "\uE770\uE771"], ["a340", "\uE586", 62], ["a380", "\uE5C5", 31, "\u3000"], ["a440", "\uE5E6", 62], ["a480", "\uE625", 32], ["a4f4", "\uE772", 10], ["a540", "\uE646", 62], ["a580", "\uE685", 32], ["a5f7", "\uE77D", 7], ["a640", "\uE6A6", 62], ["a680", "\uE6E5", 32], ["a6b9", "\uE785", 7], ["a6d9", "\uE78D", 6], ["a6ec", "\uE794\uE795"], ["a6f3", "\uE796"], ["a6f6", "\uE797", 8], ["a740", "\uE706", 62], ["a780", "\uE745", 32], ["a7c2", "\uE7A0", 14], ["a7f2", "\uE7AF", 12], ["a896", "\uE7BC", 10], ["a8bc", "\uE7C7"], ["a8bf", "\u01F9"], ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], ["a8ea", "\uE7CD", 20], ["a958", "\uE7E2"], ["a95b", "\uE7E3"], ["a95d", "\uE7E4\uE7E5\uE7E6"], ["a989", "\u303E\u2FF0", 11], ["a997", "\uE7F4", 12], ["a9f0", "\uE801", 14], ["aaa1", "\uE000", 93], ["aba1", "\uE05E", 93], ["aca1", "\uE0BC", 93], ["ada1", "\uE11A", 93], ["aea1", "\uE178", 93], ["afa1", "\uE1D6", 93], ["d7fa", "\uE810", 4], ["f8a1", "\uE234", 93], ["f9a1", "\uE292", 93], ["faa1", "\uE2F0", 93], ["fba1", "\uE34E", 93], ["fca1", "\uE3AC", 93], ["fda1", "\uE40A", 93], ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93] ]; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) { module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json var require_cp949 = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], ["8741", "\uB19E", 9, "\uB1A9", 15], ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], ["8d41", "\uB6C3", 16, "\uB6D5", 8], ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], ["8f41", "\uB885", 7, "\uB88E", 17], ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], ["9641", "\uBEB8", 23, "\uBED2\uBED3"], ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], ["9741", "\uBF83", 16, "\uBF95", 8], ["9761", "\uBF9E", 17, "\uBFB1", 7], ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], ["9b61", "\uC333", 17, "\uC346", 7], ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], ["9d61", "\uC4C6", 25], ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], ["a241", "\uC910\uC912", 5, "\uC919", 18], ["a261", "\uC92D", 6, "\uC935", 18], ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], ["a5b0", "\u2160", 9], ["a5c1", "\u0391", 16, "\u03A3", 6], ["a5e1", "\u03B1", 16, "\u03C3", 6], ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], ["a841", "\uCB6D", 10, "\uCB7A", 14], ["a861", "\uCB89", 18, "\uCB9D", 6], ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], ["a8a6", "\u0132"], ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], ["a941", "\uCBC5", 14, "\uCBD5", 10], ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], ["acd1", "\u0430", 5, "\u0451\u0436", 25], ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], ["b061", "\uCEBB", 5, "\uCEC2", 19], ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], ["b641", "\uD105", 7, "\uD10E", 17], ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], ["b841", "\uD1D0", 7, "\uD1D9", 17], ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], ["bf41", "\uD49E", 10, "\uD4AA", 14], ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], ["c061", "\uD51E", 25], ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"] ]; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json var require_cp950 = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], ["a3e1", "\u20AC"], ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"] ]; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) { module2.exports = [ ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], ["8940", "\u{2A3A9}\u{21145}"], ["8943", "\u650A"], ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], ["89ab", "\u918C\u78B8\u915E\u80BC"], ["89b0", "\u8D0B\u80F6\u{209E7}"], ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], ["89c1", "\u6E9A\u823E\u7519"], ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], ["8a40", "\u{27D84}\u5525"], ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], ["8cc9", "\u9868\u676B\u4276\u573D"], ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], ["8d40", "\u{20B9F}"], ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], ["9fae", "\u9159\u9681\u915C"], ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], ["9fe7", "\u6BFA\u8818\u7F78"], ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], ["a055", "\u{2183B}\u{26E05}"], ["a058", "\u8A7E\u{2251B}"], ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], ["a0ae", "\u77FE"], ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], ["a3c0", "\u2400", 31, "\u2421"], ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], ["f9fe", "\uFFED"], ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"] ]; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { // == Japanese/ShiftJIS ==================================================== // All japanese encodings are based on JIS X set of standards: // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. // Has several variations in 1978, 1983, 1990 and 1997. // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. // 2 planes, first is superset of 0208, second - revised 0212. // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) // Byte encodings are: // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. // 0x00-0x7F - lower part of 0201 // 0x8E, 0xA1-0xDF - upper part of 0201 // (0xA1-0xFE)x2 - 0208 plane (94x94). // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. // Used as-is in ISO2022 family. // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, // 0201-1976 Roman, 0208-1978, 0208-1983. // * ISO2022-JP-1: Adds esc seq for 0212-1990. // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. // // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. // // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html "shiftjis": { type: "_dbcs", table: function() { return require_shiftjis(); }, encodeAdd: { "\xA5": 92, "\u203E": 126 }, encodeSkipVals: [{ from: 60736, to: 63808 }] }, "csshiftjis": "shiftjis", "mskanji": "shiftjis", "sjis": "shiftjis", "windows31j": "shiftjis", "ms31j": "shiftjis", "xsjis": "shiftjis", "windows932": "shiftjis", "ms932": "shiftjis", "932": "shiftjis", "cp932": "shiftjis", "eucjp": { type: "_dbcs", table: function() { return require_eucjp(); }, encodeAdd: { "\xA5": 92, "\u203E": 126 } }, // TODO: KDDI extension to Shift_JIS // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. // == Chinese/GBK ========================================================== // http://en.wikipedia.org/wiki/GBK // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 "gb2312": "cp936", "gb231280": "cp936", "gb23121980": "cp936", "csgb2312": "cp936", "csiso58gb231280": "cp936", "euccn": "cp936", // Microsoft's CP936 is a subset and approximation of GBK. "windows936": "cp936", "ms936": "cp936", "936": "cp936", "cp936": { type: "_dbcs", table: function() { return require_cp936(); } }, // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. "gbk": { type: "_dbcs", table: function() { return require_cp936().concat(require_gbk_added()); } }, "xgbk": "gbk", "isoir58": "gbk", // GB18030 is an algorithmic extension of GBK. // Main source: https://www.w3.org/TR/encoding/#gbk-encoder // http://icu-project.org/docs/papers/gb18030.html // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 "gb18030": { type: "_dbcs", table: function() { return require_cp936().concat(require_gbk_added()); }, gb18030: function() { return require_gb18030_ranges(); }, encodeSkipVals: [128], encodeAdd: { "\u20AC": 41699 } }, "chinese": "gb18030", // == Korean =============================================================== // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. "windows949": "cp949", "ms949": "cp949", "949": "cp949", "cp949": { type: "_dbcs", table: function() { return require_cp949(); } }, "cseuckr": "cp949", "csksc56011987": "cp949", "euckr": "cp949", "isoir149": "cp949", "korean": "cp949", "ksc56011987": "cp949", "ksc56011989": "cp949", "ksc5601": "cp949", // == Big5/Taiwan/Hong Kong ================================================ // There are lots of tables for Big5 and cp950. Please see the following links for history: // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html // Variations, in roughly number of defined chars: // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ // * Big5-2003 (Taiwan standard) almost superset of cp950. // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. // Plus, it has 4 combining sequences. // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. // Implementations are not consistent within browsers; sometimes labeled as just big5. // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt // // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. "windows950": "cp950", "ms950": "cp950", "950": "cp950", "cp950": { type: "_dbcs", table: function() { return require_cp950(); } }, // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. "big5": "big5hkscs", "big5hkscs": { type: "_dbcs", table: function() { return require_cp950().concat(require_big5_added()); }, encodeSkipVals: [41676] }, "cnbig5": "big5hkscs", "csbig5": "big5hkscs", "xxbig5": "big5hkscs" }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/index.js var require_encodings = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/encodings/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var modules = [ require_internal(), require_utf16(), require_utf7(), require_sbcs_codec(), require_sbcs_data(), require_sbcs_data_generated(), require_dbcs_codec(), require_dbcs_data() ]; for (i = 0; i < modules.length; i++) { module2 = modules[i]; for (enc in module2) if (Object.prototype.hasOwnProperty.call(module2, enc)) exports2[enc] = module2[enc]; } var module2; var enc; var i; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/lib/streams.js var require_streams = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/lib/streams.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require("buffer").Buffer; var Transform = require("stream").Transform; module2.exports = function(iconv) { iconv.encodeStream = function encodeStream(encoding, options) { return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); }; iconv.decodeStream = function decodeStream(encoding, options) { return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); }; iconv.supportsStreams = true; iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; iconv._collect = IconvLiteDecoderStream.prototype.collect; }; function IconvLiteEncoderStream(conv, options) { this.conv = conv; options = options || {}; options.decodeStrings = false; Transform.call(this, options); } IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { constructor: { value: IconvLiteEncoderStream } }); IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { if (typeof chunk != "string") return done(new Error("Iconv encoding stream needs strings as its input.")); try { var res = this.conv.write(chunk); if (res && res.length) this.push(res); done(); } catch (e) { done(e); } }; IconvLiteEncoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); if (res && res.length) this.push(res); done(); } catch (e) { done(e); } }; IconvLiteEncoderStream.prototype.collect = function(cb) { var chunks = []; this.on("error", cb); this.on("data", function(chunk) { chunks.push(chunk); }); this.on("end", function() { cb(null, Buffer2.concat(chunks)); }); return this; }; function IconvLiteDecoderStream(conv, options) { this.conv = conv; options = options || {}; options.encoding = this.encoding = "utf8"; Transform.call(this, options); } IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { constructor: { value: IconvLiteDecoderStream } }); IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { if (!Buffer2.isBuffer(chunk)) return done(new Error("Iconv decoding stream needs buffers as its input.")); try { var res = this.conv.write(chunk); if (res && res.length) this.push(res, this.encoding); done(); } catch (e) { done(e); } }; IconvLiteDecoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); if (res && res.length) this.push(res, this.encoding); done(); } catch (e) { done(e); } }; IconvLiteDecoderStream.prototype.collect = function(cb) { var res = ""; this.on("error", cb); this.on("data", function(chunk) { res += chunk; }); this.on("end", function() { cb(null, res); }); return this; }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js var require_extend_node = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/lib/extend-node.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require("buffer").Buffer; module2.exports = function(iconv) { var original = void 0; iconv.supportsNodeEncodingsExtension = !(Buffer2.from || new Buffer2(0) instanceof Uint8Array); iconv.extendNodeEncodings = function extendNodeEncodings() { if (original) return; original = {}; if (!iconv.supportsNodeEncodingsExtension) { console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); return; } var nodeNativeEncodings = { "hex": true, "utf8": true, "utf-8": true, "ascii": true, "binary": true, "base64": true, "ucs2": true, "ucs-2": true, "utf16le": true, "utf-16le": true }; Buffer2.isNativeEncoding = function(enc) { return enc && nodeNativeEncodings[enc.toLowerCase()]; }; var SlowBuffer = require("buffer").SlowBuffer; original.SlowBufferToString = SlowBuffer.prototype.toString; SlowBuffer.prototype.toString = function(encoding, start, end) { encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.SlowBufferToString.call(this, encoding, start, end); if (typeof start == "undefined") start = 0; if (typeof end == "undefined") end = this.length; return iconv.decode(this.slice(start, end), encoding); }; original.SlowBufferWrite = SlowBuffer.prototype.write; SlowBuffer.prototype.write = function(string, offset, length, encoding) { if (isFinite(offset)) { if (!isFinite(length)) { encoding = length; length = void 0; } } else { var swap = encoding; encoding = offset; offset = length; length = swap; } offset = +offset || 0; var remaining = this.length - offset; if (!length) { length = remaining; } else { length = +length; if (length > remaining) { length = remaining; } } encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.SlowBufferWrite.call(this, string, offset, length, encoding); if (string.length > 0 && (length < 0 || offset < 0)) throw new RangeError("attempt to write beyond buffer bounds"); var buf = iconv.encode(string, encoding); if (buf.length < length) length = buf.length; buf.copy(this, offset, 0, length); return length; }; original.BufferIsEncoding = Buffer2.isEncoding; Buffer2.isEncoding = function(encoding) { return Buffer2.isNativeEncoding(encoding) || iconv.encodingExists(encoding); }; original.BufferByteLength = Buffer2.byteLength; Buffer2.byteLength = SlowBuffer.byteLength = function(str, encoding) { encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.BufferByteLength.call(this, str, encoding); return iconv.encode(str, encoding).length; }; original.BufferToString = Buffer2.prototype.toString; Buffer2.prototype.toString = function(encoding, start, end) { encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.BufferToString.call(this, encoding, start, end); if (typeof start == "undefined") start = 0; if (typeof end == "undefined") end = this.length; return iconv.decode(this.slice(start, end), encoding); }; original.BufferWrite = Buffer2.prototype.write; Buffer2.prototype.write = function(string, offset, length, encoding) { var _offset = offset, _length = length, _encoding = encoding; if (isFinite(offset)) { if (!isFinite(length)) { encoding = length; length = void 0; } } else { var swap = encoding; encoding = offset; offset = length; length = swap; } encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.BufferWrite.call(this, string, _offset, _length, _encoding); offset = +offset || 0; var remaining = this.length - offset; if (!length) { length = remaining; } else { length = +length; if (length > remaining) { length = remaining; } } if (string.length > 0 && (length < 0 || offset < 0)) throw new RangeError("attempt to write beyond buffer bounds"); var buf = iconv.encode(string, encoding); if (buf.length < length) length = buf.length; buf.copy(this, offset, 0, length); return length; }; if (iconv.supportsStreams) { var Readable = require("stream").Readable; original.ReadableSetEncoding = Readable.prototype.setEncoding; Readable.prototype.setEncoding = function setEncoding(enc, options) { this._readableState.decoder = iconv.getDecoder(enc, options); this._readableState.encoding = enc; }; Readable.prototype.collect = iconv._collect; } }; iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { if (!iconv.supportsNodeEncodingsExtension) return; if (!original) throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called."); delete Buffer2.isNativeEncoding; var SlowBuffer = require("buffer").SlowBuffer; SlowBuffer.prototype.toString = original.SlowBufferToString; SlowBuffer.prototype.write = original.SlowBufferWrite; Buffer2.isEncoding = original.BufferIsEncoding; Buffer2.byteLength = original.BufferByteLength; Buffer2.prototype.toString = original.BufferToString; Buffer2.prototype.write = original.BufferWrite; if (iconv.supportsStreams) { var Readable = require("stream").Readable; Readable.prototype.setEncoding = original.ReadableSetEncoding; delete Readable.prototype.collect; } original = void 0; }; }; } }); // ../backend/node_modules/raw-body/node_modules/iconv-lite/lib/index.js var require_lib = __commonJS({ "../backend/node_modules/raw-body/node_modules/iconv-lite/lib/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; var bomHandling = require_bom_handling(); var iconv = module2.exports; iconv.encodings = null; iconv.defaultCharUnicode = "\uFFFD"; iconv.defaultCharSingleByte = "?"; iconv.encode = function encode(str, encoding, options) { str = "" + (str || ""); var encoder2 = iconv.getEncoder(encoding, options); var res = encoder2.write(str); var trail = encoder2.end(); return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res; }; iconv.decode = function decode(buf, encoding, options) { if (typeof buf === "string") { if (!iconv.skipDecodeWarning) { console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); iconv.skipDecodeWarning = true; } buf = Buffer2.from("" + (buf || ""), "binary"); } var decoder = iconv.getDecoder(encoding, options); var res = decoder.write(buf); var trail = decoder.end(); return trail ? res + trail : res; }; iconv.encodingExists = function encodingExists(enc) { try { iconv.getCodec(enc); return true; } catch (e) { return false; } }; iconv.toEncoding = iconv.encode; iconv.fromEncoding = iconv.decode; iconv._codecDataCache = {}; iconv.getCodec = function getCodec(encoding) { if (!iconv.encodings) iconv.encodings = require_encodings(); var enc = iconv._canonicalizeEncoding(encoding); var codecOptions = {}; while (true) { var codec = iconv._codecDataCache[enc]; if (codec) return codec; var codecDef = iconv.encodings[enc]; switch (typeof codecDef) { case "string": enc = codecDef; break; case "object": for (var key in codecDef) codecOptions[key] = codecDef[key]; if (!codecOptions.encodingName) codecOptions.encodingName = enc; enc = codecDef.type; break; case "function": if (!codecOptions.encodingName) codecOptions.encodingName = enc; codec = new codecDef(codecOptions, iconv); iconv._codecDataCache[codecOptions.encodingName] = codec; return codec; default: throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')"); } } }; iconv._canonicalizeEncoding = function(encoding) { return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); }; iconv.getEncoder = function getEncoder(encoding, options) { var codec = iconv.getCodec(encoding), encoder2 = new codec.encoder(options, codec); if (codec.bomAware && options && options.addBOM) encoder2 = new bomHandling.PrependBOM(encoder2, options); return encoder2; }; iconv.getDecoder = function getDecoder(encoding, options) { var codec = iconv.getCodec(encoding), decoder = new codec.decoder(options, codec); if (codec.bomAware && !(options && options.stripBOM === false)) decoder = new bomHandling.StripBOM(decoder, options); return decoder; }; var nodeVer = typeof process !== "undefined" && process.versions && process.versions.node; if (nodeVer) { nodeVerArr = nodeVer.split(".").map(Number); if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { require_streams()(iconv); } require_extend_node()(iconv); } var nodeVerArr; if (false) { console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); } } }); // ../backend/node_modules/unpipe/index.js var require_unpipe = __commonJS({ "../backend/node_modules/unpipe/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = unpipe; function hasPipeDataListeners(stream) { var listeners = stream.listeners("data"); for (var i = 0; i < listeners.length; i++) { if (listeners[i].name === "ondata") { return true; } } return false; } function unpipe(stream) { if (!stream) { throw new TypeError("argument stream is required"); } if (typeof stream.unpipe === "function") { stream.unpipe(); return; } if (!hasPipeDataListeners(stream)) { return; } var listener; var listeners = stream.listeners("close"); for (var i = 0; i < listeners.length; i++) { listener = listeners[i]; if (listener.name !== "cleanup" && listener.name !== "onclose") { continue; } listener.call(stream); } } } }); // ../backend/node_modules/raw-body/index.js var require_raw_body = __commonJS({ "../backend/node_modules/raw-body/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var asyncHooks = tryRequireAsyncHooks(); var bytes = require_bytes(); var createError2 = require_http_errors(); var iconv = require_lib(); var unpipe = require_unpipe(); module2.exports = getRawBody; var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /; function getDecoder(encoding) { if (!encoding) return null; try { return iconv.getDecoder(encoding); } catch (e) { if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e; throw createError2(415, "specified encoding unsupported", { encoding, type: "encoding.unsupported" }); } } function getRawBody(stream, options, callback) { var done = callback; var opts = options || {}; if (stream === void 0) { throw new TypeError("argument stream is required"); } else if (typeof stream !== "object" || stream === null || typeof stream.on !== "function") { throw new TypeError("argument stream must be a stream"); } if (options === true || typeof options === "string") { opts = { encoding: options }; } if (typeof options === "function") { done = options; opts = {}; } if (done !== void 0 && typeof done !== "function") { throw new TypeError("argument callback must be a function"); } if (!done && !global.Promise) { throw new TypeError("argument callback is required"); } var encoding = opts.encoding !== true ? opts.encoding : "utf-8"; var limit = bytes.parse(opts.limit); var length = opts.length != null && !isNaN(opts.length) ? parseInt(opts.length, 10) : null; if (done) { return readStream(stream, encoding, length, limit, wrap(done)); } return new Promise(function executor(resolve, reject) { readStream(stream, encoding, length, limit, function onRead(err, buf) { if (err) return reject(err); resolve(buf); }); }); } function halt(stream) { unpipe(stream); if (typeof stream.pause === "function") { stream.pause(); } } function readStream(stream, encoding, length, limit, callback) { var complete = false; var sync = true; if (limit !== null && length !== null && length > limit) { return done(createError2(413, "request entity too large", { expected: length, length, limit, type: "entity.too.large" })); } var state2 = stream._readableState; if (stream._decoder || state2 && (state2.encoding || state2.decoder)) { return done(createError2(500, "stream encoding should not be set", { type: "stream.encoding.set" })); } if (typeof stream.readable !== "undefined" && !stream.readable) { return done(createError2(500, "stream is not readable", { type: "stream.not.readable" })); } var received = 0; var decoder; try { decoder = getDecoder(encoding); } catch (err) { return done(err); } var buffer = decoder ? "" : []; stream.on("aborted", onAborted); stream.on("close", cleanup); stream.on("data", onData); stream.on("end", onEnd); stream.on("error", onEnd); sync = false; function done() { var args = new Array(arguments.length); for (var i = 0; i < args.length; i++) { args[i] = arguments[i]; } complete = true; if (sync) { process.nextTick(invokeCallback); } else { invokeCallback(); } function invokeCallback() { cleanup(); if (args[0]) { halt(stream); } callback.apply(null, args); } } function onAborted() { if (complete) return; done(createError2(400, "request aborted", { code: "ECONNABORTED", expected: length, length, received, type: "request.aborted" })); } function onData(chunk) { if (complete) return; received += chunk.length; if (limit !== null && received > limit) { done(createError2(413, "request entity too large", { limit, received, type: "entity.too.large" })); } else if (decoder) { buffer += decoder.write(chunk); } else { buffer.push(chunk); } } function onEnd(err) { if (complete) return; if (err) return done(err); if (length !== null && received !== length) { done(createError2(400, "request size did not match content length", { expected: length, length, received, type: "request.size.invalid" })); } else { var string = decoder ? buffer + (decoder.end() || "") : Buffer.concat(buffer); done(null, string); } } function cleanup() { buffer = null; stream.removeListener("aborted", onAborted); stream.removeListener("data", onData); stream.removeListener("end", onEnd); stream.removeListener("error", onEnd); stream.removeListener("close", cleanup); } } function tryRequireAsyncHooks() { try { return require("async_hooks"); } catch (e) { return {}; } } function wrap(fn) { var res; if (asyncHooks.AsyncResource) { res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); } if (!res || !res.runInAsyncScope) { return fn; } return res.runInAsyncScope.bind(res, fn, null); } } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/lib/bom-handling.js var require_bom_handling2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/lib/bom-handling.js"(exports2) { "use strict"; init_define_import_meta_env(); var BOMChar = "\uFEFF"; exports2.PrependBOM = PrependBOMWrapper; function PrependBOMWrapper(encoder2, options) { this.encoder = encoder2; this.addBOM = true; } PrependBOMWrapper.prototype.write = function(str) { if (this.addBOM) { str = BOMChar + str; this.addBOM = false; } return this.encoder.write(str); }; PrependBOMWrapper.prototype.end = function() { return this.encoder.end(); }; exports2.StripBOM = StripBOMWrapper; function StripBOMWrapper(decoder, options) { this.decoder = decoder; this.pass = false; this.options = options || {}; } StripBOMWrapper.prototype.write = function(buf) { var res = this.decoder.write(buf); if (this.pass || !res) return res; if (res[0] === BOMChar) { res = res.slice(1); if (typeof this.options.stripBOM === "function") this.options.stripBOM(); } this.pass = true; return res; }; StripBOMWrapper.prototype.end = function() { return this.decoder.end(); }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/internal.js var require_internal2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/internal.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; module2.exports = { // Encodings utf8: { type: "_internal", bomAware: true }, cesu8: { type: "_internal", bomAware: true }, unicode11utf8: "utf8", ucs2: { type: "_internal", bomAware: true }, utf16le: "ucs2", binary: { type: "_internal" }, base64: { type: "_internal" }, hex: { type: "_internal" }, // Codec. _internal: InternalCodec }; function InternalCodec(codecOptions, iconv) { this.enc = codecOptions.encodingName; this.bomAware = codecOptions.bomAware; if (this.enc === "base64") this.encoder = InternalEncoderBase64; else if (this.enc === "cesu8") { this.enc = "utf8"; this.encoder = InternalEncoderCesu8; if (Buffer2.from("eda0bdedb2a9", "hex").toString() !== "\u{1F4A9}") { this.decoder = InternalDecoderCesu8; this.defaultCharUnicode = iconv.defaultCharUnicode; } } } InternalCodec.prototype.encoder = InternalEncoder; InternalCodec.prototype.decoder = InternalDecoder; var StringDecoder = require("string_decoder").StringDecoder; if (!StringDecoder.prototype.end) StringDecoder.prototype.end = function() { }; function InternalDecoder(options, codec) { StringDecoder.call(this, codec.enc); } InternalDecoder.prototype = StringDecoder.prototype; function InternalEncoder(options, codec) { this.enc = codec.enc; } InternalEncoder.prototype.write = function(str) { return Buffer2.from(str, this.enc); }; InternalEncoder.prototype.end = function() { }; function InternalEncoderBase64(options, codec) { this.prevStr = ""; } InternalEncoderBase64.prototype.write = function(str) { str = this.prevStr + str; var completeQuads = str.length - str.length % 4; this.prevStr = str.slice(completeQuads); str = str.slice(0, completeQuads); return Buffer2.from(str, "base64"); }; InternalEncoderBase64.prototype.end = function() { return Buffer2.from(this.prevStr, "base64"); }; function InternalEncoderCesu8(options, codec) { } InternalEncoderCesu8.prototype.write = function(str) { var buf = Buffer2.alloc(str.length * 3), bufIdx = 0; for (var i = 0; i < str.length; i++) { var charCode = str.charCodeAt(i); if (charCode < 128) buf[bufIdx++] = charCode; else if (charCode < 2048) { buf[bufIdx++] = 192 + (charCode >>> 6); buf[bufIdx++] = 128 + (charCode & 63); } else { buf[bufIdx++] = 224 + (charCode >>> 12); buf[bufIdx++] = 128 + (charCode >>> 6 & 63); buf[bufIdx++] = 128 + (charCode & 63); } } return buf.slice(0, bufIdx); }; InternalEncoderCesu8.prototype.end = function() { }; function InternalDecoderCesu8(options, codec) { this.acc = 0; this.contBytes = 0; this.accBytes = 0; this.defaultCharUnicode = codec.defaultCharUnicode; } InternalDecoderCesu8.prototype.write = function(buf) { var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, res = ""; for (var i = 0; i < buf.length; i++) { var curByte = buf[i]; if ((curByte & 192) !== 128) { if (contBytes > 0) { res += this.defaultCharUnicode; contBytes = 0; } if (curByte < 128) { res += String.fromCharCode(curByte); } else if (curByte < 224) { acc = curByte & 31; contBytes = 1; accBytes = 1; } else if (curByte < 240) { acc = curByte & 15; contBytes = 2; accBytes = 1; } else { res += this.defaultCharUnicode; } } else { if (contBytes > 0) { acc = acc << 6 | curByte & 63; contBytes--; accBytes++; if (contBytes === 0) { if (accBytes === 2 && acc < 128 && acc > 0) res += this.defaultCharUnicode; else if (accBytes === 3 && acc < 2048) res += this.defaultCharUnicode; else res += String.fromCharCode(acc); } } else { res += this.defaultCharUnicode; } } } this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes; return res; }; InternalDecoderCesu8.prototype.end = function() { var res = 0; if (this.contBytes > 0) res += this.defaultCharUnicode; return res; }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/utf16.js var require_utf162 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/utf16.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2.utf16be = Utf16BECodec; function Utf16BECodec() { } Utf16BECodec.prototype.encoder = Utf16BEEncoder; Utf16BECodec.prototype.decoder = Utf16BEDecoder; Utf16BECodec.prototype.bomAware = true; function Utf16BEEncoder() { } Utf16BEEncoder.prototype.write = function(str) { var buf = Buffer2.from(str, "ucs2"); for (var i = 0; i < buf.length; i += 2) { var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp; } return buf; }; Utf16BEEncoder.prototype.end = function() { }; function Utf16BEDecoder() { this.overflowByte = -1; } Utf16BEDecoder.prototype.write = function(buf) { if (buf.length == 0) return ""; var buf2 = Buffer2.alloc(buf.length + 1), i = 0, j = 0; if (this.overflowByte !== -1) { buf2[0] = buf[0]; buf2[1] = this.overflowByte; i = 1; j = 2; } for (; i < buf.length - 1; i += 2, j += 2) { buf2[j] = buf[i + 1]; buf2[j + 1] = buf[i]; } this.overflowByte = i == buf.length - 1 ? buf[buf.length - 1] : -1; return buf2.slice(0, j).toString("ucs2"); }; Utf16BEDecoder.prototype.end = function() { }; exports2.utf16 = Utf16Codec; function Utf16Codec(codecOptions, iconv) { this.iconv = iconv; } Utf16Codec.prototype.encoder = Utf16Encoder; Utf16Codec.prototype.decoder = Utf16Decoder; function Utf16Encoder(options, codec) { options = options || {}; if (options.addBOM === void 0) options.addBOM = true; this.encoder = codec.iconv.getEncoder("utf-16le", options); } Utf16Encoder.prototype.write = function(str) { return this.encoder.write(str); }; Utf16Encoder.prototype.end = function() { return this.encoder.end(); }; function Utf16Decoder(options, codec) { this.decoder = null; this.initialBytes = []; this.initialBytesLen = 0; this.options = options || {}; this.iconv = codec.iconv; } Utf16Decoder.prototype.write = function(buf) { if (!this.decoder) { this.initialBytes.push(buf); this.initialBytesLen += buf.length; if (this.initialBytesLen < 16) return ""; var buf = Buffer2.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding); this.decoder = this.iconv.getDecoder(encoding, this.options); this.initialBytes.length = this.initialBytesLen = 0; } return this.decoder.write(buf); }; Utf16Decoder.prototype.end = function() { if (!this.decoder) { var buf = Buffer2.concat(this.initialBytes), encoding = detectEncoding(buf, this.options.defaultEncoding); this.decoder = this.iconv.getDecoder(encoding, this.options); var res = this.decoder.write(buf), trail = this.decoder.end(); return trail ? res + trail : res; } return this.decoder.end(); }; function detectEncoding(buf, defaultEncoding) { var enc = defaultEncoding || "utf-16le"; if (buf.length >= 2) { if (buf[0] == 254 && buf[1] == 255) enc = "utf-16be"; else if (buf[0] == 255 && buf[1] == 254) enc = "utf-16le"; else { var asciiCharsLE = 0, asciiCharsBE = 0, _len = Math.min(buf.length - buf.length % 2, 64); for (var i = 0; i < _len; i += 2) { if (buf[i] === 0 && buf[i + 1] !== 0) asciiCharsBE++; if (buf[i] !== 0 && buf[i + 1] === 0) asciiCharsLE++; } if (asciiCharsBE > asciiCharsLE) enc = "utf-16be"; else if (asciiCharsBE < asciiCharsLE) enc = "utf-16le"; } } return enc; } } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/utf7.js var require_utf72 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/utf7.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2.utf7 = Utf7Codec; exports2.unicode11utf7 = "utf7"; function Utf7Codec(codecOptions, iconv) { this.iconv = iconv; } Utf7Codec.prototype.encoder = Utf7Encoder; Utf7Codec.prototype.decoder = Utf7Decoder; Utf7Codec.prototype.bomAware = true; var nonDirectChars = /[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g; function Utf7Encoder(options, codec) { this.iconv = codec.iconv; } Utf7Encoder.prototype.write = function(str) { return Buffer2.from(str.replace(nonDirectChars, function(chunk) { return "+" + (chunk === "+" ? "" : this.iconv.encode(chunk, "utf16-be").toString("base64").replace(/=+$/, "")) + "-"; }.bind(this))); }; Utf7Encoder.prototype.end = function() { }; function Utf7Decoder(options, codec) { this.iconv = codec.iconv; this.inBase64 = false; this.base64Accum = ""; } var base64Regex = /[A-Za-z0-9\/+]/; var base64Chars = []; for (i = 0; i < 256; i++) base64Chars[i] = base64Regex.test(String.fromCharCode(i)); var i; var plusChar = "+".charCodeAt(0); var minusChar = "-".charCodeAt(0); var andChar = "&".charCodeAt(0); Utf7Decoder.prototype.write = function(buf) { var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; for (var i2 = 0; i2 < buf.length; i2++) { if (!inBase64) { if (buf[i2] == plusChar) { res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); lastI = i2 + 1; inBase64 = true; } } else { if (!base64Chars[buf[i2]]) { if (i2 == lastI && buf[i2] == minusChar) { res += "+"; } else { var b64str = base64Accum + buf.slice(lastI, i2).toString(); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } if (buf[i2] != minusChar) i2--; lastI = i2 + 1; inBase64 = false; base64Accum = ""; } } } if (!inBase64) { res += this.iconv.decode(buf.slice(lastI), "ascii"); } else { var b64str = base64Accum + buf.slice(lastI).toString(); var canBeDecoded = b64str.length - b64str.length % 8; base64Accum = b64str.slice(canBeDecoded); b64str = b64str.slice(0, canBeDecoded); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } this.inBase64 = inBase64; this.base64Accum = base64Accum; return res; }; Utf7Decoder.prototype.end = function() { var res = ""; if (this.inBase64 && this.base64Accum.length > 0) res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); this.inBase64 = false; this.base64Accum = ""; return res; }; exports2.utf7imap = Utf7IMAPCodec; function Utf7IMAPCodec(codecOptions, iconv) { this.iconv = iconv; } Utf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder; Utf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder; Utf7IMAPCodec.prototype.bomAware = true; function Utf7IMAPEncoder(options, codec) { this.iconv = codec.iconv; this.inBase64 = false; this.base64Accum = Buffer2.alloc(6); this.base64AccumIdx = 0; } Utf7IMAPEncoder.prototype.write = function(str) { var inBase64 = this.inBase64, base64Accum = this.base64Accum, base64AccumIdx = this.base64AccumIdx, buf = Buffer2.alloc(str.length * 5 + 10), bufIdx = 0; for (var i2 = 0; i2 < str.length; i2++) { var uChar = str.charCodeAt(i2); if (32 <= uChar && uChar <= 126) { if (inBase64) { if (base64AccumIdx > 0) { bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); base64AccumIdx = 0; } buf[bufIdx++] = minusChar; inBase64 = false; } if (!inBase64) { buf[bufIdx++] = uChar; if (uChar === andChar) buf[bufIdx++] = minusChar; } } else { if (!inBase64) { buf[bufIdx++] = andChar; inBase64 = true; } if (inBase64) { base64Accum[base64AccumIdx++] = uChar >> 8; base64Accum[base64AccumIdx++] = uChar & 255; if (base64AccumIdx == base64Accum.length) { bufIdx += buf.write(base64Accum.toString("base64").replace(/\//g, ","), bufIdx); base64AccumIdx = 0; } } } } this.inBase64 = inBase64; this.base64AccumIdx = base64AccumIdx; return buf.slice(0, bufIdx); }; Utf7IMAPEncoder.prototype.end = function() { var buf = Buffer2.alloc(10), bufIdx = 0; if (this.inBase64) { if (this.base64AccumIdx > 0) { bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString("base64").replace(/\//g, ",").replace(/=+$/, ""), bufIdx); this.base64AccumIdx = 0; } buf[bufIdx++] = minusChar; this.inBase64 = false; } return buf.slice(0, bufIdx); }; function Utf7IMAPDecoder(options, codec) { this.iconv = codec.iconv; this.inBase64 = false; this.base64Accum = ""; } var base64IMAPChars = base64Chars.slice(); base64IMAPChars[",".charCodeAt(0)] = true; Utf7IMAPDecoder.prototype.write = function(buf) { var res = "", lastI = 0, inBase64 = this.inBase64, base64Accum = this.base64Accum; for (var i2 = 0; i2 < buf.length; i2++) { if (!inBase64) { if (buf[i2] == andChar) { res += this.iconv.decode(buf.slice(lastI, i2), "ascii"); lastI = i2 + 1; inBase64 = true; } } else { if (!base64IMAPChars[buf[i2]]) { if (i2 == lastI && buf[i2] == minusChar) { res += "&"; } else { var b64str = base64Accum + buf.slice(lastI, i2).toString().replace(/,/g, "/"); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } if (buf[i2] != minusChar) i2--; lastI = i2 + 1; inBase64 = false; base64Accum = ""; } } } if (!inBase64) { res += this.iconv.decode(buf.slice(lastI), "ascii"); } else { var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, "/"); var canBeDecoded = b64str.length - b64str.length % 8; base64Accum = b64str.slice(canBeDecoded); b64str = b64str.slice(0, canBeDecoded); res += this.iconv.decode(Buffer2.from(b64str, "base64"), "utf16-be"); } this.inBase64 = inBase64; this.base64Accum = base64Accum; return res; }; Utf7IMAPDecoder.prototype.end = function() { var res = ""; if (this.inBase64 && this.base64Accum.length > 0) res = this.iconv.decode(Buffer2.from(this.base64Accum, "base64"), "utf16-be"); this.inBase64 = false; this.base64Accum = ""; return res; }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-codec.js var require_sbcs_codec2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-codec.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2._sbcs = SBCSCodec; function SBCSCodec(codecOptions, iconv) { if (!codecOptions) throw new Error("SBCS codec is called without the data."); if (!codecOptions.chars || codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256) throw new Error("Encoding '" + codecOptions.type + "' has incorrect 'chars' (must be of len 128 or 256)"); if (codecOptions.chars.length === 128) { var asciiString = ""; for (var i = 0; i < 128; i++) asciiString += String.fromCharCode(i); codecOptions.chars = asciiString + codecOptions.chars; } this.decodeBuf = Buffer2.from(codecOptions.chars, "ucs2"); var encodeBuf = Buffer2.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0)); for (var i = 0; i < codecOptions.chars.length; i++) encodeBuf[codecOptions.chars.charCodeAt(i)] = i; this.encodeBuf = encodeBuf; } SBCSCodec.prototype.encoder = SBCSEncoder; SBCSCodec.prototype.decoder = SBCSDecoder; function SBCSEncoder(options, codec) { this.encodeBuf = codec.encodeBuf; } SBCSEncoder.prototype.write = function(str) { var buf = Buffer2.alloc(str.length); for (var i = 0; i < str.length; i++) buf[i] = this.encodeBuf[str.charCodeAt(i)]; return buf; }; SBCSEncoder.prototype.end = function() { }; function SBCSDecoder(options, codec) { this.decodeBuf = codec.decodeBuf; } SBCSDecoder.prototype.write = function(buf) { var decodeBuf = this.decodeBuf; var newBuf = Buffer2.alloc(buf.length * 2); var idx1 = 0, idx2 = 0; for (var i = 0; i < buf.length; i++) { idx1 = buf[i] * 2; idx2 = i * 2; newBuf[idx2] = decodeBuf[idx1]; newBuf[idx2 + 1] = decodeBuf[idx1 + 1]; } return newBuf.toString("ucs2"); }; SBCSDecoder.prototype.end = function() { }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data.js var require_sbcs_data2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { // Not supported by iconv, not sure why. "10029": "maccenteuro", "maccenteuro": { "type": "_sbcs", "chars": "\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7" }, "808": "cp808", "ibm808": "cp808", "cp808": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0" }, "mik": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, // Aliases of generated encodings. "ascii8bit": "ascii", "usascii": "ascii", "ansix34": "ascii", "ansix341968": "ascii", "ansix341986": "ascii", "csascii": "ascii", "cp367": "ascii", "ibm367": "ascii", "isoir6": "ascii", "iso646us": "ascii", "iso646irv": "ascii", "us": "ascii", "latin1": "iso88591", "latin2": "iso88592", "latin3": "iso88593", "latin4": "iso88594", "latin5": "iso88599", "latin6": "iso885910", "latin7": "iso885913", "latin8": "iso885914", "latin9": "iso885915", "latin10": "iso885916", "csisolatin1": "iso88591", "csisolatin2": "iso88592", "csisolatin3": "iso88593", "csisolatin4": "iso88594", "csisolatincyrillic": "iso88595", "csisolatinarabic": "iso88596", "csisolatingreek": "iso88597", "csisolatinhebrew": "iso88598", "csisolatin5": "iso88599", "csisolatin6": "iso885910", "l1": "iso88591", "l2": "iso88592", "l3": "iso88593", "l4": "iso88594", "l5": "iso88599", "l6": "iso885910", "l7": "iso885913", "l8": "iso885914", "l9": "iso885915", "l10": "iso885916", "isoir14": "iso646jp", "isoir57": "iso646cn", "isoir100": "iso88591", "isoir101": "iso88592", "isoir109": "iso88593", "isoir110": "iso88594", "isoir144": "iso88595", "isoir127": "iso88596", "isoir126": "iso88597", "isoir138": "iso88598", "isoir148": "iso88599", "isoir157": "iso885910", "isoir166": "tis620", "isoir179": "iso885913", "isoir199": "iso885914", "isoir203": "iso885915", "isoir226": "iso885916", "cp819": "iso88591", "ibm819": "iso88591", "cyrillic": "iso88595", "arabic": "iso88596", "arabic8": "iso88596", "ecma114": "iso88596", "asmo708": "iso88596", "greek": "iso88597", "greek8": "iso88597", "ecma118": "iso88597", "elot928": "iso88597", "hebrew": "iso88598", "hebrew8": "iso88598", "turkish": "iso88599", "turkish8": "iso88599", "thai": "iso885911", "thai8": "iso885911", "celtic": "iso885914", "celtic8": "iso885914", "isoceltic": "iso885914", "tis6200": "tis620", "tis62025291": "tis620", "tis62025330": "tis620", "10000": "macroman", "10006": "macgreek", "10007": "maccyrillic", "10079": "maciceland", "10081": "macturkish", "cspc8codepage437": "cp437", "cspc775baltic": "cp775", "cspc850multilingual": "cp850", "cspcp852": "cp852", "cspc862latinhebrew": "cp862", "cpgr": "cp869", "msee": "cp1250", "mscyrl": "cp1251", "msansi": "cp1252", "msgreek": "cp1253", "msturk": "cp1254", "mshebr": "cp1255", "msarab": "cp1256", "winbaltrim": "cp1257", "cp20866": "koi8r", "20866": "koi8r", "ibm878": "koi8r", "cskoi8r": "koi8r", "cp21866": "koi8u", "21866": "koi8u", "ibm1168": "koi8u", "strk10482002": "rk1048", "tcvn5712": "tcvn", "tcvn57121": "tcvn", "gb198880": "iso646cn", "cn": "iso646cn", "csiso14jisc6220ro": "iso646jp", "jisc62201969ro": "iso646jp", "jp": "iso646jp", "cshproman8": "hproman8", "r8": "hproman8", "roman8": "hproman8", "xroman8": "hproman8", "ibm1051": "hproman8", "mac": "macintosh", "csmacintosh": "macintosh" }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data-generated.js var require_sbcs_data_generated2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/sbcs-data-generated.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { "437": "cp437", "737": "cp737", "775": "cp775", "850": "cp850", "852": "cp852", "855": "cp855", "856": "cp856", "857": "cp857", "858": "cp858", "860": "cp860", "861": "cp861", "862": "cp862", "863": "cp863", "864": "cp864", "865": "cp865", "866": "cp866", "869": "cp869", "874": "windows874", "922": "cp922", "1046": "cp1046", "1124": "cp1124", "1125": "cp1125", "1129": "cp1129", "1133": "cp1133", "1161": "cp1161", "1162": "cp1162", "1163": "cp1163", "1250": "windows1250", "1251": "windows1251", "1252": "windows1252", "1253": "windows1253", "1254": "windows1254", "1255": "windows1255", "1256": "windows1256", "1257": "windows1257", "1258": "windows1258", "28591": "iso88591", "28592": "iso88592", "28593": "iso88593", "28594": "iso88594", "28595": "iso88595", "28596": "iso88596", "28597": "iso88597", "28598": "iso88598", "28599": "iso88599", "28600": "iso885910", "28601": "iso885911", "28603": "iso885913", "28604": "iso885914", "28605": "iso885915", "28606": "iso885916", "windows874": { "type": "_sbcs", "chars": "\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, "win874": "windows874", "cp874": "windows874", "windows1250": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" }, "win1250": "windows1250", "cp1250": "windows1250", "windows1251": { "type": "_sbcs", "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, "win1251": "windows1251", "cp1251": "windows1251", "windows1252": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "win1252": "windows1252", "cp1252": "windows1252", "windows1253": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" }, "win1253": "windows1253", "cp1253": "windows1253", "windows1254": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" }, "win1254": "windows1254", "cp1254": "windows1254", "windows1255": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" }, "win1255": "windows1255", "cp1255": "windows1255", "windows1256": { "type": "_sbcs", "chars": "\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2" }, "win1256": "windows1256", "cp1256": "windows1256", "windows1257": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9" }, "win1257": "windows1257", "cp1257": "windows1257", "windows1258": { "type": "_sbcs", "chars": "\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, "win1258": "windows1258", "cp1258": "windows1258", "iso88591": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "cp28591": "iso88591", "iso88592": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9" }, "cp28592": "iso88592", "iso88593": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9" }, "cp28593": "iso88593", "iso88594": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9" }, "cp28594": "iso88594", "iso88595": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" }, "cp28595": "iso88595", "iso88596": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "cp28596": "iso88596", "iso88597": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD" }, "cp28597": "iso88597", "iso88598": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD" }, "cp28598": "iso88598", "iso88599": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF" }, "cp28599": "iso88599", "iso885910": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138" }, "cp28600": "iso885910", "iso885911": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, "cp28601": "iso885911", "iso885913": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019" }, "cp28603": "iso885913", "iso885914": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF" }, "cp28604": "iso885914", "iso885915": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "cp28605": "iso885915", "iso885916": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF" }, "cp28606": "iso885916", "cp437": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm437": "cp437", "csibm437": "cp437", "cp737": { "type": "_sbcs", "chars": "\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm737": "cp737", "csibm737": "cp737", "cp775": { "type": "_sbcs", "chars": "\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm775": "cp775", "csibm775": "cp775", "cp850": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm850": "cp850", "csibm850": "cp850", "cp852": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0" }, "ibm852": "cp852", "csibm852": "cp852", "cp855": { "type": "_sbcs", "chars": "\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0" }, "ibm855": "cp855", "csibm855": "cp855", "cp856": { "type": "_sbcs", "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm856": "cp856", "csibm856": "cp856", "cp857": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm857": "cp857", "csibm857": "cp857", "cp858": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0" }, "ibm858": "cp858", "csibm858": "cp858", "cp860": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm860": "cp860", "csibm860": "cp860", "cp861": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm861": "cp861", "csibm861": "cp861", "cp862": { "type": "_sbcs", "chars": "\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm862": "cp862", "csibm862": "cp862", "cp863": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm863": "cp863", "csibm863": "cp863", "cp864": { "type": "_sbcs", "chars": "\0\x07\b \n\v\f\r\x1B !\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD" }, "ibm864": "cp864", "csibm864": "cp864", "cp865": { "type": "_sbcs", "chars": "\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0" }, "ibm865": "cp865", "csibm865": "cp865", "cp866": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0" }, "ibm866": "cp866", "csibm866": "cp866", "cp869": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0" }, "ibm869": "cp869", "csibm869": "cp869", "cp922": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF" }, "ibm922": "cp922", "csibm922": "cp922", "cp1046": { "type": "_sbcs", "chars": "\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD" }, "ibm1046": "cp1046", "csibm1046": "cp1046", "cp1124": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F" }, "ibm1124": "cp1124", "csibm1124": "cp1124", "cp1125": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0" }, "ibm1125": "cp1125", "csibm1125": "cp1125", "cp1129": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, "ibm1129": "cp1129", "csibm1129": "cp1129", "cp1133": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD" }, "ibm1133": "cp1133", "csibm1133": "cp1133", "cp1161": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0" }, "ibm1161": "cp1161", "csibm1161": "cp1161", "cp1162": { "type": "_sbcs", "chars": "\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" }, "ibm1162": "cp1162", "csibm1162": "cp1162", "cp1163": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF" }, "ibm1163": "cp1163", "csibm1163": "cp1163", "maccroatian": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7" }, "maccyrillic": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" }, "macgreek": { "type": "_sbcs", "chars": "\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD" }, "maciceland": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macroman": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macromania": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macthai": { "type": "_sbcs", "chars": "\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD" }, "macturkish": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "macukraine": { "type": "_sbcs", "chars": "\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4" }, "koi8r": { "type": "_sbcs", "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "koi8u": { "type": "_sbcs", "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "koi8ru": { "type": "_sbcs", "chars": "\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "koi8t": { "type": "_sbcs", "chars": "\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A" }, "armscii8": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD" }, "rk1048": { "type": "_sbcs", "chars": "\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, "tcvn": { "type": "_sbcs", "chars": "\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b \n\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0" }, "georgianacademy": { "type": "_sbcs", "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "georgianps": { "type": "_sbcs", "chars": "\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF" }, "pt154": { "type": "_sbcs", "chars": "\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F" }, "viscii": { "type": "_sbcs", "chars": "\0\u1EB2\u1EB4\u1EAA\x07\b \n\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE" }, "iso646cn": { "type": "_sbcs", "chars": "\0\x07\b \n\v\f\r\x1B !\"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "iso646jp": { "type": "_sbcs", "chars": "\0\x07\b \n\v\f\r\x1B !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "hproman8": { "type": "_sbcs", "chars": "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD" }, "macintosh": { "type": "_sbcs", "chars": "\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7" }, "ascii": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD" }, "tis620": { "type": "_sbcs", "chars": "\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD" } }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-codec.js var require_dbcs_codec2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-codec.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; exports2._dbcs = DBCSCodec; var UNASSIGNED = -1; var GB18030_CODE = -2; var SEQ_START = -10; var NODE_START = -1e3; var UNASSIGNED_NODE = new Array(256); var DEF_CHAR = -1; for (i = 0; i < 256; i++) UNASSIGNED_NODE[i] = UNASSIGNED; var i; function DBCSCodec(codecOptions, iconv) { this.encodingName = codecOptions.encodingName; if (!codecOptions) throw new Error("DBCS codec is called without the data."); if (!codecOptions.table) throw new Error("Encoding '" + this.encodingName + "' has no data."); var mappingTable = codecOptions.table(); this.decodeTables = []; this.decodeTables[0] = UNASSIGNED_NODE.slice(0); this.decodeTableSeq = []; for (var i2 = 0; i2 < mappingTable.length; i2++) this._addDecodeChunk(mappingTable[i2]); this.defaultCharUnicode = iconv.defaultCharUnicode; this.encodeTable = []; this.encodeTableSeq = []; var skipEncodeChars = {}; if (codecOptions.encodeSkipVals) for (var i2 = 0; i2 < codecOptions.encodeSkipVals.length; i2++) { var val = codecOptions.encodeSkipVals[i2]; if (typeof val === "number") skipEncodeChars[val] = true; else for (var j = val.from; j <= val.to; j++) skipEncodeChars[j] = true; } this._fillEncodeTable(0, 0, skipEncodeChars); if (codecOptions.encodeAdd) { for (var uChar in codecOptions.encodeAdd) if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]); } this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]; if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]["?"]; if (this.defCharSB === UNASSIGNED) this.defCharSB = "?".charCodeAt(0); if (typeof codecOptions.gb18030 === "function") { this.gb18030 = codecOptions.gb18030(); var thirdByteNodeIdx = this.decodeTables.length; var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0); var fourthByteNodeIdx = this.decodeTables.length; var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0); for (var i2 = 129; i2 <= 254; i2++) { var secondByteNodeIdx = NODE_START - this.decodeTables[0][i2]; var secondByteNode = this.decodeTables[secondByteNodeIdx]; for (var j = 48; j <= 57; j++) secondByteNode[j] = NODE_START - thirdByteNodeIdx; } for (var i2 = 129; i2 <= 254; i2++) thirdByteNode[i2] = NODE_START - fourthByteNodeIdx; for (var i2 = 48; i2 <= 57; i2++) fourthByteNode[i2] = GB18030_CODE; } } DBCSCodec.prototype.encoder = DBCSEncoder; DBCSCodec.prototype.decoder = DBCSDecoder; DBCSCodec.prototype._getDecodeTrieNode = function(addr) { var bytes = []; for (; addr > 0; addr >>= 8) bytes.push(addr & 255); if (bytes.length == 0) bytes.push(0); var node = this.decodeTables[0]; for (var i2 = bytes.length - 1; i2 > 0; i2--) { var val = node[bytes[i2]]; if (val == UNASSIGNED) { node[bytes[i2]] = NODE_START - this.decodeTables.length; this.decodeTables.push(node = UNASSIGNED_NODE.slice(0)); } else if (val <= NODE_START) { node = this.decodeTables[NODE_START - val]; } else throw new Error("Overwrite byte in " + this.encodingName + ", addr: " + addr.toString(16)); } return node; }; DBCSCodec.prototype._addDecodeChunk = function(chunk) { var curAddr = parseInt(chunk[0], 16); var writeTable = this._getDecodeTrieNode(curAddr); curAddr = curAddr & 255; for (var k = 1; k < chunk.length; k++) { var part = chunk[k]; if (typeof part === "string") { for (var l = 0; l < part.length; ) { var code = part.charCodeAt(l++); if (55296 <= code && code < 56320) { var codeTrail = part.charCodeAt(l++); if (56320 <= codeTrail && codeTrail < 57344) writeTable[curAddr++] = 65536 + (code - 55296) * 1024 + (codeTrail - 56320); else throw new Error("Incorrect surrogate pair in " + this.encodingName + " at chunk " + chunk[0]); } else if (4080 < code && code <= 4095) { var len = 4095 - code + 2; var seq = []; for (var m = 0; m < len; m++) seq.push(part.charCodeAt(l++)); writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length; this.decodeTableSeq.push(seq); } else writeTable[curAddr++] = code; } } else if (typeof part === "number") { var charCode = writeTable[curAddr - 1] + 1; for (var l = 0; l < part; l++) writeTable[curAddr++] = charCode++; } else throw new Error("Incorrect type '" + typeof part + "' given in " + this.encodingName + " at chunk " + chunk[0]); } if (curAddr > 255) throw new Error("Incorrect chunk in " + this.encodingName + " at addr " + chunk[0] + ": too long" + curAddr); }; DBCSCodec.prototype._getEncodeBucket = function(uCode) { var high = uCode >> 8; if (this.encodeTable[high] === void 0) this.encodeTable[high] = UNASSIGNED_NODE.slice(0); return this.encodeTable[high]; }; DBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) { var bucket = this._getEncodeBucket(uCode); var low = uCode & 255; if (bucket[low] <= SEQ_START) this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode; else if (bucket[low] == UNASSIGNED) bucket[low] = dbcsCode; }; DBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) { var uCode = seq[0]; var bucket = this._getEncodeBucket(uCode); var low = uCode & 255; var node; if (bucket[low] <= SEQ_START) { node = this.encodeTableSeq[SEQ_START - bucket[low]]; } else { node = {}; if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; bucket[low] = SEQ_START - this.encodeTableSeq.length; this.encodeTableSeq.push(node); } for (var j = 1; j < seq.length - 1; j++) { var oldVal = node[uCode]; if (typeof oldVal === "object") node = oldVal; else { node = node[uCode] = {}; if (oldVal !== void 0) node[DEF_CHAR] = oldVal; } } uCode = seq[seq.length - 1]; node[uCode] = dbcsCode; }; DBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) { var node = this.decodeTables[nodeIdx]; for (var i2 = 0; i2 < 256; i2++) { var uCode = node[i2]; var mbCode = prefix + i2; if (skipEncodeChars[mbCode]) continue; if (uCode >= 0) this._setEncodeChar(uCode, mbCode); else if (uCode <= NODE_START) this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars); else if (uCode <= SEQ_START) this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode); } }; function DBCSEncoder(options, codec) { this.leadSurrogate = -1; this.seqObj = void 0; this.encodeTable = codec.encodeTable; this.encodeTableSeq = codec.encodeTableSeq; this.defaultCharSingleByte = codec.defCharSB; this.gb18030 = codec.gb18030; } DBCSEncoder.prototype.write = function(str) { var newBuf = Buffer2.alloc(str.length * (this.gb18030 ? 4 : 3)), leadSurrogate = this.leadSurrogate, seqObj = this.seqObj, nextChar = -1, i2 = 0, j = 0; while (true) { if (nextChar === -1) { if (i2 == str.length) break; var uCode = str.charCodeAt(i2++); } else { var uCode = nextChar; nextChar = -1; } if (55296 <= uCode && uCode < 57344) { if (uCode < 56320) { if (leadSurrogate === -1) { leadSurrogate = uCode; continue; } else { leadSurrogate = uCode; uCode = UNASSIGNED; } } else { if (leadSurrogate !== -1) { uCode = 65536 + (leadSurrogate - 55296) * 1024 + (uCode - 56320); leadSurrogate = -1; } else { uCode = UNASSIGNED; } } } else if (leadSurrogate !== -1) { nextChar = uCode; uCode = UNASSIGNED; leadSurrogate = -1; } var dbcsCode = UNASSIGNED; if (seqObj !== void 0 && uCode != UNASSIGNED) { var resCode = seqObj[uCode]; if (typeof resCode === "object") { seqObj = resCode; continue; } else if (typeof resCode == "number") { dbcsCode = resCode; } else if (resCode == void 0) { resCode = seqObj[DEF_CHAR]; if (resCode !== void 0) { dbcsCode = resCode; nextChar = uCode; } else { } } seqObj = void 0; } else if (uCode >= 0) { var subtable = this.encodeTable[uCode >> 8]; if (subtable !== void 0) dbcsCode = subtable[uCode & 255]; if (dbcsCode <= SEQ_START) { seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]; continue; } if (dbcsCode == UNASSIGNED && this.gb18030) { var idx = findIdx(this.gb18030.uChars, uCode); if (idx != -1) { var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]); newBuf[j++] = 129 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600; newBuf[j++] = 48 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260; newBuf[j++] = 129 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10; newBuf[j++] = 48 + dbcsCode; continue; } } } if (dbcsCode === UNASSIGNED) dbcsCode = this.defaultCharSingleByte; if (dbcsCode < 256) { newBuf[j++] = dbcsCode; } else if (dbcsCode < 65536) { newBuf[j++] = dbcsCode >> 8; newBuf[j++] = dbcsCode & 255; } else { newBuf[j++] = dbcsCode >> 16; newBuf[j++] = dbcsCode >> 8 & 255; newBuf[j++] = dbcsCode & 255; } } this.seqObj = seqObj; this.leadSurrogate = leadSurrogate; return newBuf.slice(0, j); }; DBCSEncoder.prototype.end = function() { if (this.leadSurrogate === -1 && this.seqObj === void 0) return; var newBuf = Buffer2.alloc(10), j = 0; if (this.seqObj) { var dbcsCode = this.seqObj[DEF_CHAR]; if (dbcsCode !== void 0) { if (dbcsCode < 256) { newBuf[j++] = dbcsCode; } else { newBuf[j++] = dbcsCode >> 8; newBuf[j++] = dbcsCode & 255; } } else { } this.seqObj = void 0; } if (this.leadSurrogate !== -1) { newBuf[j++] = this.defaultCharSingleByte; this.leadSurrogate = -1; } return newBuf.slice(0, j); }; DBCSEncoder.prototype.findIdx = findIdx; function DBCSDecoder(options, codec) { this.nodeIdx = 0; this.prevBuf = Buffer2.alloc(0); this.decodeTables = codec.decodeTables; this.decodeTableSeq = codec.decodeTableSeq; this.defaultCharUnicode = codec.defaultCharUnicode; this.gb18030 = codec.gb18030; } DBCSDecoder.prototype.write = function(buf) { var newBuf = Buffer2.alloc(buf.length * 2), nodeIdx = this.nodeIdx, prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length, seqStart = -this.prevBuf.length, uCode; if (prevBufOffset > 0) prevBuf = Buffer2.concat([prevBuf, buf.slice(0, 10)]); for (var i2 = 0, j = 0; i2 < buf.length; i2++) { var curByte = i2 >= 0 ? buf[i2] : prevBuf[i2 + prevBufOffset]; var uCode = this.decodeTables[nodeIdx][curByte]; if (uCode >= 0) { } else if (uCode === UNASSIGNED) { i2 = seqStart; uCode = this.defaultCharUnicode.charCodeAt(0); } else if (uCode === GB18030_CODE) { var curSeq = seqStart >= 0 ? buf.slice(seqStart, i2 + 1) : prevBuf.slice(seqStart + prevBufOffset, i2 + 1 + prevBufOffset); var ptr = (curSeq[0] - 129) * 12600 + (curSeq[1] - 48) * 1260 + (curSeq[2] - 129) * 10 + (curSeq[3] - 48); var idx = findIdx(this.gb18030.gbChars, ptr); uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]; } else if (uCode <= NODE_START) { nodeIdx = NODE_START - uCode; continue; } else if (uCode <= SEQ_START) { var seq = this.decodeTableSeq[SEQ_START - uCode]; for (var k = 0; k < seq.length - 1; k++) { uCode = seq[k]; newBuf[j++] = uCode & 255; newBuf[j++] = uCode >> 8; } uCode = seq[seq.length - 1]; } else throw new Error("iconv-lite internal error: invalid decoding table value " + uCode + " at " + nodeIdx + "/" + curByte); if (uCode > 65535) { uCode -= 65536; var uCodeLead = 55296 + Math.floor(uCode / 1024); newBuf[j++] = uCodeLead & 255; newBuf[j++] = uCodeLead >> 8; uCode = 56320 + uCode % 1024; } newBuf[j++] = uCode & 255; newBuf[j++] = uCode >> 8; nodeIdx = 0; seqStart = i2 + 1; } this.nodeIdx = nodeIdx; this.prevBuf = seqStart >= 0 ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset); return newBuf.slice(0, j).toString("ucs2"); }; DBCSDecoder.prototype.end = function() { var ret = ""; while (this.prevBuf.length > 0) { ret += this.defaultCharUnicode; var buf = this.prevBuf.slice(1); this.prevBuf = Buffer2.alloc(0); this.nodeIdx = 0; if (buf.length > 0) ret += this.write(buf); } this.nodeIdx = 0; return ret; }; function findIdx(table, val) { if (table[0] > val) return -1; var l = 0, r = table.length; while (l < r - 1) { var mid = l + Math.floor((r - l + 1) / 2); if (table[mid] <= val) l = mid; else r = mid; } return l; } } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/shiftjis.json var require_shiftjis2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/shiftjis.json"(exports2, module2) { module2.exports = [ ["0", "\0", 128], ["a1", "\uFF61", 62], ["8140", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7"], ["8180", "\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], ["81b8", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], ["81c8", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], ["81da", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], ["81f0", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], ["81fc", "\u25EF"], ["824f", "\uFF10", 9], ["8260", "\uFF21", 25], ["8281", "\uFF41", 25], ["829f", "\u3041", 82], ["8340", "\u30A1", 62], ["8380", "\u30E0", 22], ["839f", "\u0391", 16, "\u03A3", 6], ["83bf", "\u03B1", 16, "\u03C3", 6], ["8440", "\u0410", 5, "\u0401\u0416", 25], ["8470", "\u0430", 5, "\u0451\u0436", 7], ["8480", "\u043E", 17], ["849f", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], ["8740", "\u2460", 19, "\u2160", 9], ["875f", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], ["877e", "\u337B"], ["8780", "\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], ["889f", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], ["8940", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"], ["8980", "\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], ["8a40", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"], ["8a80", "\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], ["8b40", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"], ["8b80", "\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], ["8c40", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"], ["8c80", "\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], ["8d40", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"], ["8d80", "\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], ["8e40", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"], ["8e80", "\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], ["8f40", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"], ["8f80", "\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], ["9040", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"], ["9080", "\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], ["9140", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"], ["9180", "\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], ["9240", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"], ["9280", "\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], ["9340", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"], ["9380", "\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], ["9440", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"], ["9480", "\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], ["9540", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"], ["9580", "\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], ["9640", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"], ["9680", "\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], ["9740", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"], ["9780", "\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], ["9840", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], ["989f", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], ["9940", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"], ["9980", "\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], ["9a40", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"], ["9a80", "\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], ["9b40", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"], ["9b80", "\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], ["9c40", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"], ["9c80", "\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], ["9d40", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"], ["9d80", "\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], ["9e40", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"], ["9e80", "\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], ["9f40", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"], ["9f80", "\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], ["e040", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"], ["e080", "\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], ["e140", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"], ["e180", "\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], ["e240", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"], ["e280", "\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], ["e340", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"], ["e380", "\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], ["e440", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"], ["e480", "\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], ["e540", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"], ["e580", "\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], ["e640", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"], ["e680", "\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], ["e740", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"], ["e780", "\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], ["e840", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"], ["e880", "\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], ["e940", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"], ["e980", "\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], ["ea40", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"], ["ea80", "\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"], ["ed40", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"], ["ed80", "\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], ["ee40", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"], ["ee80", "\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], ["eeef", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], ["f040", "\uE000", 62], ["f080", "\uE03F", 124], ["f140", "\uE0BC", 62], ["f180", "\uE0FB", 124], ["f240", "\uE178", 62], ["f280", "\uE1B7", 124], ["f340", "\uE234", 62], ["f380", "\uE273", 124], ["f440", "\uE2F0", 62], ["f480", "\uE32F", 124], ["f540", "\uE3AC", 62], ["f580", "\uE3EB", 124], ["f640", "\uE468", 62], ["f680", "\uE4A7", 124], ["f740", "\uE524", 62], ["f780", "\uE563", 124], ["f840", "\uE5E0", 62], ["f880", "\uE61F", 124], ["f940", "\uE69C"], ["fa40", "\u2170", 9, "\u2160", 9, "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"], ["fa80", "\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"], ["fb40", "\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"], ["fb80", "\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"], ["fc40", "\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"] ]; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/eucjp.json var require_eucjp2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/eucjp.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["8ea1", "\uFF61", 62], ["a1a1", "\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008", 9, "\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"], ["a2a1", "\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"], ["a2ba", "\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"], ["a2ca", "\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"], ["a2dc", "\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"], ["a2f2", "\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"], ["a2fe", "\u25EF"], ["a3b0", "\uFF10", 9], ["a3c1", "\uFF21", 25], ["a3e1", "\uFF41", 25], ["a4a1", "\u3041", 82], ["a5a1", "\u30A1", 85], ["a6a1", "\u0391", 16, "\u03A3", 6], ["a6c1", "\u03B1", 16, "\u03C3", 6], ["a7a1", "\u0410", 5, "\u0401\u0416", 25], ["a7d1", "\u0430", 5, "\u0451\u0436", 25], ["a8a1", "\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"], ["ada1", "\u2460", 19, "\u2160", 9], ["adc0", "\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"], ["addf", "\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4", 4, "\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"], ["b0a1", "\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"], ["b1a1", "\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"], ["b2a1", "\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"], ["b3a1", "\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"], ["b4a1", "\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"], ["b5a1", "\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"], ["b6a1", "\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"], ["b7a1", "\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"], ["b8a1", "\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"], ["b9a1", "\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"], ["baa1", "\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"], ["bba1", "\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"], ["bca1", "\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"], ["bda1", "\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"], ["bea1", "\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"], ["bfa1", "\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"], ["c0a1", "\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"], ["c1a1", "\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"], ["c2a1", "\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"], ["c3a1", "\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"], ["c4a1", "\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"], ["c5a1", "\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"], ["c6a1", "\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"], ["c7a1", "\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"], ["c8a1", "\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"], ["c9a1", "\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"], ["caa1", "\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"], ["cba1", "\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"], ["cca1", "\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"], ["cda1", "\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"], ["cea1", "\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"], ["cfa1", "\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"], ["d0a1", "\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"], ["d1a1", "\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"], ["d2a1", "\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"], ["d3a1", "\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"], ["d4a1", "\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"], ["d5a1", "\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"], ["d6a1", "\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"], ["d7a1", "\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"], ["d8a1", "\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"], ["d9a1", "\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"], ["daa1", "\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"], ["dba1", "\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"], ["dca1", "\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"], ["dda1", "\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"], ["dea1", "\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"], ["dfa1", "\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"], ["e0a1", "\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"], ["e1a1", "\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"], ["e2a1", "\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"], ["e3a1", "\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"], ["e4a1", "\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"], ["e5a1", "\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"], ["e6a1", "\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"], ["e7a1", "\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"], ["e8a1", "\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"], ["e9a1", "\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"], ["eaa1", "\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"], ["eba1", "\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"], ["eca1", "\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"], ["eda1", "\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"], ["eea1", "\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"], ["efa1", "\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"], ["f0a1", "\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"], ["f1a1", "\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"], ["f2a1", "\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"], ["f3a1", "\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"], ["f4a1", "\u582F\u69C7\u9059\u7464\u51DC\u7199"], ["f9a1", "\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"], ["faa1", "\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"], ["fba1", "\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"], ["fca1", "\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"], ["fcf1", "\u2170", 9, "\uFFE2\uFFE4\uFF07\uFF02"], ["8fa2af", "\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"], ["8fa2c2", "\xA1\xA6\xBF"], ["8fa2eb", "\xBA\xAA\xA9\xAE\u2122\xA4\u2116"], ["8fa6e1", "\u0386\u0388\u0389\u038A\u03AA"], ["8fa6e7", "\u038C"], ["8fa6e9", "\u038E\u03AB"], ["8fa6ec", "\u038F"], ["8fa6f1", "\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"], ["8fa7c2", "\u0402", 10, "\u040E\u040F"], ["8fa7f2", "\u0452", 10, "\u045E\u045F"], ["8fa9a1", "\xC6\u0110"], ["8fa9a4", "\u0126"], ["8fa9a6", "\u0132"], ["8fa9a8", "\u0141\u013F"], ["8fa9ab", "\u014A\xD8\u0152"], ["8fa9af", "\u0166\xDE"], ["8fa9c1", "\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"], ["8faaa1", "\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"], ["8faaba", "\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"], ["8faba1", "\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"], ["8fabbd", "\u0121\u0125\xED\xEC\xEF\xEE\u01D0"], ["8fabc5", "\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"], ["8fb0a1", "\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"], ["8fb1a1", "\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"], ["8fb2a1", "\u5092\u5093\u5094\u5096\u509B\u509C\u509E", 4, "\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"], ["8fb3a1", "\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"], ["8fb4a1", "\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"], ["8fb5a1", "\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"], ["8fb6a1", "\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D", 5, "\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4", 4, "\u56F1\u56EB\u56ED"], ["8fb7a1", "\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D", 4, "\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"], ["8fb8a1", "\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"], ["8fb9a1", "\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"], ["8fbaa1", "\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6", 4, "\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"], ["8fbba1", "\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"], ["8fbca1", "\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A", 4, "\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"], ["8fbda1", "\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0", 4, "\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"], ["8fbea1", "\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110", 4, "\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"], ["8fbfa1", "\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"], ["8fc0a1", "\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"], ["8fc1a1", "\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"], ["8fc2a1", "\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"], ["8fc3a1", "\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E", 4, "\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"], ["8fc4a1", "\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"], ["8fc5a1", "\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"], ["8fc6a1", "\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"], ["8fc7a1", "\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"], ["8fc8a1", "\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"], ["8fc9a1", "\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094", 4, "\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103", 4, "\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"], ["8fcaa1", "\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"], ["8fcba1", "\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"], ["8fcca1", "\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428", 9, "\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"], ["8fcda1", "\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579", 5, "\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"], ["8fcea1", "\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2", 6, "\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"], ["8fcfa1", "\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"], ["8fd0a1", "\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"], ["8fd1a1", "\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"], ["8fd2a1", "\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59", 5], ["8fd3a1", "\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"], ["8fd4a1", "\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2", 4, "\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"], ["8fd5a1", "\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"], ["8fd6a1", "\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"], ["8fd7a1", "\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"], ["8fd8a1", "\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"], ["8fd9a1", "\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F", 4, "\u8556\u8559\u855C", 6, "\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"], ["8fdaa1", "\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660", 4, "\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"], ["8fdba1", "\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783", 6, "\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"], ["8fdca1", "\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA", 4, "\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"], ["8fdda1", "\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4", 4, "\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"], ["8fdea1", "\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42", 4, "\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"], ["8fdfa1", "\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"], ["8fe0a1", "\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"], ["8fe1a1", "\u8F43\u8F47\u8F4F\u8F51", 4, "\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"], ["8fe2a1", "\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"], ["8fe3a1", "\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC", 5, "\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275", 4, "\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"], ["8fe4a1", "\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF", 4, "\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"], ["8fe5a1", "\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9", 4, "\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"], ["8fe6a1", "\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"], ["8fe7a1", "\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"], ["8fe8a1", "\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931", 4, "\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"], ["8fe9a1", "\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF", 4], ["8feaa1", "\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A", 4, "\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"], ["8feba1", "\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26", 4, "\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"], ["8feca1", "\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"], ["8feda1", "\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43", 4, "\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D", 4, "\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"] ]; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp936.json var require_cp9362 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp936.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127, "\u20AC"], ["8140", "\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A", 5, "\u4E72\u4E74", 9, "\u4E7F", 6, "\u4E87\u4E8A"], ["8180", "\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02", 6, "\u4F0B\u4F0C\u4F12", 4, "\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E", 4, "\u4F44\u4F45\u4F47", 5, "\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"], ["8240", "\u4FA4\u4FAB\u4FAD\u4FB0", 4, "\u4FB6", 8, "\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2", 4, "\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF", 11], ["8280", "\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F", 10, "\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050", 4, "\u5056\u5057\u5058\u5059\u505B\u505D", 7, "\u5066", 5, "\u506D", 8, "\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E", 20, "\u50A4\u50A6\u50AA\u50AB\u50AD", 4, "\u50B3", 6, "\u50BC"], ["8340", "\u50BD", 17, "\u50D0", 5, "\u50D7\u50D8\u50D9\u50DB", 10, "\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6", 4, "\u50FC", 9, "\u5108"], ["8380", "\u5109\u510A\u510C", 5, "\u5113", 13, "\u5122", 28, "\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D", 4, "\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6", 4, "\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2", 5], ["8440", "\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5", 5, "\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244", 5, "\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"], ["8480", "\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273", 9, "\u527E\u5280\u5283", 4, "\u5289", 6, "\u5291\u5292\u5294", 6, "\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4", 9, "\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9", 5, "\u52E0\u52E1\u52E2\u52E3\u52E5", 10, "\u52F1", 7, "\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"], ["8540", "\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F", 9, "\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"], ["8580", "\u5390", 4, "\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF", 6, "\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3", 4, "\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D", 4, "\u5463\u5465\u5467\u5469", 7, "\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"], ["8640", "\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0", 4, "\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4", 5, "\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A", 4, "\u5512\u5513\u5515", 5, "\u551C\u551D\u551E\u551F\u5521\u5525\u5526"], ["8680", "\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B", 4, "\u5551\u5552\u5553\u5554\u5557", 4, "\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F", 5, "\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0", 6, "\u55A8", 8, "\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF", 4, "\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7", 4, "\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8", 4, "\u55FF\u5602\u5603\u5604\u5605"], ["8740", "\u5606\u5607\u560A\u560B\u560D\u5610", 7, "\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640", 11, "\u564F", 4, "\u5655\u5656\u565A\u565B\u565D", 4], ["8780", "\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D", 7, "\u5687", 6, "\u5690\u5691\u5692\u5694", 14, "\u56A4", 10, "\u56B0", 6, "\u56B8\u56B9\u56BA\u56BB\u56BD", 12, "\u56CB", 8, "\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5", 5, "\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B", 6], ["8840", "\u5712", 9, "\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734", 4, "\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752", 4, "\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"], ["8880", "\u5781\u5787\u5788\u5789\u578A\u578D", 4, "\u5794", 6, "\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9", 8, "\u57C4", 6, "\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5", 7, "\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825", 4, "\u582B", 4, "\u5831\u5832\u5833\u5834\u5836", 7], ["8940", "\u583E", 5, "\u5845", 6, "\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859", 4, "\u585F", 5, "\u5866", 4, "\u586D", 16, "\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"], ["8980", "\u588D", 4, "\u5894", 4, "\u589B\u589C\u589D\u58A0", 7, "\u58AA", 17, "\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6", 10, "\u58D2\u58D3\u58D4\u58D6", 13, "\u58E5", 5, "\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA", 7, "\u5903\u5905\u5906\u5908", 4, "\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"], ["8a40", "\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B", 4, "\u5961\u5963\u5964\u5966", 12, "\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"], ["8a80", "\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3", 5, "\u59BA\u59BC\u59BD\u59BF", 6, "\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE", 4, "\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED", 11, "\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A", 6, "\u5A33\u5A35\u5A37", 4, "\u5A3D\u5A3E\u5A3F\u5A41", 4, "\u5A47\u5A48\u5A4B", 9, "\u5A56\u5A57\u5A58\u5A59\u5A5B", 5], ["8b40", "\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B", 8, "\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80", 17, "\u5A93", 6, "\u5A9C", 13, "\u5AAB\u5AAC"], ["8b80", "\u5AAD", 4, "\u5AB4\u5AB6\u5AB7\u5AB9", 4, "\u5ABF\u5AC0\u5AC3", 5, "\u5ACA\u5ACB\u5ACD", 4, "\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC", 4, "\u5AF2", 22, "\u5B0A", 11, "\u5B18", 25, "\u5B33\u5B35\u5B36\u5B38", 7, "\u5B41", 6], ["8c40", "\u5B48", 7, "\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"], ["8c80", "\u5BD1\u5BD4", 8, "\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9", 4, "\u5BEF\u5BF1", 6, "\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67", 6, "\u5C70\u5C72", 6, "\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83", 4, "\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D", 4, "\u5CA4", 4], ["8d40", "\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5", 5, "\u5CCC", 5, "\u5CD3", 5, "\u5CDA", 6, "\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1", 9, "\u5CFC", 4], ["8d80", "\u5D01\u5D04\u5D05\u5D08", 5, "\u5D0F", 4, "\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F", 4, "\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F", 4, "\u5D35", 7, "\u5D3F", 7, "\u5D48\u5D49\u5D4D", 10, "\u5D59\u5D5A\u5D5C\u5D5E", 10, "\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75", 12, "\u5D83", 21, "\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"], ["8e40", "\u5DA1", 21, "\u5DB8", 12, "\u5DC6", 6, "\u5DCE", 12, "\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"], ["8e80", "\u5DF0\u5DF5\u5DF6\u5DF8", 4, "\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E", 7, "\u5E28", 4, "\u5E2F\u5E30\u5E32", 4, "\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46", 5, "\u5E4D", 6, "\u5E56", 4, "\u5E5C\u5E5D\u5E5F\u5E60\u5E63", 14, "\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8", 4, "\u5EAE", 4, "\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF", 6], ["8f40", "\u5EC6\u5EC7\u5EC8\u5ECB", 5, "\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC", 11, "\u5EE9\u5EEB", 8, "\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"], ["8f80", "\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32", 6, "\u5F3B\u5F3D\u5F3E\u5F3F\u5F41", 14, "\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2", 5, "\u5FA9\u5FAB\u5FAC\u5FAF", 5, "\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE", 4, "\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"], ["9040", "\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030", 4, "\u6036", 4, "\u603D\u603E\u6040\u6044", 6, "\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"], ["9080", "\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD", 7, "\u60C7\u60C8\u60C9\u60CC", 4, "\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1", 4, "\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB", 4, "\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110", 4, "\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C", 18, "\u6140", 6], ["9140", "\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156", 6, "\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169", 6, "\u6171\u6172\u6173\u6174\u6176\u6178", 18, "\u618C\u618D\u618F", 4, "\u6195"], ["9180", "\u6196", 6, "\u619E", 8, "\u61AA\u61AB\u61AD", 9, "\u61B8", 5, "\u61BF\u61C0\u61C1\u61C3", 4, "\u61C9\u61CC", 4, "\u61D3\u61D5", 16, "\u61E7", 13, "\u61F6", 8, "\u6200", 5, "\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238", 4, "\u6242\u6244\u6245\u6246\u624A"], ["9240", "\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C", 6, "\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B", 5, "\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"], ["9280", "\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333", 5, "\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356", 7, "\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399", 6, "\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"], ["9340", "\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7", 6, "\u63DF\u63E2\u63E4", 4, "\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406", 4, "\u640D\u640E\u6411\u6412\u6415", 5, "\u641D\u641F\u6422\u6423\u6424"], ["9380", "\u6425\u6427\u6428\u6429\u642B\u642E", 5, "\u6435", 4, "\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B", 6, "\u6453\u6455\u6456\u6457\u6459", 4, "\u645F", 7, "\u6468\u646A\u646B\u646C\u646E", 9, "\u647B", 6, "\u6483\u6486\u6488", 8, "\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F", 4, "\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6", 6, "\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"], ["9440", "\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7", 24, "\u6501", 7, "\u650A", 7, "\u6513", 4, "\u6519", 8], ["9480", "\u6522\u6523\u6524\u6526", 4, "\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540", 4, "\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578", 14, "\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1", 7, "\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8", 7, "\u65E1\u65E3\u65E4\u65EA\u65EB"], ["9540", "\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB", 4, "\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637", 4, "\u663D\u663F\u6640\u6642\u6644", 6, "\u664D\u664E\u6650\u6651\u6658"], ["9580", "\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669", 4, "\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698", 4, "\u669E", 8, "\u66A9", 4, "\u66AF", 4, "\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF", 25, "\u66DA\u66DE", 7, "\u66E7\u66E8\u66EA", 5, "\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"], ["9640", "\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720", 5, "\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757", 4, "\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"], ["9680", "\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9", 7, "\u67C2\u67C5", 9, "\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5", 7, "\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818", 4, "\u681E\u681F\u6820\u6822", 6, "\u682B", 6, "\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856", 5], ["9740", "\u685C\u685D\u685E\u685F\u686A\u686C", 7, "\u6875\u6878", 8, "\u6882\u6884\u6887", 7, "\u6890\u6891\u6892\u6894\u6895\u6896\u6898", 9, "\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"], ["9780", "\u68B9", 6, "\u68C1\u68C3", 5, "\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB", 4, "\u68E1\u68E2\u68E4", 9, "\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906", 4, "\u690C\u690F\u6911\u6913", 11, "\u6921\u6922\u6923\u6925", 7, "\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943", 16, "\u6955\u6956\u6958\u6959\u695B\u695C\u695F"], ["9840", "\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972", 4, "\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E", 5, "\u6996\u6997\u6999\u699A\u699D", 9, "\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"], ["9880", "\u69BE\u69BF\u69C0\u69C2", 7, "\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5", 5, "\u69DC\u69DD\u69DE\u69E1", 11, "\u69EE\u69EF\u69F0\u69F1\u69F3", 9, "\u69FE\u6A00", 9, "\u6A0B", 11, "\u6A19", 5, "\u6A20\u6A22", 5, "\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36", 6, "\u6A3F", 4, "\u6A45\u6A46\u6A48", 7, "\u6A51", 6, "\u6A5A"], ["9940", "\u6A5C", 4, "\u6A62\u6A63\u6A64\u6A66", 10, "\u6A72", 6, "\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85", 8, "\u6A8F\u6A92", 4, "\u6A98", 7, "\u6AA1", 5], ["9980", "\u6AA7\u6AA8\u6AAA\u6AAD", 114, "\u6B25\u6B26\u6B28", 6], ["9a40", "\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D", 11, "\u6B5A", 7, "\u6B68\u6B69\u6B6B", 13, "\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"], ["9a80", "\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C", 4, "\u6BA2", 7, "\u6BAB", 7, "\u6BB6\u6BB8", 6, "\u6BC0\u6BC3\u6BC4\u6BC6", 4, "\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC", 4, "\u6BE2", 7, "\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE", 6, "\u6C08", 4, "\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B", 4, "\u6C51\u6C52\u6C53\u6C56\u6C58"], ["9b40", "\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B", 4, "\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"], ["9b80", "\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F", 5, "\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D", 4, "\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96", 4, "\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9", 5, "\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"], ["9c40", "\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD", 7, "\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"], ["9c80", "\u6E36\u6E37\u6E39\u6E3B", 7, "\u6E45", 7, "\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60", 10, "\u6E6C\u6E6D\u6E6F", 14, "\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A", 4, "\u6E91", 6, "\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA", 5], ["9d40", "\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA", 7, "\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A", 4, "\u6F10\u6F11\u6F12\u6F16", 9, "\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37", 6, "\u6F3F\u6F40\u6F41\u6F42"], ["9d80", "\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E", 9, "\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67", 5, "\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D", 6, "\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F", 12, "\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2", 4, "\u6FA8", 10, "\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA", 5, "\u6FC1\u6FC3", 5, "\u6FCA", 6, "\u6FD3", 10, "\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"], ["9e40", "\u6FE6", 7, "\u6FF0", 32, "\u7012", 7, "\u701C", 6, "\u7024", 6], ["9e80", "\u702B", 9, "\u7036\u7037\u7038\u703A", 17, "\u704D\u704E\u7050", 13, "\u705F", 11, "\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E", 12, "\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB", 12, "\u70DA"], ["9f40", "\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0", 6, "\u70F8\u70FA\u70FB\u70FC\u70FE", 10, "\u710B", 4, "\u7111\u7112\u7114\u7117\u711B", 10, "\u7127", 7, "\u7132\u7133\u7134"], ["9f80", "\u7135\u7137", 13, "\u7146\u7147\u7148\u7149\u714B\u714D\u714F", 12, "\u715D\u715F", 4, "\u7165\u7169", 4, "\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E", 5, "\u7185", 4, "\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A", 4, "\u71A1", 6, "\u71A9\u71AA\u71AB\u71AD", 5, "\u71B4\u71B6\u71B7\u71B8\u71BA", 8, "\u71C4", 9, "\u71CF", 4], ["a040", "\u71D6", 9, "\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8", 5, "\u71EF", 9, "\u71FA", 11, "\u7207", 19], ["a080", "\u721B\u721C\u721E", 9, "\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240", 6, "\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285", 4, "\u728C\u728E\u7290\u7291\u7293", 11, "\u72A0", 11, "\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA", 6, "\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"], ["a1a1", "\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 7, "\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"], ["a2a1", "\u2170", 9], ["a2b1", "\u2488", 19, "\u2474", 19, "\u2460", 9], ["a2e5", "\u3220", 9], ["a2f1", "\u2160", 11], ["a3a1", "\uFF01\uFF02\uFF03\uFFE5\uFF05", 88, "\uFFE3"], ["a4a1", "\u3041", 82], ["a5a1", "\u30A1", 85], ["a6a1", "\u0391", 16, "\u03A3", 6], ["a6c1", "\u03B1", 16, "\u03C3", 6], ["a6e0", "\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"], ["a6ee", "\uFE3B\uFE3C\uFE37\uFE38\uFE31"], ["a6f4", "\uFE33\uFE34"], ["a7a1", "\u0410", 5, "\u0401\u0416", 25], ["a7d1", "\u0430", 5, "\u0451\u0436", 25], ["a840", "\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550", 35, "\u2581", 6], ["a880", "\u2588", 7, "\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"], ["a8a1", "\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"], ["a8bd", "\u0144\u0148"], ["a8c0", "\u0261"], ["a8c5", "\u3105", 36], ["a940", "\u3021", 8, "\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"], ["a959", "\u2121\u3231"], ["a95c", "\u2010"], ["a960", "\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49", 9, "\uFE54\uFE55\uFE56\uFE57\uFE59", 8], ["a980", "\uFE62", 4, "\uFE68\uFE69\uFE6A\uFE6B"], ["a996", "\u3007"], ["a9a4", "\u2500", 75], ["aa40", "\u72DC\u72DD\u72DF\u72E2", 5, "\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304", 5, "\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340", 8], ["aa80", "\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358", 7, "\u7361", 10, "\u736E\u7370\u7371"], ["ab40", "\u7372", 11, "\u737F", 4, "\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3", 5, "\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3", 4], ["ab80", "\u73CB\u73CC\u73CE\u73D2", 6, "\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3", 4], ["ac40", "\u73F8", 10, "\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411", 8, "\u741C", 5, "\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437", 4, "\u743D\u743E\u743F\u7440\u7442", 11], ["ac80", "\u744E", 6, "\u7456\u7458\u745D\u7460", 12, "\u746E\u746F\u7471", 4, "\u7478\u7479\u747A"], ["ad40", "\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491", 10, "\u749D\u749F", 7, "\u74AA", 15, "\u74BB", 12], ["ad80", "\u74C8", 9, "\u74D3", 8, "\u74DD\u74DF\u74E1\u74E5\u74E7", 6, "\u74F0\u74F1\u74F2"], ["ae40", "\u74F3\u74F5\u74F8", 6, "\u7500\u7501\u7502\u7503\u7505", 7, "\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520", 4, "\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"], ["ae80", "\u755D", 7, "\u7567\u7568\u7569\u756B", 6, "\u7573\u7575\u7576\u7577\u757A", 4, "\u7580\u7581\u7582\u7584\u7585\u7587"], ["af40", "\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6", 4, "\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"], ["af80", "\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"], ["b040", "\u7645", 6, "\u764E", 5, "\u7655\u7657", 4, "\u765D\u765F\u7660\u7661\u7662\u7664", 6, "\u766C\u766D\u766E\u7670", 7, "\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"], ["b080", "\u769C", 7, "\u76A5", 8, "\u76AF\u76B0\u76B3\u76B5", 9, "\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"], ["b140", "\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0", 4, "\u76E6", 7, "\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E", 10, "\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"], ["b180", "\u772C\u772E\u7730", 4, "\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748", 7, "\u7752", 7, "\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"], ["b240", "\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D", 11, "\u777A\u777B\u777C\u7781\u7782\u7783\u7786", 5, "\u778F\u7790\u7793", 11, "\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6", 4], ["b280", "\u77BC\u77BE\u77C0", 12, "\u77CE", 8, "\u77D8\u77D9\u77DA\u77DD", 4, "\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"], ["b340", "\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803", 5, "\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"], ["b380", "\u785B\u785C\u785E", 11, "\u786F", 7, "\u7878\u7879\u787A\u787B\u787D", 6, "\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"], ["b440", "\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8", 7, "\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA", 9], ["b480", "\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED", 4, "\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB", 5, "\u7902\u7903\u7904\u7906", 6, "\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"], ["b540", "\u790D", 5, "\u7914", 9, "\u791F", 4, "\u7925", 14, "\u7935", 4, "\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A", 8, "\u7954\u7955\u7958\u7959\u7961\u7963"], ["b580", "\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970", 6, "\u7979\u797B", 4, "\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"], ["b640", "\u7993", 6, "\u799B", 11, "\u79A8", 10, "\u79B4", 4, "\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9", 5, "\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"], ["b680", "\u79EC\u79EE\u79F1", 6, "\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F", 4, "\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"], ["b740", "\u7A1D\u7A1F\u7A21\u7A22\u7A24", 14, "\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40", 5, "\u7A47", 9, "\u7A52", 4, "\u7A58", 16], ["b780", "\u7A69", 6, "\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"], ["b840", "\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE", 4, "\u7AB4", 10, "\u7AC0", 10, "\u7ACC", 9, "\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7", 5, "\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"], ["b880", "\u7AF4", 4, "\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"], ["b940", "\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F", 5, "\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63", 10, "\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86", 6, "\u7B8E\u7B8F"], ["b980", "\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9", 7, "\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"], ["ba40", "\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4", 4, "\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2", 4, "\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF", 7, "\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10", 5, "\u7C17\u7C18\u7C19"], ["ba80", "\u7C1A", 4, "\u7C20", 5, "\u7C28\u7C29\u7C2B", 12, "\u7C39", 5, "\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"], ["bb40", "\u7C43", 9, "\u7C4E", 36, "\u7C75", 5, "\u7C7E", 9], ["bb80", "\u7C88\u7C8A", 6, "\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4", 4, "\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"], ["bc40", "\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE", 6, "\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1", 6, "\u7CE9", 5, "\u7CF0", 7, "\u7CF9\u7CFA\u7CFC", 13, "\u7D0B", 5], ["bc80", "\u7D11", 14, "\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30", 6, "\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"], ["bd40", "\u7D37", 54, "\u7D6F", 7], ["bd80", "\u7D78", 32, "\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"], ["be40", "\u7D99", 12, "\u7DA7", 6, "\u7DAF", 42], ["be80", "\u7DDA", 32, "\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"], ["bf40", "\u7DFB", 62], ["bf80", "\u7E3A\u7E3C", 4, "\u7E42", 4, "\u7E48", 21, "\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"], ["c040", "\u7E5E", 35, "\u7E83", 23, "\u7E9C\u7E9D\u7E9E"], ["c080", "\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B", 6, "\u7F43\u7F46", 9, "\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"], ["c140", "\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63", 4, "\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82", 7, "\u7F8B\u7F8D\u7F8F", 4, "\u7F95", 4, "\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8", 6, "\u7FB1"], ["c180", "\u7FB3", 4, "\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF", 4, "\u7FD6\u7FD7\u7FD9", 5, "\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"], ["c240", "\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4", 6, "\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B", 5, "\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"], ["c280", "\u8059\u805B", 13, "\u806B", 5, "\u8072", 11, "\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"], ["c340", "\u807E\u8081\u8082\u8085\u8088\u808A\u808D", 5, "\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7", 4, "\u80CF", 6, "\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"], ["c380", "\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F", 12, "\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139", 4, "\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"], ["c440", "\u8140", 5, "\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B", 4, "\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183", 4, "\u8189\u818B\u818C\u818D\u818E\u8190\u8192", 5, "\u8199\u819A\u819E", 4, "\u81A4\u81A5"], ["c480", "\u81A7\u81A9\u81AB", 7, "\u81B4", 5, "\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD", 6, "\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"], ["c540", "\u81D4", 14, "\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE", 4, "\u81F5", 5, "\u81FD\u81FF\u8203\u8207", 4, "\u820E\u820F\u8211\u8213\u8215", 5, "\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"], ["c580", "\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250", 7, "\u8259\u825B\u825C\u825D\u825E\u8260", 7, "\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"], ["c640", "\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"], ["c680", "\u82FA\u82FC", 4, "\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D", 9, "\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"], ["c740", "\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A", 4, "\u8353\u8355", 4, "\u835D\u8362\u8370", 6, "\u8379\u837A\u837E", 6, "\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1", 6, "\u83AC\u83AD\u83AE"], ["c780", "\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"], ["c840", "\u83EE\u83EF\u83F3", 4, "\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412", 5, "\u8419\u841A\u841B\u841E", 5, "\u8429", 7, "\u8432", 5, "\u8439\u843A\u843B\u843E", 7, "\u8447\u8448\u8449"], ["c880", "\u844A", 6, "\u8452", 4, "\u8458\u845D\u845E\u845F\u8460\u8462\u8464", 4, "\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"], ["c940", "\u847D", 4, "\u8483\u8484\u8485\u8486\u848A\u848D\u848F", 7, "\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2", 12, "\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"], ["c980", "\u84D8", 4, "\u84DE\u84E1\u84E2\u84E4\u84E7", 4, "\u84ED\u84EE\u84EF\u84F1", 10, "\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"], ["ca40", "\u8503", 8, "\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522", 8, "\u852D", 9, "\u853E", 4, "\u8544\u8545\u8546\u8547\u854B", 10], ["ca80", "\u8557\u8558\u855A\u855B\u855C\u855D\u855F", 4, "\u8565\u8566\u8567\u8569", 8, "\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"], ["cb40", "\u8582\u8583\u8586\u8588", 6, "\u8590", 10, "\u859D", 6, "\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1", 5, "\u85B8\u85BA", 6, "\u85C2", 6, "\u85CA", 4, "\u85D1\u85D2"], ["cb80", "\u85D4\u85D6", 5, "\u85DD", 6, "\u85E5\u85E6\u85E7\u85E8\u85EA", 14, "\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"], ["cc40", "\u85F9\u85FA\u85FC\u85FD\u85FE\u8600", 4, "\u8606", 10, "\u8612\u8613\u8614\u8615\u8617", 15, "\u8628\u862A", 13, "\u8639\u863A\u863B\u863D\u863E\u863F\u8640"], ["cc80", "\u8641", 11, "\u8652\u8653\u8655", 4, "\u865B\u865C\u865D\u865F\u8660\u8661\u8663", 7, "\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"], ["cd40", "\u866D\u866F\u8670\u8672", 6, "\u8683", 6, "\u868E", 4, "\u8694\u8696", 5, "\u869E", 4, "\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB", 4, "\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"], ["cd80", "\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"], ["ce40", "\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740", 6, "\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A", 5, "\u8761\u8762\u8766", 7, "\u876F\u8771\u8772\u8773\u8775"], ["ce80", "\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E", 4, "\u8794\u8795\u8796\u8798", 6, "\u87A0", 4, "\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"], ["cf40", "\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1", 4, "\u87C7\u87C8\u87C9\u87CC", 4, "\u87D4", 6, "\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF", 9], ["cf80", "\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804", 5, "\u880B", 7, "\u8814\u8817\u8818\u8819\u881A\u881C", 4, "\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"], ["d040", "\u8824", 13, "\u8833", 5, "\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846", 5, "\u884E", 5, "\u8855\u8856\u8858\u885A", 6, "\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"], ["d080", "\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897", 4, "\u889D", 4, "\u88A3\u88A5", 5, "\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"], ["d140", "\u88AC\u88AE\u88AF\u88B0\u88B2", 4, "\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA", 4, "\u88E0\u88E1\u88E6\u88E7\u88E9", 6, "\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903", 5], ["d180", "\u8909\u890B", 4, "\u8911\u8914", 4, "\u891C", 4, "\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"], ["d240", "\u8938", 8, "\u8942\u8943\u8945", 24, "\u8960", 5, "\u8967", 19, "\u897C"], ["d280", "\u897D\u897E\u8980\u8982\u8984\u8985\u8987", 26, "\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"], ["d340", "\u89A2", 30, "\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4", 6], ["d380", "\u89FB", 4, "\u8A01", 5, "\u8A08", 21, "\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"], ["d440", "\u8A1E", 31, "\u8A3F", 8, "\u8A49", 21], ["d480", "\u8A5F", 25, "\u8A7A", 6, "\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"], ["d540", "\u8A81", 7, "\u8A8B", 7, "\u8A94", 46], ["d580", "\u8AC3", 32, "\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"], ["d640", "\u8AE4", 34, "\u8B08", 27], ["d680", "\u8B24\u8B25\u8B27", 30, "\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"], ["d740", "\u8B46", 31, "\u8B67", 4, "\u8B6D", 25], ["d780", "\u8B87", 24, "\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"], ["d840", "\u8C38", 8, "\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D", 7, "\u8C56\u8C57\u8C58\u8C59\u8C5B", 5, "\u8C63", 6, "\u8C6C", 6, "\u8C74\u8C75\u8C76\u8C77\u8C7B", 6, "\u8C83\u8C84\u8C86\u8C87"], ["d880", "\u8C88\u8C8B\u8C8D", 6, "\u8C95\u8C96\u8C97\u8C99", 20, "\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"], ["d940", "\u8CAE", 62], ["d980", "\u8CED", 32, "\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"], ["da40", "\u8D0E", 14, "\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78", 8, "\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C", 4, "\u8D92\u8D93\u8D95", 9, "\u8DA0\u8DA1"], ["da80", "\u8DA2\u8DA4", 12, "\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"], ["db40", "\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE", 6, "\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15", 7, "\u8E20\u8E21\u8E24", 4, "\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"], ["db80", "\u8E3F\u8E43\u8E45\u8E46\u8E4C", 4, "\u8E53", 5, "\u8E5A", 11, "\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"], ["dc40", "\u8E73\u8E75\u8E77", 4, "\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88", 6, "\u8E91\u8E92\u8E93\u8E95", 6, "\u8E9D\u8E9F", 11, "\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3", 6, "\u8EBB", 7], ["dc80", "\u8EC3", 10, "\u8ECF", 21, "\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"], ["dd40", "\u8EE5", 62], ["dd80", "\u8F24", 32, "\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"], ["de40", "\u8F45", 32, "\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"], ["de80", "\u8FC9", 4, "\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"], ["df40", "\u9019\u901C\u9023\u9024\u9025\u9027", 5, "\u9030", 4, "\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048", 4, "\u904E\u9054\u9055\u9056\u9059\u905A\u905C", 5, "\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F", 4, "\u9076", 6, "\u907E\u9081"], ["df80", "\u9084\u9085\u9086\u9087\u9089\u908A\u908C", 4, "\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"], ["e040", "\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105", 19, "\u911A\u911B\u911C"], ["e080", "\u911D\u911F\u9120\u9121\u9124", 10, "\u9130\u9132", 6, "\u913A", 8, "\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"], ["e140", "\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180", 4, "\u9186\u9188\u918A\u918E\u918F\u9193", 6, "\u919C", 5, "\u91A4", 5, "\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"], ["e180", "\u91BC", 10, "\u91C8\u91CB\u91D0\u91D2", 9, "\u91DD", 8, "\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"], ["e240", "\u91E6", 62], ["e280", "\u9225", 32, "\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967", 5, "\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"], ["e340", "\u9246", 45, "\u9275", 16], ["e380", "\u9286", 7, "\u928F", 24, "\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"], ["e440", "\u92A8", 5, "\u92AF", 24, "\u92C9", 31], ["e480", "\u92E9", 32, "\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"], ["e540", "\u930A", 51, "\u933F", 10], ["e580", "\u934A", 31, "\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"], ["e640", "\u936C", 34, "\u9390", 27], ["e680", "\u93AC", 29, "\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"], ["e740", "\u93CE", 7, "\u93D7", 54], ["e780", "\u940E", 32, "\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21", 6, "\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F", 4, "\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"], ["e840", "\u942F", 14, "\u943F", 43, "\u946C\u946D\u946E\u946F"], ["e880", "\u9470", 20, "\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"], ["e940", "\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577", 7, "\u9580", 42], ["e980", "\u95AB", 32, "\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"], ["ea40", "\u95CC", 27, "\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623", 6, "\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"], ["ea80", "\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D", 4, "\u9673\u9678", 12, "\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"], ["eb40", "\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D", 9, "\u96A8", 7, "\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6", 9, "\u96E1", 6, "\u96EB"], ["eb80", "\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717", 4, "\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"], ["ec40", "\u9721", 8, "\u972B\u972C\u972E\u972F\u9731\u9733", 4, "\u973A\u973B\u973C\u973D\u973F", 18, "\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A", 7], ["ec80", "\u9772\u9775\u9777", 4, "\u977D", 7, "\u9786", 4, "\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799", 4, "\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"], ["ed40", "\u979E\u979F\u97A1\u97A2\u97A4", 6, "\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5", 46], ["ed80", "\u97E4\u97E5\u97E8\u97EE", 4, "\u97F4\u97F7", 23, "\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"], ["ee40", "\u980F", 62], ["ee80", "\u984E", 32, "\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6", 4, "\u94BC\u94BD\u94BF\u94C4\u94C8", 6, "\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"], ["ef40", "\u986F", 5, "\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8", 37, "\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0", 4], ["ef80", "\u98E5\u98E6\u98E9", 30, "\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512", 4, "\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564", 8, "\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"], ["f040", "\u9908", 4, "\u990E\u990F\u9911", 28, "\u992F", 26], ["f080", "\u994A", 9, "\u9956", 12, "\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28", 4, "\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66", 6, "\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"], ["f140", "\u998C\u998E\u999A", 10, "\u99A6\u99A7\u99A9", 47], ["f180", "\u99D9", 32, "\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"], ["f240", "\u99FA", 62], ["f280", "\u9A39", 32, "\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"], ["f340", "\u9A5A", 17, "\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9", 6, "\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6", 4, "\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"], ["f380", "\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0", 8, "\u9AFA\u9AFC", 6, "\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"], ["f440", "\u9B07\u9B09", 5, "\u9B10\u9B11\u9B12\u9B14", 10, "\u9B20\u9B21\u9B22\u9B24", 10, "\u9B30\u9B31\u9B33", 7, "\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55", 5], ["f480", "\u9B5B", 32, "\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"], ["f540", "\u9B7C", 62], ["f580", "\u9BBB", 32, "\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"], ["f640", "\u9BDC", 62], ["f680", "\u9C1B", 32, "\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85", 5, "\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E", 5, "\u9CA5", 4, "\u9CAB\u9CAD\u9CAE\u9CB0", 7, "\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"], ["f740", "\u9C3C", 62], ["f780", "\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE", 4, "\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC", 4, "\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"], ["f840", "\u9CE3", 62], ["f880", "\u9D22", 32], ["f940", "\u9D43", 62], ["f980", "\u9D82", 32], ["fa40", "\u9DA3", 62], ["fa80", "\u9DE2", 32], ["fb40", "\u9E03", 27, "\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74", 9, "\u9E80"], ["fb80", "\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C", 5, "\u9E94", 8, "\u9E9E\u9EA0", 5, "\u9EA7\u9EA8\u9EA9\u9EAA"], ["fc40", "\u9EAB", 8, "\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF", 4, "\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0", 8, "\u9EFA\u9EFD\u9EFF", 6], ["fc80", "\u9F06", 4, "\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A", 5, "\u9F21\u9F23", 8, "\u9F2D\u9F2E\u9F30\u9F31"], ["fd40", "\u9F32", 4, "\u9F38\u9F3A\u9F3C\u9F3F", 4, "\u9F45", 10, "\u9F52", 38], ["fd80", "\u9F79", 5, "\u9F81\u9F82\u9F8D", 11, "\u9F9C\u9F9D\u9F9E\u9FA1", 4, "\uF92C\uF979\uF995\uF9E7\uF9F1"], ["fe40", "\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"] ]; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gbk-added.json var require_gbk_added2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gbk-added.json"(exports2, module2) { module2.exports = [ ["a140", "\uE4C6", 62], ["a180", "\uE505", 32], ["a240", "\uE526", 62], ["a280", "\uE565", 32], ["a2ab", "\uE766", 5], ["a2e3", "\u20AC\uE76D"], ["a2ef", "\uE76E\uE76F"], ["a2fd", "\uE770\uE771"], ["a340", "\uE586", 62], ["a380", "\uE5C5", 31, "\u3000"], ["a440", "\uE5E6", 62], ["a480", "\uE625", 32], ["a4f4", "\uE772", 10], ["a540", "\uE646", 62], ["a580", "\uE685", 32], ["a5f7", "\uE77D", 7], ["a640", "\uE6A6", 62], ["a680", "\uE6E5", 32], ["a6b9", "\uE785", 7], ["a6d9", "\uE78D", 6], ["a6ec", "\uE794\uE795"], ["a6f3", "\uE796"], ["a6f6", "\uE797", 8], ["a740", "\uE706", 62], ["a780", "\uE745", 32], ["a7c2", "\uE7A0", 14], ["a7f2", "\uE7AF", 12], ["a896", "\uE7BC", 10], ["a8bc", "\uE7C7"], ["a8bf", "\u01F9"], ["a8c1", "\uE7C9\uE7CA\uE7CB\uE7CC"], ["a8ea", "\uE7CD", 20], ["a958", "\uE7E2"], ["a95b", "\uE7E3"], ["a95d", "\uE7E4\uE7E5\uE7E6"], ["a989", "\u303E\u2FF0", 11], ["a997", "\uE7F4", 12], ["a9f0", "\uE801", 14], ["aaa1", "\uE000", 93], ["aba1", "\uE05E", 93], ["aca1", "\uE0BC", 93], ["ada1", "\uE11A", 93], ["aea1", "\uE178", 93], ["afa1", "\uE1D6", 93], ["d7fa", "\uE810", 4], ["f8a1", "\uE234", 93], ["f9a1", "\uE292", 93], ["faa1", "\uE2F0", 93], ["fba1", "\uE34E", 93], ["fca1", "\uE3AC", 93], ["fda1", "\uE40A", 93], ["fe50", "\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"], ["fe80", "\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13", 6, "\u4DAE\uE864\uE468", 93] ]; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json var require_gb18030_ranges2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json"(exports2, module2) { module2.exports = { uChars: [128, 165, 169, 178, 184, 216, 226, 235, 238, 244, 248, 251, 253, 258, 276, 284, 300, 325, 329, 334, 364, 463, 465, 467, 469, 471, 473, 475, 477, 506, 594, 610, 712, 716, 730, 930, 938, 962, 970, 1026, 1104, 1106, 8209, 8215, 8218, 8222, 8231, 8241, 8244, 8246, 8252, 8365, 8452, 8454, 8458, 8471, 8482, 8556, 8570, 8596, 8602, 8713, 8720, 8722, 8726, 8731, 8737, 8740, 8742, 8748, 8751, 8760, 8766, 8777, 8781, 8787, 8802, 8808, 8816, 8854, 8858, 8870, 8896, 8979, 9322, 9372, 9548, 9588, 9616, 9622, 9634, 9652, 9662, 9672, 9676, 9680, 9702, 9735, 9738, 9793, 9795, 11906, 11909, 11913, 11917, 11928, 11944, 11947, 11951, 11956, 11960, 11964, 11979, 12284, 12292, 12312, 12319, 12330, 12351, 12436, 12447, 12535, 12543, 12586, 12842, 12850, 12964, 13200, 13215, 13218, 13253, 13263, 13267, 13270, 13384, 13428, 13727, 13839, 13851, 14617, 14703, 14801, 14816, 14964, 15183, 15471, 15585, 16471, 16736, 17208, 17325, 17330, 17374, 17623, 17997, 18018, 18212, 18218, 18301, 18318, 18760, 18811, 18814, 18820, 18823, 18844, 18848, 18872, 19576, 19620, 19738, 19887, 40870, 59244, 59336, 59367, 59413, 59417, 59423, 59431, 59437, 59443, 59452, 59460, 59478, 59493, 63789, 63866, 63894, 63976, 63986, 64016, 64018, 64021, 64025, 64034, 64037, 64042, 65074, 65093, 65107, 65112, 65127, 65132, 65375, 65510, 65536], gbChars: [0, 36, 38, 45, 50, 81, 89, 95, 96, 100, 103, 104, 105, 109, 126, 133, 148, 172, 175, 179, 208, 306, 307, 308, 309, 310, 311, 312, 313, 341, 428, 443, 544, 545, 558, 741, 742, 749, 750, 805, 819, 820, 7922, 7924, 7925, 7927, 7934, 7943, 7944, 7945, 7950, 8062, 8148, 8149, 8152, 8164, 8174, 8236, 8240, 8262, 8264, 8374, 8380, 8381, 8384, 8388, 8390, 8392, 8393, 8394, 8396, 8401, 8406, 8416, 8419, 8424, 8437, 8439, 8445, 8482, 8485, 8496, 8521, 8603, 8936, 8946, 9046, 9050, 9063, 9066, 9076, 9092, 9100, 9108, 9111, 9113, 9131, 9162, 9164, 9218, 9219, 11329, 11331, 11334, 11336, 11346, 11361, 11363, 11366, 11370, 11372, 11375, 11389, 11682, 11686, 11687, 11692, 11694, 11714, 11716, 11723, 11725, 11730, 11736, 11982, 11989, 12102, 12336, 12348, 12350, 12384, 12393, 12395, 12397, 12510, 12553, 12851, 12962, 12973, 13738, 13823, 13919, 13933, 14080, 14298, 14585, 14698, 15583, 15847, 16318, 16434, 16438, 16481, 16729, 17102, 17122, 17315, 17320, 17402, 17418, 17859, 17909, 17911, 17915, 17916, 17936, 17939, 17961, 18664, 18703, 18814, 18962, 19043, 33469, 33470, 33471, 33484, 33485, 33490, 33497, 33501, 33505, 33513, 33520, 33536, 33550, 37845, 37921, 37948, 38029, 38038, 38064, 38065, 38066, 38069, 38075, 38076, 38078, 39108, 39109, 39113, 39114, 39115, 39116, 39265, 39394, 189e3] }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp949.json var require_cp9492 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp949.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["8141", "\uAC02\uAC03\uAC05\uAC06\uAC0B", 4, "\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25", 6, "\uAC2E\uAC32\uAC33\uAC34"], ["8161", "\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41", 9, "\uAC4C\uAC4E", 5, "\uAC55"], ["8181", "\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D", 18, "\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B", 4, "\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95", 6, "\uAC9E\uACA2", 5, "\uACAB\uACAD\uACAE\uACB1", 6, "\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD", 7, "\uACD6\uACD8", 7, "\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7", 4, "\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07", 4, "\uAD0E\uAD10\uAD12\uAD13"], ["8241", "\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21", 7, "\uAD2A\uAD2B\uAD2E", 5], ["8261", "\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D", 6, "\uAD46\uAD48\uAD4A", 5, "\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"], ["8281", "\uAD59", 7, "\uAD62\uAD64", 7, "\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83", 4, "\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91", 10, "\uAD9E", 5, "\uADA5", 17, "\uADB8", 7, "\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9", 6, "\uADD2\uADD4", 7, "\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5", 18], ["8341", "\uADFA\uADFB\uADFD\uADFE\uAE02", 5, "\uAE0A\uAE0C\uAE0E", 5, "\uAE15", 7], ["8361", "\uAE1D", 18, "\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"], ["8381", "\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57", 4, "\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71", 6, "\uAE7A\uAE7E", 5, "\uAE86", 5, "\uAE8D", 46, "\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5", 6, "\uAECE\uAED2", 5, "\uAEDA\uAEDB\uAEDD", 8], ["8441", "\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE", 5, "\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD", 8], ["8461", "\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11", 18], ["8481", "\uAF24", 7, "\uAF2E\uAF2F\uAF31\uAF33\uAF35", 6, "\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A", 5, "\uAF51", 10, "\uAF5E", 5, "\uAF66", 18, "\uAF7A", 5, "\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89", 6, "\uAF92\uAF93\uAF94\uAF96", 5, "\uAF9D", 26, "\uAFBA\uAFBB\uAFBD\uAFBE"], ["8541", "\uAFBF\uAFC1", 5, "\uAFCA\uAFCC\uAFCF", 4, "\uAFD5", 6, "\uAFDD", 4], ["8561", "\uAFE2", 5, "\uAFEA", 5, "\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9", 6, "\uB002\uB003"], ["8581", "\uB005", 6, "\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015", 6, "\uB01E", 9, "\uB029", 26, "\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E", 29, "\uB07E\uB07F\uB081\uB082\uB083\uB085", 6, "\uB08E\uB090\uB092", 5, "\uB09B\uB09D\uB09E\uB0A3\uB0A4"], ["8641", "\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD", 6, "\uB0C6\uB0CA", 5, "\uB0D2"], ["8661", "\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9", 6, "\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6", 10], ["8681", "\uB0F1", 22, "\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E", 4, "\uB126\uB127\uB129\uB12A\uB12B\uB12D", 6, "\uB136\uB13A", 5, "\uB142\uB143\uB145\uB146\uB147\uB149", 6, "\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161", 22, "\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183", 4, "\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"], ["8741", "\uB19E", 9, "\uB1A9", 15], ["8761", "\uB1B9", 18, "\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"], ["8781", "\uB1D6", 5, "\uB1DE\uB1E0", 7, "\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1", 7, "\uB1FA\uB1FC\uB1FE", 5, "\uB206\uB207\uB209\uB20A\uB20D", 6, "\uB216\uB218\uB21A", 5, "\uB221", 18, "\uB235", 6, "\uB23D", 26, "\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261", 6, "\uB26A", 4], ["8841", "\uB26F", 4, "\uB276", 5, "\uB27D", 6, "\uB286\uB287\uB288\uB28A", 4], ["8861", "\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B", 4, "\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"], ["8881", "\uB2B8", 15, "\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3", 4, "\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309", 6, "\uB312\uB316", 5, "\uB31D", 54, "\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"], ["8941", "\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379", 6, "\uB382\uB386", 5, "\uB38D"], ["8961", "\uB38E\uB38F\uB391\uB392\uB393\uB395", 10, "\uB3A2", 5, "\uB3A9\uB3AA\uB3AB\uB3AD"], ["8981", "\uB3AE", 21, "\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9", 18, "\uB3FD", 18, "\uB411", 6, "\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421", 6, "\uB42A\uB42C", 7, "\uB435", 15], ["8a41", "\uB445", 10, "\uB452\uB453\uB455\uB456\uB457\uB459", 6, "\uB462\uB464\uB466"], ["8a61", "\uB467", 4, "\uB46D", 18, "\uB481\uB482"], ["8a81", "\uB483", 4, "\uB489", 19, "\uB49E", 5, "\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD", 7, "\uB4B6\uB4B8\uB4BA", 5, "\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9", 6, "\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6", 5, "\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7", 4, "\uB4EE\uB4F0\uB4F2", 5, "\uB4F9", 26, "\uB516\uB517\uB519\uB51A\uB51D"], ["8b41", "\uB51E", 5, "\uB526\uB52B", 4, "\uB532\uB533\uB535\uB536\uB537\uB539", 6, "\uB542\uB546"], ["8b61", "\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555", 6, "\uB55E\uB562", 8], ["8b81", "\uB56B", 52, "\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6", 4, "\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5", 6, "\uB5CE\uB5D2", 5, "\uB5D9", 18, "\uB5ED", 18], ["8c41", "\uB600", 15, "\uB612\uB613\uB615\uB616\uB617\uB619", 4], ["8c61", "\uB61E", 6, "\uB626", 5, "\uB62D", 6, "\uB635", 5], ["8c81", "\uB63B", 12, "\uB649", 26, "\uB665\uB666\uB667\uB669", 50, "\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5", 5, "\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2", 16], ["8d41", "\uB6C3", 16, "\uB6D5", 8], ["8d61", "\uB6DE", 17, "\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"], ["8d81", "\uB6FB", 4, "\uB702\uB703\uB704\uB706", 33, "\uB72A\uB72B\uB72D\uB72E\uB731", 6, "\uB73A\uB73C", 7, "\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D", 6, "\uB756", 9, "\uB761\uB762\uB763\uB765\uB766\uB767\uB769", 6, "\uB772\uB774\uB776", 5, "\uB77E\uB77F\uB781\uB782\uB783\uB785", 6, "\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"], ["8e41", "\uB79F\uB7A1", 6, "\uB7AA\uB7AE", 5, "\uB7B6\uB7B7\uB7B9", 8], ["8e61", "\uB7C2", 4, "\uB7C8\uB7CA", 19], ["8e81", "\uB7DE", 13, "\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5", 6, "\uB7FE\uB802", 4, "\uB80A\uB80B\uB80D\uB80E\uB80F\uB811", 6, "\uB81A\uB81C\uB81E", 5, "\uB826\uB827\uB829\uB82A\uB82B\uB82D", 6, "\uB836\uB83A", 5, "\uB841\uB842\uB843\uB845", 11, "\uB852\uB854", 7, "\uB85E\uB85F\uB861\uB862\uB863\uB865", 6, "\uB86E\uB870\uB872", 5, "\uB879\uB87A\uB87B\uB87D", 7], ["8f41", "\uB885", 7, "\uB88E", 17], ["8f61", "\uB8A0", 7, "\uB8A9", 6, "\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9", 4], ["8f81", "\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6", 5, "\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5", 7, "\uB8DE\uB8E0\uB8E2", 5, "\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1", 6, "\uB8FA\uB8FC\uB8FE", 5, "\uB905", 18, "\uB919", 6, "\uB921", 26, "\uB93E\uB93F\uB941\uB942\uB943\uB945", 6, "\uB94D\uB94E\uB950\uB952", 5], ["9041", "\uB95A\uB95B\uB95D\uB95E\uB95F\uB961", 6, "\uB96A\uB96C\uB96E", 5, "\uB976\uB977\uB979\uB97A\uB97B\uB97D"], ["9061", "\uB97E", 5, "\uB986\uB988\uB98B\uB98C\uB98F", 15], ["9081", "\uB99F", 12, "\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5", 6, "\uB9BE\uB9C0\uB9C2", 5, "\uB9CA\uB9CB\uB9CD\uB9D3", 4, "\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED", 6, "\uB9F6\uB9FB", 4, "\uBA02", 5, "\uBA09", 11, "\uBA16", 33, "\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"], ["9141", "\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D", 6, "\uBA66\uBA6A", 5], ["9161", "\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79", 9, "\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D", 5], ["9181", "\uBA93", 20, "\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3", 4, "\uBABA\uBABC\uBABE", 5, "\uBAC5\uBAC6\uBAC7\uBAC9", 14, "\uBADA", 33, "\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05", 7, "\uBB0E\uBB10\uBB12", 5, "\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21", 6], ["9241", "\uBB28\uBB2A\uBB2C", 7, "\uBB37\uBB39\uBB3A\uBB3F", 4, "\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"], ["9261", "\uBB53\uBB55\uBB56\uBB57\uBB59", 7, "\uBB62\uBB64", 7, "\uBB6D", 4], ["9281", "\uBB72", 21, "\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91", 18, "\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD", 6, "\uBBB5\uBBB6\uBBB8", 7, "\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9", 6, "\uBBD1\uBBD2\uBBD4", 35, "\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"], ["9341", "\uBC03", 4, "\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"], ["9361", "\uBC36\uBC37\uBC39", 6, "\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51", 8], ["9381", "\uBC5A\uBC5B\uBC5C\uBC5E", 37, "\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F", 4, "\uBC96\uBC98\uBC9B", 4, "\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9", 6, "\uBCB2\uBCB6", 5, "\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5", 7, "\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD", 22, "\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"], ["9441", "\uBCFE", 5, "\uBD06\uBD08\uBD0A", 5, "\uBD11\uBD12\uBD13\uBD15", 8], ["9461", "\uBD1E", 5, "\uBD25", 6, "\uBD2D", 12], ["9481", "\uBD3A", 5, "\uBD41", 6, "\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51", 6, "\uBD5A", 9, "\uBD65\uBD66\uBD67\uBD69", 22, "\uBD82\uBD83\uBD85\uBD86\uBD8B", 4, "\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D", 6, "\uBDA5", 10, "\uBDB1", 6, "\uBDB9", 24], ["9541", "\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD", 11, "\uBDEA", 5, "\uBDF1"], ["9561", "\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9", 6, "\uBE01\uBE02\uBE04\uBE06", 5, "\uBE0E\uBE0F\uBE11\uBE12\uBE13"], ["9581", "\uBE15", 6, "\uBE1E\uBE20", 35, "\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F", 4, "\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B", 4, "\uBE72\uBE76", 4, "\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85", 6, "\uBE8E\uBE92", 5, "\uBE9A", 13, "\uBEA9", 14], ["9641", "\uBEB8", 23, "\uBED2\uBED3"], ["9661", "\uBED5\uBED6\uBED9", 6, "\uBEE1\uBEE2\uBEE6", 5, "\uBEED", 8], ["9681", "\uBEF6", 10, "\uBF02", 5, "\uBF0A", 13, "\uBF1A\uBF1E", 33, "\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49", 6, "\uBF52\uBF53\uBF54\uBF56", 44], ["9741", "\uBF83", 16, "\uBF95", 8], ["9761", "\uBF9E", 17, "\uBFB1", 7], ["9781", "\uBFB9", 11, "\uBFC6", 5, "\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5", 6, "\uBFDD\uBFDE\uBFE0\uBFE2", 89, "\uC03D\uC03E\uC03F"], ["9841", "\uC040", 16, "\uC052", 5, "\uC059\uC05A\uC05B"], ["9861", "\uC05D\uC05E\uC05F\uC061", 6, "\uC06A", 15], ["9881", "\uC07A", 21, "\uC092\uC093\uC095\uC096\uC097\uC099", 6, "\uC0A2\uC0A4\uC0A6", 5, "\uC0AE\uC0B1\uC0B2\uC0B7", 4, "\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1", 6, "\uC0DA\uC0DE", 5, "\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED", 6, "\uC0F6\uC0F8\uC0FA", 5, "\uC101\uC102\uC103\uC105\uC106\uC107\uC109", 6, "\uC111\uC112\uC113\uC114\uC116", 5, "\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"], ["9941", "\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141", 6, "\uC14A\uC14E", 5, "\uC156\uC157"], ["9961", "\uC159\uC15A\uC15B\uC15D", 6, "\uC166\uC16A", 5, "\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"], ["9981", "\uC17C", 8, "\uC186", 5, "\uC18F\uC191\uC192\uC193\uC195\uC197", 4, "\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1", 11, "\uC1BE", 5, "\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD", 6, "\uC1D5\uC1D6\uC1D9", 6, "\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9", 6, "\uC1F2\uC1F4", 7, "\uC1FE\uC1FF\uC201\uC202\uC203\uC205", 6, "\uC20E\uC210\uC212", 5, "\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"], ["9a41", "\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235", 16], ["9a61", "\uC246\uC247\uC249", 6, "\uC252\uC253\uC255\uC256\uC257\uC259", 6, "\uC261\uC262\uC263\uC264\uC266"], ["9a81", "\uC267", 4, "\uC26E\uC26F\uC271\uC272\uC273\uC275", 6, "\uC27E\uC280\uC282", 5, "\uC28A", 5, "\uC291", 6, "\uC299\uC29A\uC29C\uC29E", 5, "\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE", 5, "\uC2B6\uC2B8\uC2BA", 33, "\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5", 5, "\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301", 6, "\uC30A\uC30B\uC30E\uC30F"], ["9b41", "\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D", 6, "\uC326\uC327\uC32A", 8], ["9b61", "\uC333", 17, "\uC346", 7], ["9b81", "\uC34E", 25, "\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373", 4, "\uC37A\uC37B\uC37E", 5, "\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D", 50, "\uC3C1", 22, "\uC3DA"], ["9c41", "\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3", 4, "\uC3EA\uC3EB\uC3EC\uC3EE", 5, "\uC3F6\uC3F7\uC3F9", 5], ["9c61", "\uC3FF", 8, "\uC409", 6, "\uC411", 9], ["9c81", "\uC41B", 8, "\uC425", 6, "\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435", 6, "\uC43E", 9, "\uC449", 26, "\uC466\uC467\uC469\uC46A\uC46B\uC46D", 6, "\uC476\uC477\uC478\uC47A", 5, "\uC481", 18, "\uC495", 6, "\uC49D", 12], ["9d41", "\uC4AA", 13, "\uC4B9\uC4BA\uC4BB\uC4BD", 8], ["9d61", "\uC4C6", 25], ["9d81", "\uC4E0", 8, "\uC4EA", 5, "\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502", 9, "\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515", 6, "\uC51D", 10, "\uC52A\uC52B\uC52D\uC52E\uC52F\uC531", 6, "\uC53A\uC53C\uC53E", 5, "\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569", 6, "\uC572\uC576", 5, "\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"], ["9e41", "\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1", 7, "\uC5AA", 9, "\uC5B6"], ["9e61", "\uC5B7\uC5BA\uC5BF", 4, "\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9", 6, "\uC5E2\uC5E4\uC5E6\uC5E7"], ["9e81", "\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611", 6, "\uC61A\uC61D", 6, "\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649", 6, "\uC652\uC656", 5, "\uC65E\uC65F\uC661", 10, "\uC66D\uC66E\uC670\uC672", 5, "\uC67A\uC67B\uC67D\uC67E\uC67F\uC681", 6, "\uC68A\uC68C\uC68E", 5, "\uC696\uC697\uC699\uC69A\uC69B\uC69D", 6, "\uC6A6"], ["9f41", "\uC6A8\uC6AA", 5, "\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB", 4, "\uC6C2\uC6C4\uC6C6", 5, "\uC6CE"], ["9f61", "\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5", 6, "\uC6DE\uC6DF\uC6E2", 5, "\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"], ["9f81", "\uC6F3", 4, "\uC6FA\uC6FB\uC6FC\uC6FE", 5, "\uC706\uC707\uC709\uC70A\uC70B\uC70D", 6, "\uC716\uC718\uC71A", 5, "\uC722\uC723\uC725\uC726\uC727\uC729", 6, "\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745", 4, "\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761", 6, "\uC769\uC76A\uC76C", 7, "\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B", 4, "\uC7A2\uC7A7", 4, "\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"], ["a041", "\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2", 5, "\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1", 6, "\uC7D9\uC7DA\uC7DB\uC7DC"], ["a061", "\uC7DE", 5, "\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED", 13], ["a081", "\uC7FB", 4, "\uC802\uC803\uC805\uC806\uC807\uC809\uC80B", 4, "\uC812\uC814\uC817", 4, "\uC81E\uC81F\uC821\uC822\uC823\uC825", 6, "\uC82E\uC830\uC832", 5, "\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841", 6, "\uC84A\uC84B\uC84E", 5, "\uC855", 26, "\uC872\uC873\uC875\uC876\uC877\uC879\uC87B", 4, "\uC882\uC884\uC888\uC889\uC88A\uC88E", 5, "\uC895", 7, "\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"], ["a141", "\uC8A5\uC8A6\uC8A7\uC8A9", 18, "\uC8BE\uC8BF\uC8C0\uC8C1"], ["a161", "\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD", 6, "\uC8D6\uC8D8\uC8DA", 5, "\uC8E2\uC8E3\uC8E5"], ["a181", "\uC8E6", 14, "\uC8F6", 5, "\uC8FE\uC8FF\uC901\uC902\uC903\uC907", 4, "\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008", 9, "\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"], ["a241", "\uC910\uC912", 5, "\uC919", 18], ["a261", "\uC92D", 6, "\uC935", 18], ["a281", "\uC948", 7, "\uC952\uC953\uC955\uC956\uC957\uC959", 6, "\uC962\uC964", 7, "\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"], ["a341", "\uC971\uC972\uC973\uC975", 6, "\uC97D", 10, "\uC98A\uC98B\uC98D\uC98E\uC98F"], ["a361", "\uC991", 6, "\uC99A\uC99C\uC99E", 16], ["a381", "\uC9AF", 16, "\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB", 4, "\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01", 58, "\uFFE6\uFF3D", 32, "\uFFE3"], ["a441", "\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2", 5, "\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"], ["a461", "\uCA05\uCA06\uCA07\uCA0A\uCA0E", 5, "\uCA15\uCA16\uCA17\uCA19", 12], ["a481", "\uCA26\uCA27\uCA28\uCA2A", 28, "\u3131", 93], ["a541", "\uCA47", 4, "\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55", 6, "\uCA5E\uCA62", 5, "\uCA69\uCA6A"], ["a561", "\uCA6B", 17, "\uCA7E", 5, "\uCA85\uCA86"], ["a581", "\uCA87", 16, "\uCA99", 14, "\u2170", 9], ["a5b0", "\u2160", 9], ["a5c1", "\u0391", 16, "\u03A3", 6], ["a5e1", "\u03B1", 16, "\u03C3", 6], ["a641", "\uCAA8", 19, "\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"], ["a661", "\uCAC6", 5, "\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA", 5, "\uCAE1", 6], ["a681", "\uCAE8\uCAE9\uCAEA\uCAEB\uCAED", 6, "\uCAF5", 18, "\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543", 7], ["a741", "\uCB0B", 4, "\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19", 6, "\uCB22", 7], ["a761", "\uCB2A", 22, "\uCB42\uCB43\uCB44"], ["a781", "\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51", 6, "\uCB5A\uCB5B\uCB5C\uCB5E", 5, "\uCB65", 7, "\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399", 9, "\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0", 9, "\u3380", 4, "\u33BA", 5, "\u3390", 4, "\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"], ["a841", "\uCB6D", 10, "\uCB7A", 14], ["a861", "\uCB89", 18, "\uCB9D", 6], ["a881", "\uCBA4", 19, "\uCBB9", 11, "\xC6\xD0\xAA\u0126"], ["a8a6", "\u0132"], ["a8a8", "\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"], ["a8b1", "\u3260", 27, "\u24D0", 25, "\u2460", 14, "\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"], ["a941", "\uCBC5", 14, "\uCBD5", 10], ["a961", "\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA", 18], ["a981", "\uCBFD", 14, "\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15", 6, "\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200", 27, "\u249C", 25, "\u2474", 14, "\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"], ["aa41", "\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31", 6, "\uCC3A\uCC3F", 4, "\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"], ["aa61", "\uCC4F", 4, "\uCC56\uCC5A", 5, "\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69", 6, "\uCC71\uCC72"], ["aa81", "\uCC73\uCC74\uCC76", 29, "\u3041", 82], ["ab41", "\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1", 6, "\uCCAA\uCCAE", 5, "\uCCB6\uCCB7\uCCB9"], ["ab61", "\uCCBA\uCCBB\uCCBD", 6, "\uCCC6\uCCC8\uCCCA", 5, "\uCCD1\uCCD2\uCCD3\uCCD5", 5], ["ab81", "\uCCDB", 8, "\uCCE5", 6, "\uCCED\uCCEE\uCCEF\uCCF1", 12, "\u30A1", 85], ["ac41", "\uCCFE\uCCFF\uCD00\uCD02", 5, "\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11", 6, "\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"], ["ac61", "\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D", 11, "\uCD3A", 4], ["ac81", "\uCD3F", 28, "\uCD5D\uCD5E\uCD5F\u0410", 5, "\u0401\u0416", 25], ["acd1", "\u0430", 5, "\u0451\u0436", 25], ["ad41", "\uCD61\uCD62\uCD63\uCD65", 6, "\uCD6E\uCD70\uCD72", 5, "\uCD79", 7], ["ad61", "\uCD81", 6, "\uCD89", 10, "\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"], ["ad81", "\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA", 5, "\uCDB1", 18, "\uCDC5"], ["ae41", "\uCDC6", 5, "\uCDCD\uCDCE\uCDCF\uCDD1", 16], ["ae61", "\uCDE2", 5, "\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1", 6, "\uCDFA\uCDFC\uCDFE", 4], ["ae81", "\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D", 6, "\uCE15\uCE16\uCE17\uCE18\uCE1A", 5, "\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"], ["af41", "\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36", 19], ["af61", "\uCE4A", 13, "\uCE5A\uCE5B\uCE5D\uCE5E\uCE62", 5, "\uCE6A\uCE6C"], ["af81", "\uCE6E", 5, "\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D", 6, "\uCE86\uCE88\uCE8A", 5, "\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"], ["b041", "\uCE9A", 5, "\uCEA2\uCEA6", 5, "\uCEAE", 12], ["b061", "\uCEBB", 5, "\uCEC2", 19], ["b081", "\uCED6", 13, "\uCEE6\uCEE7\uCEE9\uCEEA\uCEED", 6, "\uCEF6\uCEFA", 5, "\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10", 7, "\uAC19", 4, "\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"], ["b141", "\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09", 6, "\uCF12\uCF14\uCF16", 5, "\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"], ["b161", "\uCF25", 6, "\uCF2E\uCF32", 5, "\uCF39", 11], ["b181", "\uCF45", 14, "\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D", 6, "\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"], ["b241", "\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79", 6, "\uCF81\uCF82\uCF83\uCF84\uCF86", 5, "\uCF8D"], ["b261", "\uCF8E", 18, "\uCFA2", 5, "\uCFA9"], ["b281", "\uCFAA", 5, "\uCFB1", 18, "\uCFC5", 6, "\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"], ["b341", "\uCFCC", 19, "\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"], ["b361", "\uCFEA", 5, "\uCFF2\uCFF4\uCFF6", 5, "\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005", 5], ["b381", "\uD00B", 5, "\uD012", 5, "\uD019", 19, "\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB", 4, "\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"], ["b441", "\uD02E", 5, "\uD036\uD037\uD039\uD03A\uD03B\uD03D", 6, "\uD046\uD048\uD04A", 5], ["b461", "\uD051\uD052\uD053\uD055\uD056\uD057\uD059", 6, "\uD061", 10, "\uD06E\uD06F"], ["b481", "\uD071\uD072\uD073\uD075", 6, "\uD07E\uD07F\uD080\uD082", 18, "\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB", 4, "\uB2F3\uB2F4\uB2F5\uB2F7", 4, "\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"], ["b541", "\uD095", 14, "\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD", 5], ["b561", "\uD0B3\uD0B6\uD0B8\uD0BA", 5, "\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA", 5, "\uD0D2\uD0D6", 4], ["b581", "\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5", 6, "\uD0EE\uD0F2", 5, "\uD0F9", 11, "\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"], ["b641", "\uD105", 7, "\uD10E", 17], ["b661", "\uD120", 15, "\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"], ["b681", "\uD13F\uD142\uD146", 5, "\uD14E\uD14F\uD151\uD152\uD153\uD155", 6, "\uD15E\uD160\uD162", 5, "\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"], ["b741", "\uD16E", 13, "\uD17D", 6, "\uD185\uD186\uD187\uD189\uD18A"], ["b761", "\uD18B", 20, "\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"], ["b781", "\uD1A9", 6, "\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1", 14, "\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"], ["b841", "\uD1D0", 7, "\uD1D9", 17], ["b861", "\uD1EB", 8, "\uD1F5\uD1F6\uD1F7\uD1F9", 13], ["b881", "\uD208\uD20A", 5, "\uD211", 24, "\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE", 4, "\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"], ["b941", "\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235", 6, "\uD23E\uD240\uD242", 5, "\uD249\uD24A\uD24B\uD24C"], ["b961", "\uD24D", 14, "\uD25D", 6, "\uD265\uD266\uD267\uD268"], ["b981", "\uD269", 22, "\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14", 4, "\uBC1B", 4, "\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"], ["ba41", "\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296", 5, "\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5", 6, "\uD2AD"], ["ba61", "\uD2AE\uD2AF\uD2B0\uD2B2", 5, "\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3", 4, "\uD2CA\uD2CC", 5], ["ba81", "\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD", 6, "\uD2E6", 9, "\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"], ["bb41", "\uD2FB", 4, "\uD302\uD304\uD306", 5, "\uD30F\uD311\uD312\uD313\uD315\uD317", 4, "\uD31E\uD322\uD323"], ["bb61", "\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331", 6, "\uD33A\uD33E", 5, "\uD346\uD347\uD348\uD349"], ["bb81", "\uD34A", 31, "\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"], ["bc41", "\uD36A", 17, "\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"], ["bc61", "\uD388\uD389\uD38A\uD38B\uD38E\uD392", 5, "\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1", 6, "\uD3AA\uD3AC\uD3AE"], ["bc81", "\uD3AF", 4, "\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD", 6, "\uD3C6\uD3C7\uD3CA", 5, "\uD3D1", 5, "\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C", 4, "\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"], ["bd41", "\uD3D7\uD3D9", 7, "\uD3E2\uD3E4", 7, "\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"], ["bd61", "\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402", 5, "\uD409", 13], ["bd81", "\uD417", 5, "\uD41E", 25, "\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"], ["be41", "\uD438", 7, "\uD441\uD442\uD443\uD445", 14], ["be61", "\uD454", 7, "\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465", 7, "\uD46E\uD470\uD471\uD472"], ["be81", "\uD473", 4, "\uD47A\uD47B\uD47D\uD47E\uD481\uD483", 4, "\uD48A\uD48C\uD48E", 5, "\uD495", 8, "\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4", 6, "\uC5CC\uC5CE"], ["bf41", "\uD49E", 10, "\uD4AA", 14], ["bf61", "\uD4B9", 18, "\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"], ["bf81", "\uD4D6", 5, "\uD4DD\uD4DE\uD4E0", 7, "\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1", 6, "\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC", 5, "\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"], ["c041", "\uD4FE", 5, "\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D", 6, "\uD516\uD518", 5], ["c061", "\uD51E", 25], ["c081", "\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545", 6, "\uD54E\uD550\uD552", 5, "\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751", 7, "\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"], ["c141", "\uD564\uD566\uD567\uD56A\uD56C\uD56E", 5, "\uD576\uD577\uD579\uD57A\uD57B\uD57D", 6, "\uD586\uD58A\uD58B"], ["c161", "\uD58C\uD58D\uD58E\uD58F\uD591", 19, "\uD5A6\uD5A7"], ["c181", "\uD5A8", 31, "\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"], ["c241", "\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3", 4, "\uD5DA\uD5DC\uD5DE", 5, "\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"], ["c261", "\uD5EF", 4, "\uD5F6\uD5F8\uD5FA", 5, "\uD602\uD603\uD605\uD606\uD607\uD609", 6, "\uD612"], ["c281", "\uD616", 5, "\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625", 7, "\uD62E", 9, "\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"], ["c341", "\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D", 4], ["c361", "\uD662", 4, "\uD668\uD66A", 5, "\uD672\uD673\uD675", 11], ["c381", "\uD681\uD682\uD684\uD686", 5, "\uD68E\uD68F\uD691\uD692\uD693\uD695", 7, "\uD69E\uD6A0\uD6A2", 5, "\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"], ["c441", "\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1", 7, "\uD6BA\uD6BC", 7, "\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"], ["c461", "\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA", 5, "\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9", 4], ["c481", "\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6", 5, "\uD6FE\uD6FF\uD701\uD702\uD703\uD705", 11, "\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"], ["c541", "\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721", 6, "\uD72A\uD72C\uD72E", 5, "\uD736\uD737\uD739"], ["c561", "\uD73A\uD73B\uD73D", 6, "\uD745\uD746\uD748\uD74A", 5, "\uD752\uD753\uD755\uD75A", 4], ["c581", "\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775", 6, "\uD77E\uD77F\uD780\uD782", 5, "\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"], ["c641", "\uD78D\uD78E\uD78F\uD791", 6, "\uD79A\uD79C\uD79E", 5], ["c6a1", "\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"], ["c7a1", "\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"], ["c8a1", "\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"], ["caa1", "\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"], ["cba1", "\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"], ["cca1", "\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"], ["cda1", "\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"], ["cea1", "\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"], ["cfa1", "\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"], ["d0a1", "\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"], ["d1a1", "\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E", 5, "\u90A3\uF914", 4, "\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"], ["d2a1", "\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928", 4, "\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933", 5, "\u99D1\uF939", 10, "\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A", 7, "\u5AE9\u8A25\u677B\u7D10\uF952", 5, "\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"], ["d3a1", "\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"], ["d4a1", "\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"], ["d5a1", "\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"], ["d6a1", "\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"], ["d7a1", "\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"], ["d8a1", "\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"], ["d9a1", "\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"], ["daa1", "\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"], ["dba1", "\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"], ["dca1", "\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"], ["dda1", "\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"], ["dea1", "\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"], ["dfa1", "\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"], ["e0a1", "\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"], ["e1a1", "\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"], ["e2a1", "\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"], ["e3a1", "\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"], ["e4a1", "\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"], ["e5a1", "\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"], ["e6a1", "\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"], ["e7a1", "\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"], ["e8a1", "\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"], ["e9a1", "\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"], ["eaa1", "\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"], ["eba1", "\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"], ["eca1", "\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"], ["eda1", "\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"], ["eea1", "\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"], ["efa1", "\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"], ["f0a1", "\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"], ["f1a1", "\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"], ["f2a1", "\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"], ["f3a1", "\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"], ["f4a1", "\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"], ["f5a1", "\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"], ["f6a1", "\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"], ["f7a1", "\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"], ["f8a1", "\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"], ["f9a1", "\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"], ["faa1", "\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"], ["fba1", "\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"], ["fca1", "\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"], ["fda1", "\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"] ]; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp950.json var require_cp9502 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/cp950.json"(exports2, module2) { module2.exports = [ ["0", "\0", 127], ["a140", "\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"], ["a1a1", "\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62", 4, "\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"], ["a240", "\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581", 7, "\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"], ["a2a1", "\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10", 9, "\u2160", 9, "\u3021", 8, "\u5341\u5344\u5345\uFF21", 25, "\uFF41", 21], ["a340", "\uFF57\uFF58\uFF59\uFF5A\u0391", 16, "\u03A3", 6, "\u03B1", 16, "\u03C3", 6, "\u3105", 10], ["a3a1", "\u3110", 25, "\u02D9\u02C9\u02CA\u02C7\u02CB"], ["a3e1", "\u20AC"], ["a440", "\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"], ["a4a1", "\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"], ["a540", "\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"], ["a5a1", "\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"], ["a640", "\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"], ["a6a1", "\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"], ["a740", "\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"], ["a7a1", "\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"], ["a840", "\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"], ["a8a1", "\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"], ["a940", "\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"], ["a9a1", "\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"], ["aa40", "\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"], ["aaa1", "\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"], ["ab40", "\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"], ["aba1", "\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"], ["ac40", "\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"], ["aca1", "\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"], ["ad40", "\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"], ["ada1", "\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"], ["ae40", "\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"], ["aea1", "\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"], ["af40", "\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"], ["afa1", "\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"], ["b040", "\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"], ["b0a1", "\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"], ["b140", "\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"], ["b1a1", "\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"], ["b240", "\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"], ["b2a1", "\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"], ["b340", "\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"], ["b3a1", "\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"], ["b440", "\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"], ["b4a1", "\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"], ["b540", "\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"], ["b5a1", "\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"], ["b640", "\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"], ["b6a1", "\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"], ["b740", "\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"], ["b7a1", "\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"], ["b840", "\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"], ["b8a1", "\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"], ["b940", "\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"], ["b9a1", "\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"], ["ba40", "\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"], ["baa1", "\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"], ["bb40", "\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"], ["bba1", "\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"], ["bc40", "\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"], ["bca1", "\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"], ["bd40", "\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"], ["bda1", "\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"], ["be40", "\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"], ["bea1", "\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"], ["bf40", "\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"], ["bfa1", "\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"], ["c040", "\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"], ["c0a1", "\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"], ["c140", "\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"], ["c1a1", "\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"], ["c240", "\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"], ["c2a1", "\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"], ["c340", "\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"], ["c3a1", "\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"], ["c440", "\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"], ["c4a1", "\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"], ["c540", "\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"], ["c5a1", "\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"], ["c640", "\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"], ["c940", "\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"], ["c9a1", "\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"], ["ca40", "\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"], ["caa1", "\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"], ["cb40", "\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"], ["cba1", "\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"], ["cc40", "\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"], ["cca1", "\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"], ["cd40", "\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"], ["cda1", "\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"], ["ce40", "\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"], ["cea1", "\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"], ["cf40", "\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"], ["cfa1", "\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"], ["d040", "\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"], ["d0a1", "\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"], ["d140", "\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"], ["d1a1", "\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"], ["d240", "\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"], ["d2a1", "\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"], ["d340", "\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"], ["d3a1", "\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"], ["d440", "\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"], ["d4a1", "\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"], ["d540", "\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"], ["d5a1", "\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"], ["d640", "\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"], ["d6a1", "\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"], ["d740", "\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"], ["d7a1", "\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"], ["d840", "\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"], ["d8a1", "\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"], ["d940", "\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"], ["d9a1", "\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"], ["da40", "\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"], ["daa1", "\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"], ["db40", "\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"], ["dba1", "\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"], ["dc40", "\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"], ["dca1", "\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"], ["dd40", "\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"], ["dda1", "\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"], ["de40", "\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"], ["dea1", "\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"], ["df40", "\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"], ["dfa1", "\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"], ["e040", "\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"], ["e0a1", "\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"], ["e140", "\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"], ["e1a1", "\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"], ["e240", "\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"], ["e2a1", "\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"], ["e340", "\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"], ["e3a1", "\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"], ["e440", "\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"], ["e4a1", "\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"], ["e540", "\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"], ["e5a1", "\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"], ["e640", "\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"], ["e6a1", "\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"], ["e740", "\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"], ["e7a1", "\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"], ["e840", "\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"], ["e8a1", "\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"], ["e940", "\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"], ["e9a1", "\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"], ["ea40", "\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"], ["eaa1", "\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"], ["eb40", "\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"], ["eba1", "\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"], ["ec40", "\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"], ["eca1", "\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"], ["ed40", "\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"], ["eda1", "\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"], ["ee40", "\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"], ["eea1", "\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"], ["ef40", "\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"], ["efa1", "\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"], ["f040", "\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"], ["f0a1", "\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"], ["f140", "\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"], ["f1a1", "\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"], ["f240", "\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"], ["f2a1", "\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"], ["f340", "\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"], ["f3a1", "\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"], ["f440", "\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"], ["f4a1", "\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"], ["f540", "\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"], ["f5a1", "\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"], ["f640", "\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"], ["f6a1", "\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"], ["f740", "\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"], ["f7a1", "\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"], ["f840", "\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"], ["f8a1", "\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"], ["f940", "\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"], ["f9a1", "\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"] ]; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/big5-added.json var require_big5_added2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/tables/big5-added.json"(exports2, module2) { module2.exports = [ ["8740", "\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"], ["8767", "\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"], ["87a1", "\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"], ["8840", "\u31C0", 4, "\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"], ["88a1", "\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"], ["8940", "\u{2A3A9}\u{21145}"], ["8943", "\u650A"], ["8946", "\u4E3D\u6EDD\u9D4E\u91DF"], ["894c", "\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"], ["89a1", "\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"], ["89ab", "\u918C\u78B8\u915E\u80BC"], ["89b0", "\u8D0B\u80F6\u{209E7}"], ["89b5", "\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"], ["89c1", "\u6E9A\u823E\u7519"], ["89c5", "\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"], ["8a40", "\u{27D84}\u5525"], ["8a43", "\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"], ["8a64", "\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"], ["8a76", "\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"], ["8aa1", "\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"], ["8aac", "\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"], ["8ab2", "\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"], ["8abb", "\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"], ["8ac9", "\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"], ["8ace", "\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"], ["8adf", "\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"], ["8af6", "\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"], ["8b40", "\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"], ["8b55", "\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"], ["8ba1", "\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"], ["8bde", "\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"], ["8c40", "\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"], ["8ca1", "\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"], ["8ca7", "\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"], ["8cc9", "\u9868\u676B\u4276\u573D"], ["8cce", "\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"], ["8ce6", "\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"], ["8d40", "\u{20B9F}"], ["8d42", "\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"], ["8da1", "\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"], ["8e40", "\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"], ["8ea1", "\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"], ["8f40", "\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"], ["8fa1", "\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"], ["9040", "\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"], ["90a1", "\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"], ["9140", "\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"], ["91a1", "\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"], ["9240", "\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"], ["92a1", "\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"], ["9340", "\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"], ["93a1", "\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"], ["9440", "\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"], ["94a1", "\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"], ["9540", "\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"], ["95a1", "\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"], ["9640", "\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"], ["96a1", "\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"], ["9740", "\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"], ["97a1", "\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"], ["9840", "\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"], ["98a1", "\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"], ["9940", "\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"], ["99a1", "\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"], ["9a40", "\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"], ["9aa1", "\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"], ["9b40", "\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"], ["9b62", "\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"], ["9ba1", "\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"], ["9c40", "\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"], ["9ca1", "\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"], ["9d40", "\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"], ["9da1", "\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"], ["9e40", "\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"], ["9ea1", "\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"], ["9ead", "\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"], ["9ec5", "\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"], ["9ef5", "\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"], ["9f40", "\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"], ["9f4f", "\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"], ["9fa1", "\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"], ["9fae", "\u9159\u9681\u915C"], ["9fb2", "\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"], ["9fc1", "\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"], ["9fc9", "\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"], ["9fdb", "\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"], ["9fe7", "\u6BFA\u8818\u7F78"], ["9feb", "\u5620\u{2A64A}\u8E77\u9F53"], ["9ff0", "\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"], ["a040", "\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"], ["a055", "\u{2183B}\u{26E05}"], ["a058", "\u8A7E\u{2251B}"], ["a05b", "\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"], ["a063", "\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"], ["a073", "\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"], ["a0a1", "\u5D57\u{28BC2}\u8FDA\u{28E39}"], ["a0a6", "\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"], ["a0ae", "\u77FE"], ["a0b0", "\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"], ["a0d4", "\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"], ["a0e2", "\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"], ["a3c0", "\u2400", 31, "\u2421"], ["c6a1", "\u2460", 9, "\u2474", 9, "\u2170", 9, "\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041", 23], ["c740", "\u3059", 58, "\u30A1\u30A2\u30A3\u30A4"], ["c7a1", "\u30A5", 81, "\u0410", 5, "\u0401\u0416", 4], ["c840", "\u041B", 26, "\u0451\u0436", 25, "\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"], ["c8a1", "\u9FB0\u5188\u9FB1\u{27607}"], ["c8cd", "\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"], ["c8f5", "\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"], ["f9fe", "\uFFED"], ["fa40", "\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"], ["faa1", "\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"], ["fb40", "\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"], ["fba1", "\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"], ["fc40", "\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"], ["fca1", "\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"], ["fd40", "\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"], ["fda1", "\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"], ["fe40", "\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"], ["fea1", "\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"] ]; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-data.js var require_dbcs_data2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/dbcs-data.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { // == Japanese/ShiftJIS ==================================================== // All japanese encodings are based on JIS X set of standards: // JIS X 0201 - Single-byte encoding of ASCII + ¥ + Kana chars at 0xA1-0xDF. // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. // Has several variations in 1978, 1983, 1990 and 1997. // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead. // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233. // 2 planes, first is superset of 0208, second - revised 0212. // Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx) // Byte encodings are: // * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte // encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC. // Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI. // * EUC-JP: Up to 3 bytes per character. Used mostly on *nixes. // 0x00-0x7F - lower part of 0201 // 0x8E, 0xA1-0xDF - upper part of 0201 // (0xA1-0xFE)x2 - 0208 plane (94x94). // 0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94). // * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon. // Used as-is in ISO2022 family. // * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, // 0201-1976 Roman, 0208-1978, 0208-1983. // * ISO2022-JP-1: Adds esc seq for 0212-1990. // * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7. // * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2. // * ISO2022-JP-2004: Adds 0213-2004 Plane 1. // // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes. // // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html "shiftjis": { type: "_dbcs", table: function() { return require_shiftjis2(); }, encodeAdd: { "\xA5": 92, "\u203E": 126 }, encodeSkipVals: [{ from: 60736, to: 63808 }] }, "csshiftjis": "shiftjis", "mskanji": "shiftjis", "sjis": "shiftjis", "windows31j": "shiftjis", "ms31j": "shiftjis", "xsjis": "shiftjis", "windows932": "shiftjis", "ms932": "shiftjis", "932": "shiftjis", "cp932": "shiftjis", "eucjp": { type: "_dbcs", table: function() { return require_eucjp2(); }, encodeAdd: { "\xA5": 92, "\u203E": 126 } }, // TODO: KDDI extension to Shift_JIS // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes. // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars. // == Chinese/GBK ========================================================== // http://en.wikipedia.org/wiki/GBK // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936 "gb2312": "cp936", "gb231280": "cp936", "gb23121980": "cp936", "csgb2312": "cp936", "csiso58gb231280": "cp936", "euccn": "cp936", // Microsoft's CP936 is a subset and approximation of GBK. "windows936": "cp936", "ms936": "cp936", "936": "cp936", "cp936": { type: "_dbcs", table: function() { return require_cp9362(); } }, // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other. "gbk": { type: "_dbcs", table: function() { return require_cp9362().concat(require_gbk_added2()); } }, "xgbk": "gbk", "isoir58": "gbk", // GB18030 is an algorithmic extension of GBK. // Main source: https://www.w3.org/TR/encoding/#gbk-encoder // http://icu-project.org/docs/papers/gb18030.html // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0 "gb18030": { type: "_dbcs", table: function() { return require_cp9362().concat(require_gbk_added2()); }, gb18030: function() { return require_gb18030_ranges2(); }, encodeSkipVals: [128], encodeAdd: { "\u20AC": 41699 } }, "chinese": "gb18030", // == Korean =============================================================== // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same. "windows949": "cp949", "ms949": "cp949", "949": "cp949", "cp949": { type: "_dbcs", table: function() { return require_cp9492(); } }, "cseuckr": "cp949", "csksc56011987": "cp949", "euckr": "cp949", "isoir149": "cp949", "korean": "cp949", "ksc56011987": "cp949", "ksc56011989": "cp949", "ksc5601": "cp949", // == Big5/Taiwan/Hong Kong ================================================ // There are lots of tables for Big5 and cp950. Please see the following links for history: // http://moztw.org/docs/big5/ http://www.haible.de/bruno/charsets/conversion-tables/Big5.html // Variations, in roughly number of defined chars: // * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT // * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/ // * Big5-2003 (Taiwan standard) almost superset of cp950. // * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers. // * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. // many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years. // Plus, it has 4 combining sequences. // Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299 // because big5-hkscs is the only encoding to include astral characters in non-algorithmic way. // Implementations are not consistent within browsers; sometimes labeled as just big5. // MS Internet Explorer switches from big5 to big5-hkscs when a patch applied. // Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31 // In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s. // Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt // http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt // // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong. "windows950": "cp950", "ms950": "cp950", "950": "cp950", "cp950": { type: "_dbcs", table: function() { return require_cp9502(); } }, // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus. "big5": "big5hkscs", "big5hkscs": { type: "_dbcs", table: function() { return require_cp9502().concat(require_big5_added2()); }, encodeSkipVals: [41676] }, "cnbig5": "big5hkscs", "csbig5": "big5hkscs", "xxbig5": "big5hkscs" }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/index.js var require_encodings2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/encodings/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var modules = [ require_internal2(), require_utf162(), require_utf72(), require_sbcs_codec2(), require_sbcs_data2(), require_sbcs_data_generated2(), require_dbcs_codec2(), require_dbcs_data2() ]; for (i = 0; i < modules.length; i++) { module2 = modules[i]; for (enc in module2) if (Object.prototype.hasOwnProperty.call(module2, enc)) exports2[enc] = module2[enc]; } var module2; var enc; var i; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/lib/streams.js var require_streams2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/lib/streams.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require("buffer").Buffer; var Transform = require("stream").Transform; module2.exports = function(iconv) { iconv.encodeStream = function encodeStream(encoding, options) { return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options); }; iconv.decodeStream = function decodeStream(encoding, options) { return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options); }; iconv.supportsStreams = true; iconv.IconvLiteEncoderStream = IconvLiteEncoderStream; iconv.IconvLiteDecoderStream = IconvLiteDecoderStream; iconv._collect = IconvLiteDecoderStream.prototype.collect; }; function IconvLiteEncoderStream(conv, options) { this.conv = conv; options = options || {}; options.decodeStrings = false; Transform.call(this, options); } IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, { constructor: { value: IconvLiteEncoderStream } }); IconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) { if (typeof chunk != "string") return done(new Error("Iconv encoding stream needs strings as its input.")); try { var res = this.conv.write(chunk); if (res && res.length) this.push(res); done(); } catch (e) { done(e); } }; IconvLiteEncoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); if (res && res.length) this.push(res); done(); } catch (e) { done(e); } }; IconvLiteEncoderStream.prototype.collect = function(cb) { var chunks = []; this.on("error", cb); this.on("data", function(chunk) { chunks.push(chunk); }); this.on("end", function() { cb(null, Buffer2.concat(chunks)); }); return this; }; function IconvLiteDecoderStream(conv, options) { this.conv = conv; options = options || {}; options.encoding = this.encoding = "utf8"; Transform.call(this, options); } IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, { constructor: { value: IconvLiteDecoderStream } }); IconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) { if (!Buffer2.isBuffer(chunk)) return done(new Error("Iconv decoding stream needs buffers as its input.")); try { var res = this.conv.write(chunk); if (res && res.length) this.push(res, this.encoding); done(); } catch (e) { done(e); } }; IconvLiteDecoderStream.prototype._flush = function(done) { try { var res = this.conv.end(); if (res && res.length) this.push(res, this.encoding); done(); } catch (e) { done(e); } }; IconvLiteDecoderStream.prototype.collect = function(cb) { var res = ""; this.on("error", cb); this.on("data", function(chunk) { res += chunk; }); this.on("end", function() { cb(null, res); }); return this; }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/lib/extend-node.js var require_extend_node2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/lib/extend-node.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require("buffer").Buffer; module2.exports = function(iconv) { var original = void 0; iconv.supportsNodeEncodingsExtension = !(Buffer2.from || new Buffer2(0) instanceof Uint8Array); iconv.extendNodeEncodings = function extendNodeEncodings() { if (original) return; original = {}; if (!iconv.supportsNodeEncodingsExtension) { console.error("ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node"); console.error("See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility"); return; } var nodeNativeEncodings = { "hex": true, "utf8": true, "utf-8": true, "ascii": true, "binary": true, "base64": true, "ucs2": true, "ucs-2": true, "utf16le": true, "utf-16le": true }; Buffer2.isNativeEncoding = function(enc) { return enc && nodeNativeEncodings[enc.toLowerCase()]; }; var SlowBuffer = require("buffer").SlowBuffer; original.SlowBufferToString = SlowBuffer.prototype.toString; SlowBuffer.prototype.toString = function(encoding, start, end) { encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.SlowBufferToString.call(this, encoding, start, end); if (typeof start == "undefined") start = 0; if (typeof end == "undefined") end = this.length; return iconv.decode(this.slice(start, end), encoding); }; original.SlowBufferWrite = SlowBuffer.prototype.write; SlowBuffer.prototype.write = function(string, offset, length, encoding) { if (isFinite(offset)) { if (!isFinite(length)) { encoding = length; length = void 0; } } else { var swap = encoding; encoding = offset; offset = length; length = swap; } offset = +offset || 0; var remaining = this.length - offset; if (!length) { length = remaining; } else { length = +length; if (length > remaining) { length = remaining; } } encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.SlowBufferWrite.call(this, string, offset, length, encoding); if (string.length > 0 && (length < 0 || offset < 0)) throw new RangeError("attempt to write beyond buffer bounds"); var buf = iconv.encode(string, encoding); if (buf.length < length) length = buf.length; buf.copy(this, offset, 0, length); return length; }; original.BufferIsEncoding = Buffer2.isEncoding; Buffer2.isEncoding = function(encoding) { return Buffer2.isNativeEncoding(encoding) || iconv.encodingExists(encoding); }; original.BufferByteLength = Buffer2.byteLength; Buffer2.byteLength = SlowBuffer.byteLength = function(str, encoding) { encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.BufferByteLength.call(this, str, encoding); return iconv.encode(str, encoding).length; }; original.BufferToString = Buffer2.prototype.toString; Buffer2.prototype.toString = function(encoding, start, end) { encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.BufferToString.call(this, encoding, start, end); if (typeof start == "undefined") start = 0; if (typeof end == "undefined") end = this.length; return iconv.decode(this.slice(start, end), encoding); }; original.BufferWrite = Buffer2.prototype.write; Buffer2.prototype.write = function(string, offset, length, encoding) { var _offset = offset, _length = length, _encoding = encoding; if (isFinite(offset)) { if (!isFinite(length)) { encoding = length; length = void 0; } } else { var swap = encoding; encoding = offset; offset = length; length = swap; } encoding = String(encoding || "utf8").toLowerCase(); if (Buffer2.isNativeEncoding(encoding)) return original.BufferWrite.call(this, string, _offset, _length, _encoding); offset = +offset || 0; var remaining = this.length - offset; if (!length) { length = remaining; } else { length = +length; if (length > remaining) { length = remaining; } } if (string.length > 0 && (length < 0 || offset < 0)) throw new RangeError("attempt to write beyond buffer bounds"); var buf = iconv.encode(string, encoding); if (buf.length < length) length = buf.length; buf.copy(this, offset, 0, length); return length; }; if (iconv.supportsStreams) { var Readable = require("stream").Readable; original.ReadableSetEncoding = Readable.prototype.setEncoding; Readable.prototype.setEncoding = function setEncoding(enc, options) { this._readableState.decoder = iconv.getDecoder(enc, options); this._readableState.encoding = enc; }; Readable.prototype.collect = iconv._collect; } }; iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() { if (!iconv.supportsNodeEncodingsExtension) return; if (!original) throw new Error("require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called."); delete Buffer2.isNativeEncoding; var SlowBuffer = require("buffer").SlowBuffer; SlowBuffer.prototype.toString = original.SlowBufferToString; SlowBuffer.prototype.write = original.SlowBufferWrite; Buffer2.isEncoding = original.BufferIsEncoding; Buffer2.byteLength = original.BufferByteLength; Buffer2.prototype.toString = original.BufferToString; Buffer2.prototype.write = original.BufferWrite; if (iconv.supportsStreams) { var Readable = require("stream").Readable; Readable.prototype.setEncoding = original.ReadableSetEncoding; delete Readable.prototype.collect; } original = void 0; }; }; } }); // ../backend/node_modules/body-parser/node_modules/iconv-lite/lib/index.js var require_lib2 = __commonJS({ "../backend/node_modules/body-parser/node_modules/iconv-lite/lib/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safer().Buffer; var bomHandling = require_bom_handling2(); var iconv = module2.exports; iconv.encodings = null; iconv.defaultCharUnicode = "\uFFFD"; iconv.defaultCharSingleByte = "?"; iconv.encode = function encode(str, encoding, options) { str = "" + (str || ""); var encoder2 = iconv.getEncoder(encoding, options); var res = encoder2.write(str); var trail = encoder2.end(); return trail && trail.length > 0 ? Buffer2.concat([res, trail]) : res; }; iconv.decode = function decode(buf, encoding, options) { if (typeof buf === "string") { if (!iconv.skipDecodeWarning) { console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"); iconv.skipDecodeWarning = true; } buf = Buffer2.from("" + (buf || ""), "binary"); } var decoder = iconv.getDecoder(encoding, options); var res = decoder.write(buf); var trail = decoder.end(); return trail ? res + trail : res; }; iconv.encodingExists = function encodingExists(enc) { try { iconv.getCodec(enc); return true; } catch (e) { return false; } }; iconv.toEncoding = iconv.encode; iconv.fromEncoding = iconv.decode; iconv._codecDataCache = {}; iconv.getCodec = function getCodec(encoding) { if (!iconv.encodings) iconv.encodings = require_encodings2(); var enc = iconv._canonicalizeEncoding(encoding); var codecOptions = {}; while (true) { var codec = iconv._codecDataCache[enc]; if (codec) return codec; var codecDef = iconv.encodings[enc]; switch (typeof codecDef) { case "string": enc = codecDef; break; case "object": for (var key in codecDef) codecOptions[key] = codecDef[key]; if (!codecOptions.encodingName) codecOptions.encodingName = enc; enc = codecDef.type; break; case "function": if (!codecOptions.encodingName) codecOptions.encodingName = enc; codec = new codecDef(codecOptions, iconv); iconv._codecDataCache[codecOptions.encodingName] = codec; return codec; default: throw new Error("Encoding not recognized: '" + encoding + "' (searched as: '" + enc + "')"); } } }; iconv._canonicalizeEncoding = function(encoding) { return ("" + encoding).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g, ""); }; iconv.getEncoder = function getEncoder(encoding, options) { var codec = iconv.getCodec(encoding), encoder2 = new codec.encoder(options, codec); if (codec.bomAware && options && options.addBOM) encoder2 = new bomHandling.PrependBOM(encoder2, options); return encoder2; }; iconv.getDecoder = function getDecoder(encoding, options) { var codec = iconv.getCodec(encoding), decoder = new codec.decoder(options, codec); if (codec.bomAware && !(options && options.stripBOM === false)) decoder = new bomHandling.StripBOM(decoder, options); return decoder; }; var nodeVer = typeof process !== "undefined" && process.versions && process.versions.node; if (nodeVer) { nodeVerArr = nodeVer.split(".").map(Number); if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) { require_streams2()(iconv); } require_extend_node2()(iconv); } var nodeVerArr; if (false) { console.error("iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info."); } } }); // ../backend/node_modules/ee-first/index.js var require_ee_first = __commonJS({ "../backend/node_modules/ee-first/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = first; function first(stuff, done) { if (!Array.isArray(stuff)) throw new TypeError("arg must be an array of [ee, events...] arrays"); var cleanups = []; for (var i = 0; i < stuff.length; i++) { var arr = stuff[i]; if (!Array.isArray(arr) || arr.length < 2) throw new TypeError("each array member must be [ee, events...]"); var ee = arr[0]; for (var j = 1; j < arr.length; j++) { var event = arr[j]; var fn = listener(event, callback); ee.on(event, fn); cleanups.push({ ee, event, fn }); } } function callback() { cleanup(); done.apply(null, arguments); } function cleanup() { var x; for (var i2 = 0; i2 < cleanups.length; i2++) { x = cleanups[i2]; x.ee.removeListener(x.event, x.fn); } } function thunk(fn2) { done = fn2; } thunk.cancel = cleanup; return thunk; } function listener(event, done) { return function onevent(arg1) { var args = new Array(arguments.length); var ee = this; var err = event === "error" ? arg1 : null; for (var i = 0; i < args.length; i++) { args[i] = arguments[i]; } done(err, ee, event, args); }; } } }); // ../backend/node_modules/on-finished/index.js var require_on_finished = __commonJS({ "../backend/node_modules/on-finished/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = onFinished; module2.exports.isFinished = isFinished; var asyncHooks = tryRequireAsyncHooks(); var first = require_ee_first(); var defer = typeof setImmediate === "function" ? setImmediate : function(fn) { process.nextTick(fn.bind.apply(fn, arguments)); }; function onFinished(msg, listener) { if (isFinished(msg) !== false) { defer(listener, null, msg); return msg; } attachListener(msg, wrap(listener)); return msg; } function isFinished(msg) { var socket = msg.socket; if (typeof msg.finished === "boolean") { return Boolean(msg.finished || socket && !socket.writable); } if (typeof msg.complete === "boolean") { return Boolean(msg.upgrade || !socket || !socket.readable || msg.complete && !msg.readable); } return void 0; } function attachFinishedListener(msg, callback) { var eeMsg; var eeSocket; var finished = false; function onFinish(error) { eeMsg.cancel(); eeSocket.cancel(); finished = true; callback(error); } eeMsg = eeSocket = first([[msg, "end", "finish"]], onFinish); function onSocket(socket) { msg.removeListener("socket", onSocket); if (finished) return; if (eeMsg !== eeSocket) return; eeSocket = first([[socket, "error", "close"]], onFinish); } if (msg.socket) { onSocket(msg.socket); return; } msg.on("socket", onSocket); if (msg.socket === void 0) { patchAssignSocket(msg, onSocket); } } function attachListener(msg, listener) { var attached = msg.__onFinished; if (!attached || !attached.queue) { attached = msg.__onFinished = createListener(msg); attachFinishedListener(msg, attached); } attached.queue.push(listener); } function createListener(msg) { function listener(err) { if (msg.__onFinished === listener) msg.__onFinished = null; if (!listener.queue) return; var queue = listener.queue; listener.queue = null; for (var i = 0; i < queue.length; i++) { queue[i](err, msg); } } listener.queue = []; return listener; } function patchAssignSocket(res, callback) { var assignSocket = res.assignSocket; if (typeof assignSocket !== "function") return; res.assignSocket = function _assignSocket(socket) { assignSocket.call(this, socket); callback(socket); }; } function tryRequireAsyncHooks() { try { return require("async_hooks"); } catch (e) { return {}; } } function wrap(fn) { var res; if (asyncHooks.AsyncResource) { res = new asyncHooks.AsyncResource(fn.name || "bound-anonymous-fn"); } if (!res || !res.runInAsyncScope) { return fn; } return res.runInAsyncScope.bind(res, fn, null); } } }); // ../backend/node_modules/body-parser/lib/read.js var require_read = __commonJS({ "../backend/node_modules/body-parser/lib/read.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var createError2 = require_http_errors(); var destroy = require_destroy(); var getBody = require_raw_body(); var iconv = require_lib2(); var onFinished = require_on_finished(); var unpipe = require_unpipe(); var zlib = require("zlib"); module2.exports = read; function read(req, res, next, parse3, debug, options) { var length; var opts = options; var stream; req._body = true; var encoding = opts.encoding !== null ? opts.encoding : null; var verify = opts.verify; try { stream = contentstream(req, debug, opts.inflate); length = stream.length; stream.length = void 0; } catch (err) { return next(err); } opts.length = length; opts.encoding = verify ? null : encoding; if (opts.encoding === null && encoding !== null && !iconv.encodingExists(encoding)) { return next(createError2(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { charset: encoding.toLowerCase(), type: "charset.unsupported" })); } debug("read body"); getBody(stream, opts, function(error, body) { if (error) { var _error; if (error.type === "encoding.unsupported") { _error = createError2(415, 'unsupported charset "' + encoding.toUpperCase() + '"', { charset: encoding.toLowerCase(), type: "charset.unsupported" }); } else { _error = createError2(400, error); } if (stream !== req) { unpipe(req); destroy(stream, true); } dump(req, function onfinished() { next(createError2(400, _error)); }); return; } if (verify) { try { debug("verify body"); verify(req, res, body, encoding); } catch (err) { next(createError2(403, err, { body, type: err.type || "entity.verify.failed" })); return; } } var str = body; try { debug("parse body"); str = typeof body !== "string" && encoding !== null ? iconv.decode(body, encoding) : body; req.body = parse3(str); } catch (err) { next(createError2(400, err, { body: str, type: err.type || "entity.parse.failed" })); return; } next(); }); } function contentstream(req, debug, inflate) { var encoding = (req.headers["content-encoding"] || "identity").toLowerCase(); var length = req.headers["content-length"]; var stream; debug('content-encoding "%s"', encoding); if (inflate === false && encoding !== "identity") { throw createError2(415, "content encoding unsupported", { encoding, type: "encoding.unsupported" }); } switch (encoding) { case "deflate": stream = zlib.createInflate(); debug("inflate body"); req.pipe(stream); break; case "gzip": stream = zlib.createGunzip(); debug("gunzip body"); req.pipe(stream); break; case "identity": stream = req; stream.length = length; break; default: throw createError2(415, 'unsupported content encoding "' + encoding + '"', { encoding, type: "encoding.unsupported" }); } return stream; } function dump(req, callback) { if (onFinished.isFinished(req)) { callback(null); } else { onFinished(req, callback); req.resume(); } } } }); // ../backend/node_modules/media-typer/index.js var require_media_typer = __commonJS({ "../backend/node_modules/media-typer/index.js"(exports2) { init_define_import_meta_env(); var paramRegExp = /; *([!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) *= *("(?:[ !\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u0020-\u007e])*"|[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+) */g; var textRegExp = /^[\u0020-\u007e\u0080-\u00ff]+$/; var tokenRegExp = /^[!#$%&'\*\+\-\.0-9A-Z\^_`a-z\|~]+$/; var qescRegExp = /\\([\u0000-\u007f])/g; var quoteRegExp = /([\\"])/g; var subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/; var typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/; var typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/; exports2.format = format; exports2.parse = parse3; function format(obj) { if (!obj || typeof obj !== "object") { throw new TypeError("argument obj is required"); } var parameters = obj.parameters; var subtype = obj.subtype; var suffix = obj.suffix; var type = obj.type; if (!type || !typeNameRegExp.test(type)) { throw new TypeError("invalid type"); } if (!subtype || !subtypeNameRegExp.test(subtype)) { throw new TypeError("invalid subtype"); } var string = type + "/" + subtype; if (suffix) { if (!typeNameRegExp.test(suffix)) { throw new TypeError("invalid suffix"); } string += "+" + suffix; } if (parameters && typeof parameters === "object") { var param; var params = Object.keys(parameters).sort(); for (var i = 0; i < params.length; i++) { param = params[i]; if (!tokenRegExp.test(param)) { throw new TypeError("invalid parameter name"); } string += "; " + param + "=" + qstring(parameters[param]); } } return string; } function parse3(string) { if (!string) { throw new TypeError("argument string is required"); } if (typeof string === "object") { string = getcontenttype(string); } if (typeof string !== "string") { throw new TypeError("argument string is required to be a string"); } var index2 = string.indexOf(";"); var type = index2 !== -1 ? string.substr(0, index2) : string; var key; var match; var obj = splitType(type); var params = {}; var value; paramRegExp.lastIndex = index2; while (match = paramRegExp.exec(string)) { if (match.index !== index2) { throw new TypeError("invalid parameter format"); } index2 += match[0].length; key = match[1].toLowerCase(); value = match[2]; if (value[0] === '"') { value = value.substr(1, value.length - 2).replace(qescRegExp, "$1"); } params[key] = value; } if (index2 !== -1 && index2 !== string.length) { throw new TypeError("invalid parameter format"); } obj.parameters = params; return obj; } function getcontenttype(obj) { if (typeof obj.getHeader === "function") { return obj.getHeader("content-type"); } if (typeof obj.headers === "object") { return obj.headers && obj.headers["content-type"]; } } function qstring(val) { var str = String(val); if (tokenRegExp.test(str)) { return str; } if (str.length > 0 && !textRegExp.test(str)) { throw new TypeError("invalid parameter value"); } return '"' + str.replace(quoteRegExp, "\\$1") + '"'; } function splitType(string) { var match = typeRegExp.exec(string.toLowerCase()); if (!match) { throw new TypeError("invalid media type"); } var type = match[1]; var subtype = match[2]; var suffix; var index2 = subtype.lastIndexOf("+"); if (index2 !== -1) { suffix = subtype.substr(index2 + 1); subtype = subtype.substr(0, index2); } var obj = { type, subtype, suffix }; return obj; } } }); // ../backend/node_modules/mime-db/db.json var require_db = __commonJS({ "../backend/node_modules/mime-db/db.json"(exports2, module2) { module2.exports = { "application/1d-interleaved-parityfec": { source: "iana" }, "application/3gpdash-qoe-report+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/3gpp-ims+xml": { source: "iana", compressible: true }, "application/3gpphal+json": { source: "iana", compressible: true }, "application/3gpphalforms+json": { source: "iana", compressible: true }, "application/a2l": { source: "iana" }, "application/ace+cbor": { source: "iana" }, "application/activemessage": { source: "iana" }, "application/activity+json": { source: "iana", compressible: true }, "application/alto-costmap+json": { source: "iana", compressible: true }, "application/alto-costmapfilter+json": { source: "iana", compressible: true }, "application/alto-directory+json": { source: "iana", compressible: true }, "application/alto-endpointcost+json": { source: "iana", compressible: true }, "application/alto-endpointcostparams+json": { source: "iana", compressible: true }, "application/alto-endpointprop+json": { source: "iana", compressible: true }, "application/alto-endpointpropparams+json": { source: "iana", compressible: true }, "application/alto-error+json": { source: "iana", compressible: true }, "application/alto-networkmap+json": { source: "iana", compressible: true }, "application/alto-networkmapfilter+json": { source: "iana", compressible: true }, "application/alto-updatestreamcontrol+json": { source: "iana", compressible: true }, "application/alto-updatestreamparams+json": { source: "iana", compressible: true }, "application/aml": { source: "iana" }, "application/andrew-inset": { source: "iana", extensions: ["ez"] }, "application/applefile": { source: "iana" }, "application/applixware": { source: "apache", extensions: ["aw"] }, "application/at+jwt": { source: "iana" }, "application/atf": { source: "iana" }, "application/atfx": { source: "iana" }, "application/atom+xml": { source: "iana", compressible: true, extensions: ["atom"] }, "application/atomcat+xml": { source: "iana", compressible: true, extensions: ["atomcat"] }, "application/atomdeleted+xml": { source: "iana", compressible: true, extensions: ["atomdeleted"] }, "application/atomicmail": { source: "iana" }, "application/atomsvc+xml": { source: "iana", compressible: true, extensions: ["atomsvc"] }, "application/atsc-dwd+xml": { source: "iana", compressible: true, extensions: ["dwd"] }, "application/atsc-dynamic-event-message": { source: "iana" }, "application/atsc-held+xml": { source: "iana", compressible: true, extensions: ["held"] }, "application/atsc-rdt+json": { source: "iana", compressible: true }, "application/atsc-rsat+xml": { source: "iana", compressible: true, extensions: ["rsat"] }, "application/atxml": { source: "iana" }, "application/auth-policy+xml": { source: "iana", compressible: true }, "application/bacnet-xdd+zip": { source: "iana", compressible: false }, "application/batch-smtp": { source: "iana" }, "application/bdoc": { compressible: false, extensions: ["bdoc"] }, "application/beep+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/calendar+json": { source: "iana", compressible: true }, "application/calendar+xml": { source: "iana", compressible: true, extensions: ["xcs"] }, "application/call-completion": { source: "iana" }, "application/cals-1840": { source: "iana" }, "application/captive+json": { source: "iana", compressible: true }, "application/cbor": { source: "iana" }, "application/cbor-seq": { source: "iana" }, "application/cccex": { source: "iana" }, "application/ccmp+xml": { source: "iana", compressible: true }, "application/ccxml+xml": { source: "iana", compressible: true, extensions: ["ccxml"] }, "application/cdfx+xml": { source: "iana", compressible: true, extensions: ["cdfx"] }, "application/cdmi-capability": { source: "iana", extensions: ["cdmia"] }, "application/cdmi-container": { source: "iana", extensions: ["cdmic"] }, "application/cdmi-domain": { source: "iana", extensions: ["cdmid"] }, "application/cdmi-object": { source: "iana", extensions: ["cdmio"] }, "application/cdmi-queue": { source: "iana", extensions: ["cdmiq"] }, "application/cdni": { source: "iana" }, "application/cea": { source: "iana" }, "application/cea-2018+xml": { source: "iana", compressible: true }, "application/cellml+xml": { source: "iana", compressible: true }, "application/cfw": { source: "iana" }, "application/city+json": { source: "iana", compressible: true }, "application/clr": { source: "iana" }, "application/clue+xml": { source: "iana", compressible: true }, "application/clue_info+xml": { source: "iana", compressible: true }, "application/cms": { source: "iana" }, "application/cnrp+xml": { source: "iana", compressible: true }, "application/coap-group+json": { source: "iana", compressible: true }, "application/coap-payload": { source: "iana" }, "application/commonground": { source: "iana" }, "application/conference-info+xml": { source: "iana", compressible: true }, "application/cose": { source: "iana" }, "application/cose-key": { source: "iana" }, "application/cose-key-set": { source: "iana" }, "application/cpl+xml": { source: "iana", compressible: true, extensions: ["cpl"] }, "application/csrattrs": { source: "iana" }, "application/csta+xml": { source: "iana", compressible: true }, "application/cstadata+xml": { source: "iana", compressible: true }, "application/csvm+json": { source: "iana", compressible: true }, "application/cu-seeme": { source: "apache", extensions: ["cu"] }, "application/cwt": { source: "iana" }, "application/cybercash": { source: "iana" }, "application/dart": { compressible: true }, "application/dash+xml": { source: "iana", compressible: true, extensions: ["mpd"] }, "application/dash-patch+xml": { source: "iana", compressible: true, extensions: ["mpp"] }, "application/dashdelta": { source: "iana" }, "application/davmount+xml": { source: "iana", compressible: true, extensions: ["davmount"] }, "application/dca-rft": { source: "iana" }, "application/dcd": { source: "iana" }, "application/dec-dx": { source: "iana" }, "application/dialog-info+xml": { source: "iana", compressible: true }, "application/dicom": { source: "iana" }, "application/dicom+json": { source: "iana", compressible: true }, "application/dicom+xml": { source: "iana", compressible: true }, "application/dii": { source: "iana" }, "application/dit": { source: "iana" }, "application/dns": { source: "iana" }, "application/dns+json": { source: "iana", compressible: true }, "application/dns-message": { source: "iana" }, "application/docbook+xml": { source: "apache", compressible: true, extensions: ["dbk"] }, "application/dots+cbor": { source: "iana" }, "application/dskpp+xml": { source: "iana", compressible: true }, "application/dssc+der": { source: "iana", extensions: ["dssc"] }, "application/dssc+xml": { source: "iana", compressible: true, extensions: ["xdssc"] }, "application/dvcs": { source: "iana" }, "application/ecmascript": { source: "iana", compressible: true, extensions: ["es", "ecma"] }, "application/edi-consent": { source: "iana" }, "application/edi-x12": { source: "iana", compressible: false }, "application/edifact": { source: "iana", compressible: false }, "application/efi": { source: "iana" }, "application/elm+json": { source: "iana", charset: "UTF-8", compressible: true }, "application/elm+xml": { source: "iana", compressible: true }, "application/emergencycalldata.cap+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/emergencycalldata.comment+xml": { source: "iana", compressible: true }, "application/emergencycalldata.control+xml": { source: "iana", compressible: true }, "application/emergencycalldata.deviceinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.ecall.msd": { source: "iana" }, "application/emergencycalldata.providerinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.serviceinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.subscriberinfo+xml": { source: "iana", compressible: true }, "application/emergencycalldata.veds+xml": { source: "iana", compressible: true }, "application/emma+xml": { source: "iana", compressible: true, extensions: ["emma"] }, "application/emotionml+xml": { source: "iana", compressible: true, extensions: ["emotionml"] }, "application/encaprtp": { source: "iana" }, "application/epp+xml": { source: "iana", compressible: true }, "application/epub+zip": { source: "iana", compressible: false, extensions: ["epub"] }, "application/eshop": { source: "iana" }, "application/exi": { source: "iana", extensions: ["exi"] }, "application/expect-ct-report+json": { source: "iana", compressible: true }, "application/express": { source: "iana", extensions: ["exp"] }, "application/fastinfoset": { source: "iana" }, "application/fastsoap": { source: "iana" }, "application/fdt+xml": { source: "iana", compressible: true, extensions: ["fdt"] }, "application/fhir+json": { source: "iana", charset: "UTF-8", compressible: true }, "application/fhir+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/fido.trusted-apps+json": { compressible: true }, "application/fits": { source: "iana" }, "application/flexfec": { source: "iana" }, "application/font-sfnt": { source: "iana" }, "application/font-tdpfr": { source: "iana", extensions: ["pfr"] }, "application/font-woff": { source: "iana", compressible: false }, "application/framework-attributes+xml": { source: "iana", compressible: true }, "application/geo+json": { source: "iana", compressible: true, extensions: ["geojson"] }, "application/geo+json-seq": { source: "iana" }, "application/geopackage+sqlite3": { source: "iana" }, "application/geoxacml+xml": { source: "iana", compressible: true }, "application/gltf-buffer": { source: "iana" }, "application/gml+xml": { source: "iana", compressible: true, extensions: ["gml"] }, "application/gpx+xml": { source: "apache", compressible: true, extensions: ["gpx"] }, "application/gxf": { source: "apache", extensions: ["gxf"] }, "application/gzip": { source: "iana", compressible: false, extensions: ["gz"] }, "application/h224": { source: "iana" }, "application/held+xml": { source: "iana", compressible: true }, "application/hjson": { extensions: ["hjson"] }, "application/http": { source: "iana" }, "application/hyperstudio": { source: "iana", extensions: ["stk"] }, "application/ibe-key-request+xml": { source: "iana", compressible: true }, "application/ibe-pkg-reply+xml": { source: "iana", compressible: true }, "application/ibe-pp-data": { source: "iana" }, "application/iges": { source: "iana" }, "application/im-iscomposing+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/index": { source: "iana" }, "application/index.cmd": { source: "iana" }, "application/index.obj": { source: "iana" }, "application/index.response": { source: "iana" }, "application/index.vnd": { source: "iana" }, "application/inkml+xml": { source: "iana", compressible: true, extensions: ["ink", "inkml"] }, "application/iotp": { source: "iana" }, "application/ipfix": { source: "iana", extensions: ["ipfix"] }, "application/ipp": { source: "iana" }, "application/isup": { source: "iana" }, "application/its+xml": { source: "iana", compressible: true, extensions: ["its"] }, "application/java-archive": { source: "apache", compressible: false, extensions: ["jar", "war", "ear"] }, "application/java-serialized-object": { source: "apache", compressible: false, extensions: ["ser"] }, "application/java-vm": { source: "apache", compressible: false, extensions: ["class"] }, "application/javascript": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["js", "mjs"] }, "application/jf2feed+json": { source: "iana", compressible: true }, "application/jose": { source: "iana" }, "application/jose+json": { source: "iana", compressible: true }, "application/jrd+json": { source: "iana", compressible: true }, "application/jscalendar+json": { source: "iana", compressible: true }, "application/json": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["json", "map"] }, "application/json-patch+json": { source: "iana", compressible: true }, "application/json-seq": { source: "iana" }, "application/json5": { extensions: ["json5"] }, "application/jsonml+json": { source: "apache", compressible: true, extensions: ["jsonml"] }, "application/jwk+json": { source: "iana", compressible: true }, "application/jwk-set+json": { source: "iana", compressible: true }, "application/jwt": { source: "iana" }, "application/kpml-request+xml": { source: "iana", compressible: true }, "application/kpml-response+xml": { source: "iana", compressible: true }, "application/ld+json": { source: "iana", compressible: true, extensions: ["jsonld"] }, "application/lgr+xml": { source: "iana", compressible: true, extensions: ["lgr"] }, "application/link-format": { source: "iana" }, "application/load-control+xml": { source: "iana", compressible: true }, "application/lost+xml": { source: "iana", compressible: true, extensions: ["lostxml"] }, "application/lostsync+xml": { source: "iana", compressible: true }, "application/lpf+zip": { source: "iana", compressible: false }, "application/lxf": { source: "iana" }, "application/mac-binhex40": { source: "iana", extensions: ["hqx"] }, "application/mac-compactpro": { source: "apache", extensions: ["cpt"] }, "application/macwriteii": { source: "iana" }, "application/mads+xml": { source: "iana", compressible: true, extensions: ["mads"] }, "application/manifest+json": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["webmanifest"] }, "application/marc": { source: "iana", extensions: ["mrc"] }, "application/marcxml+xml": { source: "iana", compressible: true, extensions: ["mrcx"] }, "application/mathematica": { source: "iana", extensions: ["ma", "nb", "mb"] }, "application/mathml+xml": { source: "iana", compressible: true, extensions: ["mathml"] }, "application/mathml-content+xml": { source: "iana", compressible: true }, "application/mathml-presentation+xml": { source: "iana", compressible: true }, "application/mbms-associated-procedure-description+xml": { source: "iana", compressible: true }, "application/mbms-deregister+xml": { source: "iana", compressible: true }, "application/mbms-envelope+xml": { source: "iana", compressible: true }, "application/mbms-msk+xml": { source: "iana", compressible: true }, "application/mbms-msk-response+xml": { source: "iana", compressible: true }, "application/mbms-protection-description+xml": { source: "iana", compressible: true }, "application/mbms-reception-report+xml": { source: "iana", compressible: true }, "application/mbms-register+xml": { source: "iana", compressible: true }, "application/mbms-register-response+xml": { source: "iana", compressible: true }, "application/mbms-schedule+xml": { source: "iana", compressible: true }, "application/mbms-user-service-description+xml": { source: "iana", compressible: true }, "application/mbox": { source: "iana", extensions: ["mbox"] }, "application/media-policy-dataset+xml": { source: "iana", compressible: true, extensions: ["mpf"] }, "application/media_control+xml": { source: "iana", compressible: true }, "application/mediaservercontrol+xml": { source: "iana", compressible: true, extensions: ["mscml"] }, "application/merge-patch+json": { source: "iana", compressible: true }, "application/metalink+xml": { source: "apache", compressible: true, extensions: ["metalink"] }, "application/metalink4+xml": { source: "iana", compressible: true, extensions: ["meta4"] }, "application/mets+xml": { source: "iana", compressible: true, extensions: ["mets"] }, "application/mf4": { source: "iana" }, "application/mikey": { source: "iana" }, "application/mipc": { source: "iana" }, "application/missing-blocks+cbor-seq": { source: "iana" }, "application/mmt-aei+xml": { source: "iana", compressible: true, extensions: ["maei"] }, "application/mmt-usd+xml": { source: "iana", compressible: true, extensions: ["musd"] }, "application/mods+xml": { source: "iana", compressible: true, extensions: ["mods"] }, "application/moss-keys": { source: "iana" }, "application/moss-signature": { source: "iana" }, "application/mosskey-data": { source: "iana" }, "application/mosskey-request": { source: "iana" }, "application/mp21": { source: "iana", extensions: ["m21", "mp21"] }, "application/mp4": { source: "iana", extensions: ["mp4s", "m4p"] }, "application/mpeg4-generic": { source: "iana" }, "application/mpeg4-iod": { source: "iana" }, "application/mpeg4-iod-xmt": { source: "iana" }, "application/mrb-consumer+xml": { source: "iana", compressible: true }, "application/mrb-publish+xml": { source: "iana", compressible: true }, "application/msc-ivr+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/msc-mixer+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/msword": { source: "iana", compressible: false, extensions: ["doc", "dot"] }, "application/mud+json": { source: "iana", compressible: true }, "application/multipart-core": { source: "iana" }, "application/mxf": { source: "iana", extensions: ["mxf"] }, "application/n-quads": { source: "iana", extensions: ["nq"] }, "application/n-triples": { source: "iana", extensions: ["nt"] }, "application/nasdata": { source: "iana" }, "application/news-checkgroups": { source: "iana", charset: "US-ASCII" }, "application/news-groupinfo": { source: "iana", charset: "US-ASCII" }, "application/news-transmission": { source: "iana" }, "application/nlsml+xml": { source: "iana", compressible: true }, "application/node": { source: "iana", extensions: ["cjs"] }, "application/nss": { source: "iana" }, "application/oauth-authz-req+jwt": { source: "iana" }, "application/oblivious-dns-message": { source: "iana" }, "application/ocsp-request": { source: "iana" }, "application/ocsp-response": { source: "iana" }, "application/octet-stream": { source: "iana", compressible: false, extensions: ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"] }, "application/oda": { source: "iana", extensions: ["oda"] }, "application/odm+xml": { source: "iana", compressible: true }, "application/odx": { source: "iana" }, "application/oebps-package+xml": { source: "iana", compressible: true, extensions: ["opf"] }, "application/ogg": { source: "iana", compressible: false, extensions: ["ogx"] }, "application/omdoc+xml": { source: "apache", compressible: true, extensions: ["omdoc"] }, "application/onenote": { source: "apache", extensions: ["onetoc", "onetoc2", "onetmp", "onepkg"] }, "application/opc-nodeset+xml": { source: "iana", compressible: true }, "application/oscore": { source: "iana" }, "application/oxps": { source: "iana", extensions: ["oxps"] }, "application/p21": { source: "iana" }, "application/p21+zip": { source: "iana", compressible: false }, "application/p2p-overlay+xml": { source: "iana", compressible: true, extensions: ["relo"] }, "application/parityfec": { source: "iana" }, "application/passport": { source: "iana" }, "application/patch-ops-error+xml": { source: "iana", compressible: true, extensions: ["xer"] }, "application/pdf": { source: "iana", compressible: false, extensions: ["pdf"] }, "application/pdx": { source: "iana" }, "application/pem-certificate-chain": { source: "iana" }, "application/pgp-encrypted": { source: "iana", compressible: false, extensions: ["pgp"] }, "application/pgp-keys": { source: "iana", extensions: ["asc"] }, "application/pgp-signature": { source: "iana", extensions: ["asc", "sig"] }, "application/pics-rules": { source: "apache", extensions: ["prf"] }, "application/pidf+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/pidf-diff+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/pkcs10": { source: "iana", extensions: ["p10"] }, "application/pkcs12": { source: "iana" }, "application/pkcs7-mime": { source: "iana", extensions: ["p7m", "p7c"] }, "application/pkcs7-signature": { source: "iana", extensions: ["p7s"] }, "application/pkcs8": { source: "iana", extensions: ["p8"] }, "application/pkcs8-encrypted": { source: "iana" }, "application/pkix-attr-cert": { source: "iana", extensions: ["ac"] }, "application/pkix-cert": { source: "iana", extensions: ["cer"] }, "application/pkix-crl": { source: "iana", extensions: ["crl"] }, "application/pkix-pkipath": { source: "iana", extensions: ["pkipath"] }, "application/pkixcmp": { source: "iana", extensions: ["pki"] }, "application/pls+xml": { source: "iana", compressible: true, extensions: ["pls"] }, "application/poc-settings+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/postscript": { source: "iana", compressible: true, extensions: ["ai", "eps", "ps"] }, "application/ppsp-tracker+json": { source: "iana", compressible: true }, "application/problem+json": { source: "iana", compressible: true }, "application/problem+xml": { source: "iana", compressible: true }, "application/provenance+xml": { source: "iana", compressible: true, extensions: ["provx"] }, "application/prs.alvestrand.titrax-sheet": { source: "iana" }, "application/prs.cww": { source: "iana", extensions: ["cww"] }, "application/prs.cyn": { source: "iana", charset: "7-BIT" }, "application/prs.hpub+zip": { source: "iana", compressible: false }, "application/prs.nprend": { source: "iana" }, "application/prs.plucker": { source: "iana" }, "application/prs.rdf-xml-crypt": { source: "iana" }, "application/prs.xsf+xml": { source: "iana", compressible: true }, "application/pskc+xml": { source: "iana", compressible: true, extensions: ["pskcxml"] }, "application/pvd+json": { source: "iana", compressible: true }, "application/qsig": { source: "iana" }, "application/raml+yaml": { compressible: true, extensions: ["raml"] }, "application/raptorfec": { source: "iana" }, "application/rdap+json": { source: "iana", compressible: true }, "application/rdf+xml": { source: "iana", compressible: true, extensions: ["rdf", "owl"] }, "application/reginfo+xml": { source: "iana", compressible: true, extensions: ["rif"] }, "application/relax-ng-compact-syntax": { source: "iana", extensions: ["rnc"] }, "application/remote-printing": { source: "iana" }, "application/reputon+json": { source: "iana", compressible: true }, "application/resource-lists+xml": { source: "iana", compressible: true, extensions: ["rl"] }, "application/resource-lists-diff+xml": { source: "iana", compressible: true, extensions: ["rld"] }, "application/rfc+xml": { source: "iana", compressible: true }, "application/riscos": { source: "iana" }, "application/rlmi+xml": { source: "iana", compressible: true }, "application/rls-services+xml": { source: "iana", compressible: true, extensions: ["rs"] }, "application/route-apd+xml": { source: "iana", compressible: true, extensions: ["rapd"] }, "application/route-s-tsid+xml": { source: "iana", compressible: true, extensions: ["sls"] }, "application/route-usd+xml": { source: "iana", compressible: true, extensions: ["rusd"] }, "application/rpki-ghostbusters": { source: "iana", extensions: ["gbr"] }, "application/rpki-manifest": { source: "iana", extensions: ["mft"] }, "application/rpki-publication": { source: "iana" }, "application/rpki-roa": { source: "iana", extensions: ["roa"] }, "application/rpki-updown": { source: "iana" }, "application/rsd+xml": { source: "apache", compressible: true, extensions: ["rsd"] }, "application/rss+xml": { source: "apache", compressible: true, extensions: ["rss"] }, "application/rtf": { source: "iana", compressible: true, extensions: ["rtf"] }, "application/rtploopback": { source: "iana" }, "application/rtx": { source: "iana" }, "application/samlassertion+xml": { source: "iana", compressible: true }, "application/samlmetadata+xml": { source: "iana", compressible: true }, "application/sarif+json": { source: "iana", compressible: true }, "application/sarif-external-properties+json": { source: "iana", compressible: true }, "application/sbe": { source: "iana" }, "application/sbml+xml": { source: "iana", compressible: true, extensions: ["sbml"] }, "application/scaip+xml": { source: "iana", compressible: true }, "application/scim+json": { source: "iana", compressible: true }, "application/scvp-cv-request": { source: "iana", extensions: ["scq"] }, "application/scvp-cv-response": { source: "iana", extensions: ["scs"] }, "application/scvp-vp-request": { source: "iana", extensions: ["spq"] }, "application/scvp-vp-response": { source: "iana", extensions: ["spp"] }, "application/sdp": { source: "iana", extensions: ["sdp"] }, "application/secevent+jwt": { source: "iana" }, "application/senml+cbor": { source: "iana" }, "application/senml+json": { source: "iana", compressible: true }, "application/senml+xml": { source: "iana", compressible: true, extensions: ["senmlx"] }, "application/senml-etch+cbor": { source: "iana" }, "application/senml-etch+json": { source: "iana", compressible: true }, "application/senml-exi": { source: "iana" }, "application/sensml+cbor": { source: "iana" }, "application/sensml+json": { source: "iana", compressible: true }, "application/sensml+xml": { source: "iana", compressible: true, extensions: ["sensmlx"] }, "application/sensml-exi": { source: "iana" }, "application/sep+xml": { source: "iana", compressible: true }, "application/sep-exi": { source: "iana" }, "application/session-info": { source: "iana" }, "application/set-payment": { source: "iana" }, "application/set-payment-initiation": { source: "iana", extensions: ["setpay"] }, "application/set-registration": { source: "iana" }, "application/set-registration-initiation": { source: "iana", extensions: ["setreg"] }, "application/sgml": { source: "iana" }, "application/sgml-open-catalog": { source: "iana" }, "application/shf+xml": { source: "iana", compressible: true, extensions: ["shf"] }, "application/sieve": { source: "iana", extensions: ["siv", "sieve"] }, "application/simple-filter+xml": { source: "iana", compressible: true }, "application/simple-message-summary": { source: "iana" }, "application/simplesymbolcontainer": { source: "iana" }, "application/sipc": { source: "iana" }, "application/slate": { source: "iana" }, "application/smil": { source: "iana" }, "application/smil+xml": { source: "iana", compressible: true, extensions: ["smi", "smil"] }, "application/smpte336m": { source: "iana" }, "application/soap+fastinfoset": { source: "iana" }, "application/soap+xml": { source: "iana", compressible: true }, "application/sparql-query": { source: "iana", extensions: ["rq"] }, "application/sparql-results+xml": { source: "iana", compressible: true, extensions: ["srx"] }, "application/spdx+json": { source: "iana", compressible: true }, "application/spirits-event+xml": { source: "iana", compressible: true }, "application/sql": { source: "iana" }, "application/srgs": { source: "iana", extensions: ["gram"] }, "application/srgs+xml": { source: "iana", compressible: true, extensions: ["grxml"] }, "application/sru+xml": { source: "iana", compressible: true, extensions: ["sru"] }, "application/ssdl+xml": { source: "apache", compressible: true, extensions: ["ssdl"] }, "application/ssml+xml": { source: "iana", compressible: true, extensions: ["ssml"] }, "application/stix+json": { source: "iana", compressible: true }, "application/swid+xml": { source: "iana", compressible: true, extensions: ["swidtag"] }, "application/tamp-apex-update": { source: "iana" }, "application/tamp-apex-update-confirm": { source: "iana" }, "application/tamp-community-update": { source: "iana" }, "application/tamp-community-update-confirm": { source: "iana" }, "application/tamp-error": { source: "iana" }, "application/tamp-sequence-adjust": { source: "iana" }, "application/tamp-sequence-adjust-confirm": { source: "iana" }, "application/tamp-status-query": { source: "iana" }, "application/tamp-status-response": { source: "iana" }, "application/tamp-update": { source: "iana" }, "application/tamp-update-confirm": { source: "iana" }, "application/tar": { compressible: true }, "application/taxii+json": { source: "iana", compressible: true }, "application/td+json": { source: "iana", compressible: true }, "application/tei+xml": { source: "iana", compressible: true, extensions: ["tei", "teicorpus"] }, "application/tetra_isi": { source: "iana" }, "application/thraud+xml": { source: "iana", compressible: true, extensions: ["tfi"] }, "application/timestamp-query": { source: "iana" }, "application/timestamp-reply": { source: "iana" }, "application/timestamped-data": { source: "iana", extensions: ["tsd"] }, "application/tlsrpt+gzip": { source: "iana" }, "application/tlsrpt+json": { source: "iana", compressible: true }, "application/tnauthlist": { source: "iana" }, "application/token-introspection+jwt": { source: "iana" }, "application/toml": { compressible: true, extensions: ["toml"] }, "application/trickle-ice-sdpfrag": { source: "iana" }, "application/trig": { source: "iana", extensions: ["trig"] }, "application/ttml+xml": { source: "iana", compressible: true, extensions: ["ttml"] }, "application/tve-trigger": { source: "iana" }, "application/tzif": { source: "iana" }, "application/tzif-leap": { source: "iana" }, "application/ubjson": { compressible: false, extensions: ["ubj"] }, "application/ulpfec": { source: "iana" }, "application/urc-grpsheet+xml": { source: "iana", compressible: true }, "application/urc-ressheet+xml": { source: "iana", compressible: true, extensions: ["rsheet"] }, "application/urc-targetdesc+xml": { source: "iana", compressible: true, extensions: ["td"] }, "application/urc-uisocketdesc+xml": { source: "iana", compressible: true }, "application/vcard+json": { source: "iana", compressible: true }, "application/vcard+xml": { source: "iana", compressible: true }, "application/vemmi": { source: "iana" }, "application/vividence.scriptfile": { source: "apache" }, "application/vnd.1000minds.decision-model+xml": { source: "iana", compressible: true, extensions: ["1km"] }, "application/vnd.3gpp-prose+xml": { source: "iana", compressible: true }, "application/vnd.3gpp-prose-pc3ch+xml": { source: "iana", compressible: true }, "application/vnd.3gpp-v2x-local-service-information": { source: "iana" }, "application/vnd.3gpp.5gnas": { source: "iana" }, "application/vnd.3gpp.access-transfer-events+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.bsf+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.gmop+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.gtpc": { source: "iana" }, "application/vnd.3gpp.interworking-data": { source: "iana" }, "application/vnd.3gpp.lpp": { source: "iana" }, "application/vnd.3gpp.mc-signalling-ear": { source: "iana" }, "application/vnd.3gpp.mcdata-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-payload": { source: "iana" }, "application/vnd.3gpp.mcdata-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-signalling": { source: "iana" }, "application/vnd.3gpp.mcdata-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcdata-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-floor-request+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-location-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-signed+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-ue-init-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcptt-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-affiliation-command+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-affiliation-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-location-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-service-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-transmission-request+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-ue-config+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mcvideo-user-profile+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.mid-call+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.ngap": { source: "iana" }, "application/vnd.3gpp.pfcp": { source: "iana" }, "application/vnd.3gpp.pic-bw-large": { source: "iana", extensions: ["plb"] }, "application/vnd.3gpp.pic-bw-small": { source: "iana", extensions: ["psb"] }, "application/vnd.3gpp.pic-bw-var": { source: "iana", extensions: ["pvb"] }, "application/vnd.3gpp.s1ap": { source: "iana" }, "application/vnd.3gpp.sms": { source: "iana" }, "application/vnd.3gpp.sms+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.srvcc-ext+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.srvcc-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.state-and-event-info+xml": { source: "iana", compressible: true }, "application/vnd.3gpp.ussd+xml": { source: "iana", compressible: true }, "application/vnd.3gpp2.bcmcsinfo+xml": { source: "iana", compressible: true }, "application/vnd.3gpp2.sms": { source: "iana" }, "application/vnd.3gpp2.tcap": { source: "iana", extensions: ["tcap"] }, "application/vnd.3lightssoftware.imagescal": { source: "iana" }, "application/vnd.3m.post-it-notes": { source: "iana", extensions: ["pwn"] }, "application/vnd.accpac.simply.aso": { source: "iana", extensions: ["aso"] }, "application/vnd.accpac.simply.imp": { source: "iana", extensions: ["imp"] }, "application/vnd.acucobol": { source: "iana", extensions: ["acu"] }, "application/vnd.acucorp": { source: "iana", extensions: ["atc", "acutc"] }, "application/vnd.adobe.air-application-installer-package+zip": { source: "apache", compressible: false, extensions: ["air"] }, "application/vnd.adobe.flash.movie": { source: "iana" }, "application/vnd.adobe.formscentral.fcdt": { source: "iana", extensions: ["fcdt"] }, "application/vnd.adobe.fxp": { source: "iana", extensions: ["fxp", "fxpl"] }, "application/vnd.adobe.partial-upload": { source: "iana" }, "application/vnd.adobe.xdp+xml": { source: "iana", compressible: true, extensions: ["xdp"] }, "application/vnd.adobe.xfdf": { source: "iana", extensions: ["xfdf"] }, "application/vnd.aether.imp": { source: "iana" }, "application/vnd.afpc.afplinedata": { source: "iana" }, "application/vnd.afpc.afplinedata-pagedef": { source: "iana" }, "application/vnd.afpc.cmoca-cmresource": { source: "iana" }, "application/vnd.afpc.foca-charset": { source: "iana" }, "application/vnd.afpc.foca-codedfont": { source: "iana" }, "application/vnd.afpc.foca-codepage": { source: "iana" }, "application/vnd.afpc.modca": { source: "iana" }, "application/vnd.afpc.modca-cmtable": { source: "iana" }, "application/vnd.afpc.modca-formdef": { source: "iana" }, "application/vnd.afpc.modca-mediummap": { source: "iana" }, "application/vnd.afpc.modca-objectcontainer": { source: "iana" }, "application/vnd.afpc.modca-overlay": { source: "iana" }, "application/vnd.afpc.modca-pagesegment": { source: "iana" }, "application/vnd.age": { source: "iana", extensions: ["age"] }, "application/vnd.ah-barcode": { source: "iana" }, "application/vnd.ahead.space": { source: "iana", extensions: ["ahead"] }, "application/vnd.airzip.filesecure.azf": { source: "iana", extensions: ["azf"] }, "application/vnd.airzip.filesecure.azs": { source: "iana", extensions: ["azs"] }, "application/vnd.amadeus+json": { source: "iana", compressible: true }, "application/vnd.amazon.ebook": { source: "apache", extensions: ["azw"] }, "application/vnd.amazon.mobi8-ebook": { source: "iana" }, "application/vnd.americandynamics.acc": { source: "iana", extensions: ["acc"] }, "application/vnd.amiga.ami": { source: "iana", extensions: ["ami"] }, "application/vnd.amundsen.maze+xml": { source: "iana", compressible: true }, "application/vnd.android.ota": { source: "iana" }, "application/vnd.android.package-archive": { source: "apache", compressible: false, extensions: ["apk"] }, "application/vnd.anki": { source: "iana" }, "application/vnd.anser-web-certificate-issue-initiation": { source: "iana", extensions: ["cii"] }, "application/vnd.anser-web-funds-transfer-initiation": { source: "apache", extensions: ["fti"] }, "application/vnd.antix.game-component": { source: "iana", extensions: ["atx"] }, "application/vnd.apache.arrow.file": { source: "iana" }, "application/vnd.apache.arrow.stream": { source: "iana" }, "application/vnd.apache.thrift.binary": { source: "iana" }, "application/vnd.apache.thrift.compact": { source: "iana" }, "application/vnd.apache.thrift.json": { source: "iana" }, "application/vnd.api+json": { source: "iana", compressible: true }, "application/vnd.aplextor.warrp+json": { source: "iana", compressible: true }, "application/vnd.apothekende.reservation+json": { source: "iana", compressible: true }, "application/vnd.apple.installer+xml": { source: "iana", compressible: true, extensions: ["mpkg"] }, "application/vnd.apple.keynote": { source: "iana", extensions: ["key"] }, "application/vnd.apple.mpegurl": { source: "iana", extensions: ["m3u8"] }, "application/vnd.apple.numbers": { source: "iana", extensions: ["numbers"] }, "application/vnd.apple.pages": { source: "iana", extensions: ["pages"] }, "application/vnd.apple.pkpass": { compressible: false, extensions: ["pkpass"] }, "application/vnd.arastra.swi": { source: "iana" }, "application/vnd.aristanetworks.swi": { source: "iana", extensions: ["swi"] }, "application/vnd.artisan+json": { source: "iana", compressible: true }, "application/vnd.artsquare": { source: "iana" }, "application/vnd.astraea-software.iota": { source: "iana", extensions: ["iota"] }, "application/vnd.audiograph": { source: "iana", extensions: ["aep"] }, "application/vnd.autopackage": { source: "iana" }, "application/vnd.avalon+json": { source: "iana", compressible: true }, "application/vnd.avistar+xml": { source: "iana", compressible: true }, "application/vnd.balsamiq.bmml+xml": { source: "iana", compressible: true, extensions: ["bmml"] }, "application/vnd.balsamiq.bmpr": { source: "iana" }, "application/vnd.banana-accounting": { source: "iana" }, "application/vnd.bbf.usp.error": { source: "iana" }, "application/vnd.bbf.usp.msg": { source: "iana" }, "application/vnd.bbf.usp.msg+json": { source: "iana", compressible: true }, "application/vnd.bekitzur-stech+json": { source: "iana", compressible: true }, "application/vnd.bint.med-content": { source: "iana" }, "application/vnd.biopax.rdf+xml": { source: "iana", compressible: true }, "application/vnd.blink-idb-value-wrapper": { source: "iana" }, "application/vnd.blueice.multipass": { source: "iana", extensions: ["mpm"] }, "application/vnd.bluetooth.ep.oob": { source: "iana" }, "application/vnd.bluetooth.le.oob": { source: "iana" }, "application/vnd.bmi": { source: "iana", extensions: ["bmi"] }, "application/vnd.bpf": { source: "iana" }, "application/vnd.bpf3": { source: "iana" }, "application/vnd.businessobjects": { source: "iana", extensions: ["rep"] }, "application/vnd.byu.uapi+json": { source: "iana", compressible: true }, "application/vnd.cab-jscript": { source: "iana" }, "application/vnd.canon-cpdl": { source: "iana" }, "application/vnd.canon-lips": { source: "iana" }, "application/vnd.capasystems-pg+json": { source: "iana", compressible: true }, "application/vnd.cendio.thinlinc.clientconf": { source: "iana" }, "application/vnd.century-systems.tcp_stream": { source: "iana" }, "application/vnd.chemdraw+xml": { source: "iana", compressible: true, extensions: ["cdxml"] }, "application/vnd.chess-pgn": { source: "iana" }, "application/vnd.chipnuts.karaoke-mmd": { source: "iana", extensions: ["mmd"] }, "application/vnd.ciedi": { source: "iana" }, "application/vnd.cinderella": { source: "iana", extensions: ["cdy"] }, "application/vnd.cirpack.isdn-ext": { source: "iana" }, "application/vnd.citationstyles.style+xml": { source: "iana", compressible: true, extensions: ["csl"] }, "application/vnd.claymore": { source: "iana", extensions: ["cla"] }, "application/vnd.cloanto.rp9": { source: "iana", extensions: ["rp9"] }, "application/vnd.clonk.c4group": { source: "iana", extensions: ["c4g", "c4d", "c4f", "c4p", "c4u"] }, "application/vnd.cluetrust.cartomobile-config": { source: "iana", extensions: ["c11amc"] }, "application/vnd.cluetrust.cartomobile-config-pkg": { source: "iana", extensions: ["c11amz"] }, "application/vnd.coffeescript": { source: "iana" }, "application/vnd.collabio.xodocuments.document": { source: "iana" }, "application/vnd.collabio.xodocuments.document-template": { source: "iana" }, "application/vnd.collabio.xodocuments.presentation": { source: "iana" }, "application/vnd.collabio.xodocuments.presentation-template": { source: "iana" }, "application/vnd.collabio.xodocuments.spreadsheet": { source: "iana" }, "application/vnd.collabio.xodocuments.spreadsheet-template": { source: "iana" }, "application/vnd.collection+json": { source: "iana", compressible: true }, "application/vnd.collection.doc+json": { source: "iana", compressible: true }, "application/vnd.collection.next+json": { source: "iana", compressible: true }, "application/vnd.comicbook+zip": { source: "iana", compressible: false }, "application/vnd.comicbook-rar": { source: "iana" }, "application/vnd.commerce-battelle": { source: "iana" }, "application/vnd.commonspace": { source: "iana", extensions: ["csp"] }, "application/vnd.contact.cmsg": { source: "iana", extensions: ["cdbcmsg"] }, "application/vnd.coreos.ignition+json": { source: "iana", compressible: true }, "application/vnd.cosmocaller": { source: "iana", extensions: ["cmc"] }, "application/vnd.crick.clicker": { source: "iana", extensions: ["clkx"] }, "application/vnd.crick.clicker.keyboard": { source: "iana", extensions: ["clkk"] }, "application/vnd.crick.clicker.palette": { source: "iana", extensions: ["clkp"] }, "application/vnd.crick.clicker.template": { source: "iana", extensions: ["clkt"] }, "application/vnd.crick.clicker.wordbank": { source: "iana", extensions: ["clkw"] }, "application/vnd.criticaltools.wbs+xml": { source: "iana", compressible: true, extensions: ["wbs"] }, "application/vnd.cryptii.pipe+json": { source: "iana", compressible: true }, "application/vnd.crypto-shade-file": { source: "iana" }, "application/vnd.cryptomator.encrypted": { source: "iana" }, "application/vnd.cryptomator.vault": { source: "iana" }, "application/vnd.ctc-posml": { source: "iana", extensions: ["pml"] }, "application/vnd.ctct.ws+xml": { source: "iana", compressible: true }, "application/vnd.cups-pdf": { source: "iana" }, "application/vnd.cups-postscript": { source: "iana" }, "application/vnd.cups-ppd": { source: "iana", extensions: ["ppd"] }, "application/vnd.cups-raster": { source: "iana" }, "application/vnd.cups-raw": { source: "iana" }, "application/vnd.curl": { source: "iana" }, "application/vnd.curl.car": { source: "apache", extensions: ["car"] }, "application/vnd.curl.pcurl": { source: "apache", extensions: ["pcurl"] }, "application/vnd.cyan.dean.root+xml": { source: "iana", compressible: true }, "application/vnd.cybank": { source: "iana" }, "application/vnd.cyclonedx+json": { source: "iana", compressible: true }, "application/vnd.cyclonedx+xml": { source: "iana", compressible: true }, "application/vnd.d2l.coursepackage1p0+zip": { source: "iana", compressible: false }, "application/vnd.d3m-dataset": { source: "iana" }, "application/vnd.d3m-problem": { source: "iana" }, "application/vnd.dart": { source: "iana", compressible: true, extensions: ["dart"] }, "application/vnd.data-vision.rdz": { source: "iana", extensions: ["rdz"] }, "application/vnd.datapackage+json": { source: "iana", compressible: true }, "application/vnd.dataresource+json": { source: "iana", compressible: true }, "application/vnd.dbf": { source: "iana", extensions: ["dbf"] }, "application/vnd.debian.binary-package": { source: "iana" }, "application/vnd.dece.data": { source: "iana", extensions: ["uvf", "uvvf", "uvd", "uvvd"] }, "application/vnd.dece.ttml+xml": { source: "iana", compressible: true, extensions: ["uvt", "uvvt"] }, "application/vnd.dece.unspecified": { source: "iana", extensions: ["uvx", "uvvx"] }, "application/vnd.dece.zip": { source: "iana", extensions: ["uvz", "uvvz"] }, "application/vnd.denovo.fcselayout-link": { source: "iana", extensions: ["fe_launch"] }, "application/vnd.desmume.movie": { source: "iana" }, "application/vnd.dir-bi.plate-dl-nosuffix": { source: "iana" }, "application/vnd.dm.delegation+xml": { source: "iana", compressible: true }, "application/vnd.dna": { source: "iana", extensions: ["dna"] }, "application/vnd.document+json": { source: "iana", compressible: true }, "application/vnd.dolby.mlp": { source: "apache", extensions: ["mlp"] }, "application/vnd.dolby.mobile.1": { source: "iana" }, "application/vnd.dolby.mobile.2": { source: "iana" }, "application/vnd.doremir.scorecloud-binary-document": { source: "iana" }, "application/vnd.dpgraph": { source: "iana", extensions: ["dpg"] }, "application/vnd.dreamfactory": { source: "iana", extensions: ["dfac"] }, "application/vnd.drive+json": { source: "iana", compressible: true }, "application/vnd.ds-keypoint": { source: "apache", extensions: ["kpxx"] }, "application/vnd.dtg.local": { source: "iana" }, "application/vnd.dtg.local.flash": { source: "iana" }, "application/vnd.dtg.local.html": { source: "iana" }, "application/vnd.dvb.ait": { source: "iana", extensions: ["ait"] }, "application/vnd.dvb.dvbisl+xml": { source: "iana", compressible: true }, "application/vnd.dvb.dvbj": { source: "iana" }, "application/vnd.dvb.esgcontainer": { source: "iana" }, "application/vnd.dvb.ipdcdftnotifaccess": { source: "iana" }, "application/vnd.dvb.ipdcesgaccess": { source: "iana" }, "application/vnd.dvb.ipdcesgaccess2": { source: "iana" }, "application/vnd.dvb.ipdcesgpdd": { source: "iana" }, "application/vnd.dvb.ipdcroaming": { source: "iana" }, "application/vnd.dvb.iptv.alfec-base": { source: "iana" }, "application/vnd.dvb.iptv.alfec-enhancement": { source: "iana" }, "application/vnd.dvb.notif-aggregate-root+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-container+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-generic+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-msglist+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-registration-request+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-ia-registration-response+xml": { source: "iana", compressible: true }, "application/vnd.dvb.notif-init+xml": { source: "iana", compressible: true }, "application/vnd.dvb.pfr": { source: "iana" }, "application/vnd.dvb.service": { source: "iana", extensions: ["svc"] }, "application/vnd.dxr": { source: "iana" }, "application/vnd.dynageo": { source: "iana", extensions: ["geo"] }, "application/vnd.dzr": { source: "iana" }, "application/vnd.easykaraoke.cdgdownload": { source: "iana" }, "application/vnd.ecdis-update": { source: "iana" }, "application/vnd.ecip.rlp": { source: "iana" }, "application/vnd.eclipse.ditto+json": { source: "iana", compressible: true }, "application/vnd.ecowin.chart": { source: "iana", extensions: ["mag"] }, "application/vnd.ecowin.filerequest": { source: "iana" }, "application/vnd.ecowin.fileupdate": { source: "iana" }, "application/vnd.ecowin.series": { source: "iana" }, "application/vnd.ecowin.seriesrequest": { source: "iana" }, "application/vnd.ecowin.seriesupdate": { source: "iana" }, "application/vnd.efi.img": { source: "iana" }, "application/vnd.efi.iso": { source: "iana" }, "application/vnd.emclient.accessrequest+xml": { source: "iana", compressible: true }, "application/vnd.enliven": { source: "iana", extensions: ["nml"] }, "application/vnd.enphase.envoy": { source: "iana" }, "application/vnd.eprints.data+xml": { source: "iana", compressible: true }, "application/vnd.epson.esf": { source: "iana", extensions: ["esf"] }, "application/vnd.epson.msf": { source: "iana", extensions: ["msf"] }, "application/vnd.epson.quickanime": { source: "iana", extensions: ["qam"] }, "application/vnd.epson.salt": { source: "iana", extensions: ["slt"] }, "application/vnd.epson.ssf": { source: "iana", extensions: ["ssf"] }, "application/vnd.ericsson.quickcall": { source: "iana" }, "application/vnd.espass-espass+zip": { source: "iana", compressible: false }, "application/vnd.eszigno3+xml": { source: "iana", compressible: true, extensions: ["es3", "et3"] }, "application/vnd.etsi.aoc+xml": { source: "iana", compressible: true }, "application/vnd.etsi.asic-e+zip": { source: "iana", compressible: false }, "application/vnd.etsi.asic-s+zip": { source: "iana", compressible: false }, "application/vnd.etsi.cug+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvcommand+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvdiscovery+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvprofile+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-bc+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-cod+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsad-npvr+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvservice+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvsync+xml": { source: "iana", compressible: true }, "application/vnd.etsi.iptvueprofile+xml": { source: "iana", compressible: true }, "application/vnd.etsi.mcid+xml": { source: "iana", compressible: true }, "application/vnd.etsi.mheg5": { source: "iana" }, "application/vnd.etsi.overload-control-policy-dataset+xml": { source: "iana", compressible: true }, "application/vnd.etsi.pstn+xml": { source: "iana", compressible: true }, "application/vnd.etsi.sci+xml": { source: "iana", compressible: true }, "application/vnd.etsi.simservs+xml": { source: "iana", compressible: true }, "application/vnd.etsi.timestamp-token": { source: "iana" }, "application/vnd.etsi.tsl+xml": { source: "iana", compressible: true }, "application/vnd.etsi.tsl.der": { source: "iana" }, "application/vnd.eu.kasparian.car+json": { source: "iana", compressible: true }, "application/vnd.eudora.data": { source: "iana" }, "application/vnd.evolv.ecig.profile": { source: "iana" }, "application/vnd.evolv.ecig.settings": { source: "iana" }, "application/vnd.evolv.ecig.theme": { source: "iana" }, "application/vnd.exstream-empower+zip": { source: "iana", compressible: false }, "application/vnd.exstream-package": { source: "iana" }, "application/vnd.ezpix-album": { source: "iana", extensions: ["ez2"] }, "application/vnd.ezpix-package": { source: "iana", extensions: ["ez3"] }, "application/vnd.f-secure.mobile": { source: "iana" }, "application/vnd.familysearch.gedcom+zip": { source: "iana", compressible: false }, "application/vnd.fastcopy-disk-image": { source: "iana" }, "application/vnd.fdf": { source: "iana", extensions: ["fdf"] }, "application/vnd.fdsn.mseed": { source: "iana", extensions: ["mseed"] }, "application/vnd.fdsn.seed": { source: "iana", extensions: ["seed", "dataless"] }, "application/vnd.ffsns": { source: "iana" }, "application/vnd.ficlab.flb+zip": { source: "iana", compressible: false }, "application/vnd.filmit.zfc": { source: "iana" }, "application/vnd.fints": { source: "iana" }, "application/vnd.firemonkeys.cloudcell": { source: "iana" }, "application/vnd.flographit": { source: "iana", extensions: ["gph"] }, "application/vnd.fluxtime.clip": { source: "iana", extensions: ["ftc"] }, "application/vnd.font-fontforge-sfd": { source: "iana" }, "application/vnd.framemaker": { source: "iana", extensions: ["fm", "frame", "maker", "book"] }, "application/vnd.frogans.fnc": { source: "iana", extensions: ["fnc"] }, "application/vnd.frogans.ltf": { source: "iana", extensions: ["ltf"] }, "application/vnd.fsc.weblaunch": { source: "iana", extensions: ["fsc"] }, "application/vnd.fujifilm.fb.docuworks": { source: "iana" }, "application/vnd.fujifilm.fb.docuworks.binder": { source: "iana" }, "application/vnd.fujifilm.fb.docuworks.container": { source: "iana" }, "application/vnd.fujifilm.fb.jfi+xml": { source: "iana", compressible: true }, "application/vnd.fujitsu.oasys": { source: "iana", extensions: ["oas"] }, "application/vnd.fujitsu.oasys2": { source: "iana", extensions: ["oa2"] }, "application/vnd.fujitsu.oasys3": { source: "iana", extensions: ["oa3"] }, "application/vnd.fujitsu.oasysgp": { source: "iana", extensions: ["fg5"] }, "application/vnd.fujitsu.oasysprs": { source: "iana", extensions: ["bh2"] }, "application/vnd.fujixerox.art-ex": { source: "iana" }, "application/vnd.fujixerox.art4": { source: "iana" }, "application/vnd.fujixerox.ddd": { source: "iana", extensions: ["ddd"] }, "application/vnd.fujixerox.docuworks": { source: "iana", extensions: ["xdw"] }, "application/vnd.fujixerox.docuworks.binder": { source: "iana", extensions: ["xbd"] }, "application/vnd.fujixerox.docuworks.container": { source: "iana" }, "application/vnd.fujixerox.hbpl": { source: "iana" }, "application/vnd.fut-misnet": { source: "iana" }, "application/vnd.futoin+cbor": { source: "iana" }, "application/vnd.futoin+json": { source: "iana", compressible: true }, "application/vnd.fuzzysheet": { source: "iana", extensions: ["fzs"] }, "application/vnd.genomatix.tuxedo": { source: "iana", extensions: ["txd"] }, "application/vnd.gentics.grd+json": { source: "iana", compressible: true }, "application/vnd.geo+json": { source: "iana", compressible: true }, "application/vnd.geocube+xml": { source: "iana", compressible: true }, "application/vnd.geogebra.file": { source: "iana", extensions: ["ggb"] }, "application/vnd.geogebra.slides": { source: "iana" }, "application/vnd.geogebra.tool": { source: "iana", extensions: ["ggt"] }, "application/vnd.geometry-explorer": { source: "iana", extensions: ["gex", "gre"] }, "application/vnd.geonext": { source: "iana", extensions: ["gxt"] }, "application/vnd.geoplan": { source: "iana", extensions: ["g2w"] }, "application/vnd.geospace": { source: "iana", extensions: ["g3w"] }, "application/vnd.gerber": { source: "iana" }, "application/vnd.globalplatform.card-content-mgt": { source: "iana" }, "application/vnd.globalplatform.card-content-mgt-response": { source: "iana" }, "application/vnd.gmx": { source: "iana", extensions: ["gmx"] }, "application/vnd.google-apps.document": { compressible: false, extensions: ["gdoc"] }, "application/vnd.google-apps.presentation": { compressible: false, extensions: ["gslides"] }, "application/vnd.google-apps.spreadsheet": { compressible: false, extensions: ["gsheet"] }, "application/vnd.google-earth.kml+xml": { source: "iana", compressible: true, extensions: ["kml"] }, "application/vnd.google-earth.kmz": { source: "iana", compressible: false, extensions: ["kmz"] }, "application/vnd.gov.sk.e-form+xml": { source: "iana", compressible: true }, "application/vnd.gov.sk.e-form+zip": { source: "iana", compressible: false }, "application/vnd.gov.sk.xmldatacontainer+xml": { source: "iana", compressible: true }, "application/vnd.grafeq": { source: "iana", extensions: ["gqf", "gqs"] }, "application/vnd.gridmp": { source: "iana" }, "application/vnd.groove-account": { source: "iana", extensions: ["gac"] }, "application/vnd.groove-help": { source: "iana", extensions: ["ghf"] }, "application/vnd.groove-identity-message": { source: "iana", extensions: ["gim"] }, "application/vnd.groove-injector": { source: "iana", extensions: ["grv"] }, "application/vnd.groove-tool-message": { source: "iana", extensions: ["gtm"] }, "application/vnd.groove-tool-template": { source: "iana", extensions: ["tpl"] }, "application/vnd.groove-vcard": { source: "iana", extensions: ["vcg"] }, "application/vnd.hal+json": { source: "iana", compressible: true }, "application/vnd.hal+xml": { source: "iana", compressible: true, extensions: ["hal"] }, "application/vnd.handheld-entertainment+xml": { source: "iana", compressible: true, extensions: ["zmm"] }, "application/vnd.hbci": { source: "iana", extensions: ["hbci"] }, "application/vnd.hc+json": { source: "iana", compressible: true }, "application/vnd.hcl-bireports": { source: "iana" }, "application/vnd.hdt": { source: "iana" }, "application/vnd.heroku+json": { source: "iana", compressible: true }, "application/vnd.hhe.lesson-player": { source: "iana", extensions: ["les"] }, "application/vnd.hl7cda+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.hl7v2+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.hp-hpgl": { source: "iana", extensions: ["hpgl"] }, "application/vnd.hp-hpid": { source: "iana", extensions: ["hpid"] }, "application/vnd.hp-hps": { source: "iana", extensions: ["hps"] }, "application/vnd.hp-jlyt": { source: "iana", extensions: ["jlt"] }, "application/vnd.hp-pcl": { source: "iana", extensions: ["pcl"] }, "application/vnd.hp-pclxl": { source: "iana", extensions: ["pclxl"] }, "application/vnd.httphone": { source: "iana" }, "application/vnd.hydrostatix.sof-data": { source: "iana", extensions: ["sfd-hdstx"] }, "application/vnd.hyper+json": { source: "iana", compressible: true }, "application/vnd.hyper-item+json": { source: "iana", compressible: true }, "application/vnd.hyperdrive+json": { source: "iana", compressible: true }, "application/vnd.hzn-3d-crossword": { source: "iana" }, "application/vnd.ibm.afplinedata": { source: "iana" }, "application/vnd.ibm.electronic-media": { source: "iana" }, "application/vnd.ibm.minipay": { source: "iana", extensions: ["mpy"] }, "application/vnd.ibm.modcap": { source: "iana", extensions: ["afp", "listafp", "list3820"] }, "application/vnd.ibm.rights-management": { source: "iana", extensions: ["irm"] }, "application/vnd.ibm.secure-container": { source: "iana", extensions: ["sc"] }, "application/vnd.iccprofile": { source: "iana", extensions: ["icc", "icm"] }, "application/vnd.ieee.1905": { source: "iana" }, "application/vnd.igloader": { source: "iana", extensions: ["igl"] }, "application/vnd.imagemeter.folder+zip": { source: "iana", compressible: false }, "application/vnd.imagemeter.image+zip": { source: "iana", compressible: false }, "application/vnd.immervision-ivp": { source: "iana", extensions: ["ivp"] }, "application/vnd.immervision-ivu": { source: "iana", extensions: ["ivu"] }, "application/vnd.ims.imsccv1p1": { source: "iana" }, "application/vnd.ims.imsccv1p2": { source: "iana" }, "application/vnd.ims.imsccv1p3": { source: "iana" }, "application/vnd.ims.lis.v2.result+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolconsumerprofile+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolproxy+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolproxy.id+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolsettings+json": { source: "iana", compressible: true }, "application/vnd.ims.lti.v2.toolsettings.simple+json": { source: "iana", compressible: true }, "application/vnd.informedcontrol.rms+xml": { source: "iana", compressible: true }, "application/vnd.informix-visionary": { source: "iana" }, "application/vnd.infotech.project": { source: "iana" }, "application/vnd.infotech.project+xml": { source: "iana", compressible: true }, "application/vnd.innopath.wamp.notification": { source: "iana" }, "application/vnd.insors.igm": { source: "iana", extensions: ["igm"] }, "application/vnd.intercon.formnet": { source: "iana", extensions: ["xpw", "xpx"] }, "application/vnd.intergeo": { source: "iana", extensions: ["i2g"] }, "application/vnd.intertrust.digibox": { source: "iana" }, "application/vnd.intertrust.nncp": { source: "iana" }, "application/vnd.intu.qbo": { source: "iana", extensions: ["qbo"] }, "application/vnd.intu.qfx": { source: "iana", extensions: ["qfx"] }, "application/vnd.iptc.g2.catalogitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.conceptitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.knowledgeitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.newsitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.newsmessage+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.packageitem+xml": { source: "iana", compressible: true }, "application/vnd.iptc.g2.planningitem+xml": { source: "iana", compressible: true }, "application/vnd.ipunplugged.rcprofile": { source: "iana", extensions: ["rcprofile"] }, "application/vnd.irepository.package+xml": { source: "iana", compressible: true, extensions: ["irp"] }, "application/vnd.is-xpr": { source: "iana", extensions: ["xpr"] }, "application/vnd.isac.fcs": { source: "iana", extensions: ["fcs"] }, "application/vnd.iso11783-10+zip": { source: "iana", compressible: false }, "application/vnd.jam": { source: "iana", extensions: ["jam"] }, "application/vnd.japannet-directory-service": { source: "iana" }, "application/vnd.japannet-jpnstore-wakeup": { source: "iana" }, "application/vnd.japannet-payment-wakeup": { source: "iana" }, "application/vnd.japannet-registration": { source: "iana" }, "application/vnd.japannet-registration-wakeup": { source: "iana" }, "application/vnd.japannet-setstore-wakeup": { source: "iana" }, "application/vnd.japannet-verification": { source: "iana" }, "application/vnd.japannet-verification-wakeup": { source: "iana" }, "application/vnd.jcp.javame.midlet-rms": { source: "iana", extensions: ["rms"] }, "application/vnd.jisp": { source: "iana", extensions: ["jisp"] }, "application/vnd.joost.joda-archive": { source: "iana", extensions: ["joda"] }, "application/vnd.jsk.isdn-ngn": { source: "iana" }, "application/vnd.kahootz": { source: "iana", extensions: ["ktz", "ktr"] }, "application/vnd.kde.karbon": { source: "iana", extensions: ["karbon"] }, "application/vnd.kde.kchart": { source: "iana", extensions: ["chrt"] }, "application/vnd.kde.kformula": { source: "iana", extensions: ["kfo"] }, "application/vnd.kde.kivio": { source: "iana", extensions: ["flw"] }, "application/vnd.kde.kontour": { source: "iana", extensions: ["kon"] }, "application/vnd.kde.kpresenter": { source: "iana", extensions: ["kpr", "kpt"] }, "application/vnd.kde.kspread": { source: "iana", extensions: ["ksp"] }, "application/vnd.kde.kword": { source: "iana", extensions: ["kwd", "kwt"] }, "application/vnd.kenameaapp": { source: "iana", extensions: ["htke"] }, "application/vnd.kidspiration": { source: "iana", extensions: ["kia"] }, "application/vnd.kinar": { source: "iana", extensions: ["kne", "knp"] }, "application/vnd.koan": { source: "iana", extensions: ["skp", "skd", "skt", "skm"] }, "application/vnd.kodak-descriptor": { source: "iana", extensions: ["sse"] }, "application/vnd.las": { source: "iana" }, "application/vnd.las.las+json": { source: "iana", compressible: true }, "application/vnd.las.las+xml": { source: "iana", compressible: true, extensions: ["lasxml"] }, "application/vnd.laszip": { source: "iana" }, "application/vnd.leap+json": { source: "iana", compressible: true }, "application/vnd.liberty-request+xml": { source: "iana", compressible: true }, "application/vnd.llamagraphics.life-balance.desktop": { source: "iana", extensions: ["lbd"] }, "application/vnd.llamagraphics.life-balance.exchange+xml": { source: "iana", compressible: true, extensions: ["lbe"] }, "application/vnd.logipipe.circuit+zip": { source: "iana", compressible: false }, "application/vnd.loom": { source: "iana" }, "application/vnd.lotus-1-2-3": { source: "iana", extensions: ["123"] }, "application/vnd.lotus-approach": { source: "iana", extensions: ["apr"] }, "application/vnd.lotus-freelance": { source: "iana", extensions: ["pre"] }, "application/vnd.lotus-notes": { source: "iana", extensions: ["nsf"] }, "application/vnd.lotus-organizer": { source: "iana", extensions: ["org"] }, "application/vnd.lotus-screencam": { source: "iana", extensions: ["scm"] }, "application/vnd.lotus-wordpro": { source: "iana", extensions: ["lwp"] }, "application/vnd.macports.portpkg": { source: "iana", extensions: ["portpkg"] }, "application/vnd.mapbox-vector-tile": { source: "iana", extensions: ["mvt"] }, "application/vnd.marlin.drm.actiontoken+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.conftoken+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.license+xml": { source: "iana", compressible: true }, "application/vnd.marlin.drm.mdcf": { source: "iana" }, "application/vnd.mason+json": { source: "iana", compressible: true }, "application/vnd.maxar.archive.3tz+zip": { source: "iana", compressible: false }, "application/vnd.maxmind.maxmind-db": { source: "iana" }, "application/vnd.mcd": { source: "iana", extensions: ["mcd"] }, "application/vnd.medcalcdata": { source: "iana", extensions: ["mc1"] }, "application/vnd.mediastation.cdkey": { source: "iana", extensions: ["cdkey"] }, "application/vnd.meridian-slingshot": { source: "iana" }, "application/vnd.mfer": { source: "iana", extensions: ["mwf"] }, "application/vnd.mfmp": { source: "iana", extensions: ["mfm"] }, "application/vnd.micro+json": { source: "iana", compressible: true }, "application/vnd.micrografx.flo": { source: "iana", extensions: ["flo"] }, "application/vnd.micrografx.igx": { source: "iana", extensions: ["igx"] }, "application/vnd.microsoft.portable-executable": { source: "iana" }, "application/vnd.microsoft.windows.thumbnail-cache": { source: "iana" }, "application/vnd.miele+json": { source: "iana", compressible: true }, "application/vnd.mif": { source: "iana", extensions: ["mif"] }, "application/vnd.minisoft-hp3000-save": { source: "iana" }, "application/vnd.mitsubishi.misty-guard.trustweb": { source: "iana" }, "application/vnd.mobius.daf": { source: "iana", extensions: ["daf"] }, "application/vnd.mobius.dis": { source: "iana", extensions: ["dis"] }, "application/vnd.mobius.mbk": { source: "iana", extensions: ["mbk"] }, "application/vnd.mobius.mqy": { source: "iana", extensions: ["mqy"] }, "application/vnd.mobius.msl": { source: "iana", extensions: ["msl"] }, "application/vnd.mobius.plc": { source: "iana", extensions: ["plc"] }, "application/vnd.mobius.txf": { source: "iana", extensions: ["txf"] }, "application/vnd.mophun.application": { source: "iana", extensions: ["mpn"] }, "application/vnd.mophun.certificate": { source: "iana", extensions: ["mpc"] }, "application/vnd.motorola.flexsuite": { source: "iana" }, "application/vnd.motorola.flexsuite.adsi": { source: "iana" }, "application/vnd.motorola.flexsuite.fis": { source: "iana" }, "application/vnd.motorola.flexsuite.gotap": { source: "iana" }, "application/vnd.motorola.flexsuite.kmr": { source: "iana" }, "application/vnd.motorola.flexsuite.ttc": { source: "iana" }, "application/vnd.motorola.flexsuite.wem": { source: "iana" }, "application/vnd.motorola.iprm": { source: "iana" }, "application/vnd.mozilla.xul+xml": { source: "iana", compressible: true, extensions: ["xul"] }, "application/vnd.ms-3mfdocument": { source: "iana" }, "application/vnd.ms-artgalry": { source: "iana", extensions: ["cil"] }, "application/vnd.ms-asf": { source: "iana" }, "application/vnd.ms-cab-compressed": { source: "iana", extensions: ["cab"] }, "application/vnd.ms-color.iccprofile": { source: "apache" }, "application/vnd.ms-excel": { source: "iana", compressible: false, extensions: ["xls", "xlm", "xla", "xlc", "xlt", "xlw"] }, "application/vnd.ms-excel.addin.macroenabled.12": { source: "iana", extensions: ["xlam"] }, "application/vnd.ms-excel.sheet.binary.macroenabled.12": { source: "iana", extensions: ["xlsb"] }, "application/vnd.ms-excel.sheet.macroenabled.12": { source: "iana", extensions: ["xlsm"] }, "application/vnd.ms-excel.template.macroenabled.12": { source: "iana", extensions: ["xltm"] }, "application/vnd.ms-fontobject": { source: "iana", compressible: true, extensions: ["eot"] }, "application/vnd.ms-htmlhelp": { source: "iana", extensions: ["chm"] }, "application/vnd.ms-ims": { source: "iana", extensions: ["ims"] }, "application/vnd.ms-lrm": { source: "iana", extensions: ["lrm"] }, "application/vnd.ms-office.activex+xml": { source: "iana", compressible: true }, "application/vnd.ms-officetheme": { source: "iana", extensions: ["thmx"] }, "application/vnd.ms-opentype": { source: "apache", compressible: true }, "application/vnd.ms-outlook": { compressible: false, extensions: ["msg"] }, "application/vnd.ms-package.obfuscated-opentype": { source: "apache" }, "application/vnd.ms-pki.seccat": { source: "apache", extensions: ["cat"] }, "application/vnd.ms-pki.stl": { source: "apache", extensions: ["stl"] }, "application/vnd.ms-playready.initiator+xml": { source: "iana", compressible: true }, "application/vnd.ms-powerpoint": { source: "iana", compressible: false, extensions: ["ppt", "pps", "pot"] }, "application/vnd.ms-powerpoint.addin.macroenabled.12": { source: "iana", extensions: ["ppam"] }, "application/vnd.ms-powerpoint.presentation.macroenabled.12": { source: "iana", extensions: ["pptm"] }, "application/vnd.ms-powerpoint.slide.macroenabled.12": { source: "iana", extensions: ["sldm"] }, "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { source: "iana", extensions: ["ppsm"] }, "application/vnd.ms-powerpoint.template.macroenabled.12": { source: "iana", extensions: ["potm"] }, "application/vnd.ms-printdevicecapabilities+xml": { source: "iana", compressible: true }, "application/vnd.ms-printing.printticket+xml": { source: "apache", compressible: true }, "application/vnd.ms-printschematicket+xml": { source: "iana", compressible: true }, "application/vnd.ms-project": { source: "iana", extensions: ["mpp", "mpt"] }, "application/vnd.ms-tnef": { source: "iana" }, "application/vnd.ms-windows.devicepairing": { source: "iana" }, "application/vnd.ms-windows.nwprinting.oob": { source: "iana" }, "application/vnd.ms-windows.printerpairing": { source: "iana" }, "application/vnd.ms-windows.wsd.oob": { source: "iana" }, "application/vnd.ms-wmdrm.lic-chlg-req": { source: "iana" }, "application/vnd.ms-wmdrm.lic-resp": { source: "iana" }, "application/vnd.ms-wmdrm.meter-chlg-req": { source: "iana" }, "application/vnd.ms-wmdrm.meter-resp": { source: "iana" }, "application/vnd.ms-word.document.macroenabled.12": { source: "iana", extensions: ["docm"] }, "application/vnd.ms-word.template.macroenabled.12": { source: "iana", extensions: ["dotm"] }, "application/vnd.ms-works": { source: "iana", extensions: ["wps", "wks", "wcm", "wdb"] }, "application/vnd.ms-wpl": { source: "iana", extensions: ["wpl"] }, "application/vnd.ms-xpsdocument": { source: "iana", compressible: false, extensions: ["xps"] }, "application/vnd.msa-disk-image": { source: "iana" }, "application/vnd.mseq": { source: "iana", extensions: ["mseq"] }, "application/vnd.msign": { source: "iana" }, "application/vnd.multiad.creator": { source: "iana" }, "application/vnd.multiad.creator.cif": { source: "iana" }, "application/vnd.music-niff": { source: "iana" }, "application/vnd.musician": { source: "iana", extensions: ["mus"] }, "application/vnd.muvee.style": { source: "iana", extensions: ["msty"] }, "application/vnd.mynfc": { source: "iana", extensions: ["taglet"] }, "application/vnd.nacamar.ybrid+json": { source: "iana", compressible: true }, "application/vnd.ncd.control": { source: "iana" }, "application/vnd.ncd.reference": { source: "iana" }, "application/vnd.nearst.inv+json": { source: "iana", compressible: true }, "application/vnd.nebumind.line": { source: "iana" }, "application/vnd.nervana": { source: "iana" }, "application/vnd.netfpx": { source: "iana" }, "application/vnd.neurolanguage.nlu": { source: "iana", extensions: ["nlu"] }, "application/vnd.nimn": { source: "iana" }, "application/vnd.nintendo.nitro.rom": { source: "iana" }, "application/vnd.nintendo.snes.rom": { source: "iana" }, "application/vnd.nitf": { source: "iana", extensions: ["ntf", "nitf"] }, "application/vnd.noblenet-directory": { source: "iana", extensions: ["nnd"] }, "application/vnd.noblenet-sealer": { source: "iana", extensions: ["nns"] }, "application/vnd.noblenet-web": { source: "iana", extensions: ["nnw"] }, "application/vnd.nokia.catalogs": { source: "iana" }, "application/vnd.nokia.conml+wbxml": { source: "iana" }, "application/vnd.nokia.conml+xml": { source: "iana", compressible: true }, "application/vnd.nokia.iptv.config+xml": { source: "iana", compressible: true }, "application/vnd.nokia.isds-radio-presets": { source: "iana" }, "application/vnd.nokia.landmark+wbxml": { source: "iana" }, "application/vnd.nokia.landmark+xml": { source: "iana", compressible: true }, "application/vnd.nokia.landmarkcollection+xml": { source: "iana", compressible: true }, "application/vnd.nokia.n-gage.ac+xml": { source: "iana", compressible: true, extensions: ["ac"] }, "application/vnd.nokia.n-gage.data": { source: "iana", extensions: ["ngdat"] }, "application/vnd.nokia.n-gage.symbian.install": { source: "iana", extensions: ["n-gage"] }, "application/vnd.nokia.ncd": { source: "iana" }, "application/vnd.nokia.pcd+wbxml": { source: "iana" }, "application/vnd.nokia.pcd+xml": { source: "iana", compressible: true }, "application/vnd.nokia.radio-preset": { source: "iana", extensions: ["rpst"] }, "application/vnd.nokia.radio-presets": { source: "iana", extensions: ["rpss"] }, "application/vnd.novadigm.edm": { source: "iana", extensions: ["edm"] }, "application/vnd.novadigm.edx": { source: "iana", extensions: ["edx"] }, "application/vnd.novadigm.ext": { source: "iana", extensions: ["ext"] }, "application/vnd.ntt-local.content-share": { source: "iana" }, "application/vnd.ntt-local.file-transfer": { source: "iana" }, "application/vnd.ntt-local.ogw_remote-access": { source: "iana" }, "application/vnd.ntt-local.sip-ta_remote": { source: "iana" }, "application/vnd.ntt-local.sip-ta_tcp_stream": { source: "iana" }, "application/vnd.oasis.opendocument.chart": { source: "iana", extensions: ["odc"] }, "application/vnd.oasis.opendocument.chart-template": { source: "iana", extensions: ["otc"] }, "application/vnd.oasis.opendocument.database": { source: "iana", extensions: ["odb"] }, "application/vnd.oasis.opendocument.formula": { source: "iana", extensions: ["odf"] }, "application/vnd.oasis.opendocument.formula-template": { source: "iana", extensions: ["odft"] }, "application/vnd.oasis.opendocument.graphics": { source: "iana", compressible: false, extensions: ["odg"] }, "application/vnd.oasis.opendocument.graphics-template": { source: "iana", extensions: ["otg"] }, "application/vnd.oasis.opendocument.image": { source: "iana", extensions: ["odi"] }, "application/vnd.oasis.opendocument.image-template": { source: "iana", extensions: ["oti"] }, "application/vnd.oasis.opendocument.presentation": { source: "iana", compressible: false, extensions: ["odp"] }, "application/vnd.oasis.opendocument.presentation-template": { source: "iana", extensions: ["otp"] }, "application/vnd.oasis.opendocument.spreadsheet": { source: "iana", compressible: false, extensions: ["ods"] }, "application/vnd.oasis.opendocument.spreadsheet-template": { source: "iana", extensions: ["ots"] }, "application/vnd.oasis.opendocument.text": { source: "iana", compressible: false, extensions: ["odt"] }, "application/vnd.oasis.opendocument.text-master": { source: "iana", extensions: ["odm"] }, "application/vnd.oasis.opendocument.text-template": { source: "iana", extensions: ["ott"] }, "application/vnd.oasis.opendocument.text-web": { source: "iana", extensions: ["oth"] }, "application/vnd.obn": { source: "iana" }, "application/vnd.ocf+cbor": { source: "iana" }, "application/vnd.oci.image.manifest.v1+json": { source: "iana", compressible: true }, "application/vnd.oftn.l10n+json": { source: "iana", compressible: true }, "application/vnd.oipf.contentaccessdownload+xml": { source: "iana", compressible: true }, "application/vnd.oipf.contentaccessstreaming+xml": { source: "iana", compressible: true }, "application/vnd.oipf.cspg-hexbinary": { source: "iana" }, "application/vnd.oipf.dae.svg+xml": { source: "iana", compressible: true }, "application/vnd.oipf.dae.xhtml+xml": { source: "iana", compressible: true }, "application/vnd.oipf.mippvcontrolmessage+xml": { source: "iana", compressible: true }, "application/vnd.oipf.pae.gem": { source: "iana" }, "application/vnd.oipf.spdiscovery+xml": { source: "iana", compressible: true }, "application/vnd.oipf.spdlist+xml": { source: "iana", compressible: true }, "application/vnd.oipf.ueprofile+xml": { source: "iana", compressible: true }, "application/vnd.oipf.userprofile+xml": { source: "iana", compressible: true }, "application/vnd.olpc-sugar": { source: "iana", extensions: ["xo"] }, "application/vnd.oma-scws-config": { source: "iana" }, "application/vnd.oma-scws-http-request": { source: "iana" }, "application/vnd.oma-scws-http-response": { source: "iana" }, "application/vnd.oma.bcast.associated-procedure-parameter+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.drm-trigger+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.imd+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.ltkm": { source: "iana" }, "application/vnd.oma.bcast.notification+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.provisioningtrigger": { source: "iana" }, "application/vnd.oma.bcast.sgboot": { source: "iana" }, "application/vnd.oma.bcast.sgdd+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.sgdu": { source: "iana" }, "application/vnd.oma.bcast.simple-symbol-container": { source: "iana" }, "application/vnd.oma.bcast.smartcard-trigger+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.sprov+xml": { source: "iana", compressible: true }, "application/vnd.oma.bcast.stkm": { source: "iana" }, "application/vnd.oma.cab-address-book+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-feature-handler+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-pcc+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-subs-invite+xml": { source: "iana", compressible: true }, "application/vnd.oma.cab-user-prefs+xml": { source: "iana", compressible: true }, "application/vnd.oma.dcd": { source: "iana" }, "application/vnd.oma.dcdc": { source: "iana" }, "application/vnd.oma.dd2+xml": { source: "iana", compressible: true, extensions: ["dd2"] }, "application/vnd.oma.drm.risd+xml": { source: "iana", compressible: true }, "application/vnd.oma.group-usage-list+xml": { source: "iana", compressible: true }, "application/vnd.oma.lwm2m+cbor": { source: "iana" }, "application/vnd.oma.lwm2m+json": { source: "iana", compressible: true }, "application/vnd.oma.lwm2m+tlv": { source: "iana" }, "application/vnd.oma.pal+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.detailed-progress-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.final-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.groups+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.invocation-descriptor+xml": { source: "iana", compressible: true }, "application/vnd.oma.poc.optimized-progress-report+xml": { source: "iana", compressible: true }, "application/vnd.oma.push": { source: "iana" }, "application/vnd.oma.scidm.messages+xml": { source: "iana", compressible: true }, "application/vnd.oma.xcap-directory+xml": { source: "iana", compressible: true }, "application/vnd.omads-email+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omads-file+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omads-folder+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.omaloc-supl-init": { source: "iana" }, "application/vnd.onepager": { source: "iana" }, "application/vnd.onepagertamp": { source: "iana" }, "application/vnd.onepagertamx": { source: "iana" }, "application/vnd.onepagertat": { source: "iana" }, "application/vnd.onepagertatp": { source: "iana" }, "application/vnd.onepagertatx": { source: "iana" }, "application/vnd.openblox.game+xml": { source: "iana", compressible: true, extensions: ["obgx"] }, "application/vnd.openblox.game-binary": { source: "iana" }, "application/vnd.openeye.oeb": { source: "iana" }, "application/vnd.openofficeorg.extension": { source: "apache", extensions: ["oxt"] }, "application/vnd.openstreetmap.data+xml": { source: "iana", compressible: true, extensions: ["osm"] }, "application/vnd.opentimestamps.ots": { source: "iana" }, "application/vnd.openxmlformats-officedocument.custom-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawing+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.extended-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.presentation": { source: "iana", compressible: false, extensions: ["pptx"] }, "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slide": { source: "iana", extensions: ["sldx"] }, "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { source: "iana", extensions: ["ppsx"] }, "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.template": { source: "iana", extensions: ["potx"] }, "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { source: "iana", compressible: false, extensions: ["xlsx"] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { source: "iana", extensions: ["xltx"] }, "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.theme+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.themeoverride+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.vmldrawing": { source: "iana" }, "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { source: "iana", compressible: false, extensions: ["docx"] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { source: "iana", extensions: ["dotx"] }, "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.core-properties+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { source: "iana", compressible: true }, "application/vnd.openxmlformats-package.relationships+xml": { source: "iana", compressible: true }, "application/vnd.oracle.resource+json": { source: "iana", compressible: true }, "application/vnd.orange.indata": { source: "iana" }, "application/vnd.osa.netdeploy": { source: "iana" }, "application/vnd.osgeo.mapguide.package": { source: "iana", extensions: ["mgp"] }, "application/vnd.osgi.bundle": { source: "iana" }, "application/vnd.osgi.dp": { source: "iana", extensions: ["dp"] }, "application/vnd.osgi.subsystem": { source: "iana", extensions: ["esa"] }, "application/vnd.otps.ct-kip+xml": { source: "iana", compressible: true }, "application/vnd.oxli.countgraph": { source: "iana" }, "application/vnd.pagerduty+json": { source: "iana", compressible: true }, "application/vnd.palm": { source: "iana", extensions: ["pdb", "pqa", "oprc"] }, "application/vnd.panoply": { source: "iana" }, "application/vnd.paos.xml": { source: "iana" }, "application/vnd.patentdive": { source: "iana" }, "application/vnd.patientecommsdoc": { source: "iana" }, "application/vnd.pawaafile": { source: "iana", extensions: ["paw"] }, "application/vnd.pcos": { source: "iana" }, "application/vnd.pg.format": { source: "iana", extensions: ["str"] }, "application/vnd.pg.osasli": { source: "iana", extensions: ["ei6"] }, "application/vnd.piaccess.application-licence": { source: "iana" }, "application/vnd.picsel": { source: "iana", extensions: ["efif"] }, "application/vnd.pmi.widget": { source: "iana", extensions: ["wg"] }, "application/vnd.poc.group-advertisement+xml": { source: "iana", compressible: true }, "application/vnd.pocketlearn": { source: "iana", extensions: ["plf"] }, "application/vnd.powerbuilder6": { source: "iana", extensions: ["pbd"] }, "application/vnd.powerbuilder6-s": { source: "iana" }, "application/vnd.powerbuilder7": { source: "iana" }, "application/vnd.powerbuilder7-s": { source: "iana" }, "application/vnd.powerbuilder75": { source: "iana" }, "application/vnd.powerbuilder75-s": { source: "iana" }, "application/vnd.preminet": { source: "iana" }, "application/vnd.previewsystems.box": { source: "iana", extensions: ["box"] }, "application/vnd.proteus.magazine": { source: "iana", extensions: ["mgz"] }, "application/vnd.psfs": { source: "iana" }, "application/vnd.publishare-delta-tree": { source: "iana", extensions: ["qps"] }, "application/vnd.pvi.ptid1": { source: "iana", extensions: ["ptid"] }, "application/vnd.pwg-multiplexed": { source: "iana" }, "application/vnd.pwg-xhtml-print+xml": { source: "iana", compressible: true }, "application/vnd.qualcomm.brew-app-res": { source: "iana" }, "application/vnd.quarantainenet": { source: "iana" }, "application/vnd.quark.quarkxpress": { source: "iana", extensions: ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"] }, "application/vnd.quobject-quoxdocument": { source: "iana" }, "application/vnd.radisys.moml+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-conf+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-conn+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-dialog+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-audit-stream+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-conf+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-base+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-fax-detect+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-group+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-speech+xml": { source: "iana", compressible: true }, "application/vnd.radisys.msml-dialog-transform+xml": { source: "iana", compressible: true }, "application/vnd.rainstor.data": { source: "iana" }, "application/vnd.rapid": { source: "iana" }, "application/vnd.rar": { source: "iana", extensions: ["rar"] }, "application/vnd.realvnc.bed": { source: "iana", extensions: ["bed"] }, "application/vnd.recordare.musicxml": { source: "iana", extensions: ["mxl"] }, "application/vnd.recordare.musicxml+xml": { source: "iana", compressible: true, extensions: ["musicxml"] }, "application/vnd.renlearn.rlprint": { source: "iana" }, "application/vnd.resilient.logic": { source: "iana" }, "application/vnd.restful+json": { source: "iana", compressible: true }, "application/vnd.rig.cryptonote": { source: "iana", extensions: ["cryptonote"] }, "application/vnd.rim.cod": { source: "apache", extensions: ["cod"] }, "application/vnd.rn-realmedia": { source: "apache", extensions: ["rm"] }, "application/vnd.rn-realmedia-vbr": { source: "apache", extensions: ["rmvb"] }, "application/vnd.route66.link66+xml": { source: "iana", compressible: true, extensions: ["link66"] }, "application/vnd.rs-274x": { source: "iana" }, "application/vnd.ruckus.download": { source: "iana" }, "application/vnd.s3sms": { source: "iana" }, "application/vnd.sailingtracker.track": { source: "iana", extensions: ["st"] }, "application/vnd.sar": { source: "iana" }, "application/vnd.sbm.cid": { source: "iana" }, "application/vnd.sbm.mid2": { source: "iana" }, "application/vnd.scribus": { source: "iana" }, "application/vnd.sealed.3df": { source: "iana" }, "application/vnd.sealed.csf": { source: "iana" }, "application/vnd.sealed.doc": { source: "iana" }, "application/vnd.sealed.eml": { source: "iana" }, "application/vnd.sealed.mht": { source: "iana" }, "application/vnd.sealed.net": { source: "iana" }, "application/vnd.sealed.ppt": { source: "iana" }, "application/vnd.sealed.tiff": { source: "iana" }, "application/vnd.sealed.xls": { source: "iana" }, "application/vnd.sealedmedia.softseal.html": { source: "iana" }, "application/vnd.sealedmedia.softseal.pdf": { source: "iana" }, "application/vnd.seemail": { source: "iana", extensions: ["see"] }, "application/vnd.seis+json": { source: "iana", compressible: true }, "application/vnd.sema": { source: "iana", extensions: ["sema"] }, "application/vnd.semd": { source: "iana", extensions: ["semd"] }, "application/vnd.semf": { source: "iana", extensions: ["semf"] }, "application/vnd.shade-save-file": { source: "iana" }, "application/vnd.shana.informed.formdata": { source: "iana", extensions: ["ifm"] }, "application/vnd.shana.informed.formtemplate": { source: "iana", extensions: ["itp"] }, "application/vnd.shana.informed.interchange": { source: "iana", extensions: ["iif"] }, "application/vnd.shana.informed.package": { source: "iana", extensions: ["ipk"] }, "application/vnd.shootproof+json": { source: "iana", compressible: true }, "application/vnd.shopkick+json": { source: "iana", compressible: true }, "application/vnd.shp": { source: "iana" }, "application/vnd.shx": { source: "iana" }, "application/vnd.sigrok.session": { source: "iana" }, "application/vnd.simtech-mindmapper": { source: "iana", extensions: ["twd", "twds"] }, "application/vnd.siren+json": { source: "iana", compressible: true }, "application/vnd.smaf": { source: "iana", extensions: ["mmf"] }, "application/vnd.smart.notebook": { source: "iana" }, "application/vnd.smart.teacher": { source: "iana", extensions: ["teacher"] }, "application/vnd.snesdev-page-table": { source: "iana" }, "application/vnd.software602.filler.form+xml": { source: "iana", compressible: true, extensions: ["fo"] }, "application/vnd.software602.filler.form-xml-zip": { source: "iana" }, "application/vnd.solent.sdkm+xml": { source: "iana", compressible: true, extensions: ["sdkm", "sdkd"] }, "application/vnd.spotfire.dxp": { source: "iana", extensions: ["dxp"] }, "application/vnd.spotfire.sfs": { source: "iana", extensions: ["sfs"] }, "application/vnd.sqlite3": { source: "iana" }, "application/vnd.sss-cod": { source: "iana" }, "application/vnd.sss-dtf": { source: "iana" }, "application/vnd.sss-ntf": { source: "iana" }, "application/vnd.stardivision.calc": { source: "apache", extensions: ["sdc"] }, "application/vnd.stardivision.draw": { source: "apache", extensions: ["sda"] }, "application/vnd.stardivision.impress": { source: "apache", extensions: ["sdd"] }, "application/vnd.stardivision.math": { source: "apache", extensions: ["smf"] }, "application/vnd.stardivision.writer": { source: "apache", extensions: ["sdw", "vor"] }, "application/vnd.stardivision.writer-global": { source: "apache", extensions: ["sgl"] }, "application/vnd.stepmania.package": { source: "iana", extensions: ["smzip"] }, "application/vnd.stepmania.stepchart": { source: "iana", extensions: ["sm"] }, "application/vnd.street-stream": { source: "iana" }, "application/vnd.sun.wadl+xml": { source: "iana", compressible: true, extensions: ["wadl"] }, "application/vnd.sun.xml.calc": { source: "apache", extensions: ["sxc"] }, "application/vnd.sun.xml.calc.template": { source: "apache", extensions: ["stc"] }, "application/vnd.sun.xml.draw": { source: "apache", extensions: ["sxd"] }, "application/vnd.sun.xml.draw.template": { source: "apache", extensions: ["std"] }, "application/vnd.sun.xml.impress": { source: "apache", extensions: ["sxi"] }, "application/vnd.sun.xml.impress.template": { source: "apache", extensions: ["sti"] }, "application/vnd.sun.xml.math": { source: "apache", extensions: ["sxm"] }, "application/vnd.sun.xml.writer": { source: "apache", extensions: ["sxw"] }, "application/vnd.sun.xml.writer.global": { source: "apache", extensions: ["sxg"] }, "application/vnd.sun.xml.writer.template": { source: "apache", extensions: ["stw"] }, "application/vnd.sus-calendar": { source: "iana", extensions: ["sus", "susp"] }, "application/vnd.svd": { source: "iana", extensions: ["svd"] }, "application/vnd.swiftview-ics": { source: "iana" }, "application/vnd.sycle+xml": { source: "iana", compressible: true }, "application/vnd.syft+json": { source: "iana", compressible: true }, "application/vnd.symbian.install": { source: "apache", extensions: ["sis", "sisx"] }, "application/vnd.syncml+xml": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["xsm"] }, "application/vnd.syncml.dm+wbxml": { source: "iana", charset: "UTF-8", extensions: ["bdm"] }, "application/vnd.syncml.dm+xml": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["xdm"] }, "application/vnd.syncml.dm.notification": { source: "iana" }, "application/vnd.syncml.dmddf+wbxml": { source: "iana" }, "application/vnd.syncml.dmddf+xml": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["ddf"] }, "application/vnd.syncml.dmtnds+wbxml": { source: "iana" }, "application/vnd.syncml.dmtnds+xml": { source: "iana", charset: "UTF-8", compressible: true }, "application/vnd.syncml.ds.notification": { source: "iana" }, "application/vnd.tableschema+json": { source: "iana", compressible: true }, "application/vnd.tao.intent-module-archive": { source: "iana", extensions: ["tao"] }, "application/vnd.tcpdump.pcap": { source: "iana", extensions: ["pcap", "cap", "dmp"] }, "application/vnd.think-cell.ppttc+json": { source: "iana", compressible: true }, "application/vnd.tmd.mediaflex.api+xml": { source: "iana", compressible: true }, "application/vnd.tml": { source: "iana" }, "application/vnd.tmobile-livetv": { source: "iana", extensions: ["tmo"] }, "application/vnd.tri.onesource": { source: "iana" }, "application/vnd.trid.tpt": { source: "iana", extensions: ["tpt"] }, "application/vnd.triscape.mxs": { source: "iana", extensions: ["mxs"] }, "application/vnd.trueapp": { source: "iana", extensions: ["tra"] }, "application/vnd.truedoc": { source: "iana" }, "application/vnd.ubisoft.webplayer": { source: "iana" }, "application/vnd.ufdl": { source: "iana", extensions: ["ufd", "ufdl"] }, "application/vnd.uiq.theme": { source: "iana", extensions: ["utz"] }, "application/vnd.umajin": { source: "iana", extensions: ["umj"] }, "application/vnd.unity": { source: "iana", extensions: ["unityweb"] }, "application/vnd.uoml+xml": { source: "iana", compressible: true, extensions: ["uoml"] }, "application/vnd.uplanet.alert": { source: "iana" }, "application/vnd.uplanet.alert-wbxml": { source: "iana" }, "application/vnd.uplanet.bearer-choice": { source: "iana" }, "application/vnd.uplanet.bearer-choice-wbxml": { source: "iana" }, "application/vnd.uplanet.cacheop": { source: "iana" }, "application/vnd.uplanet.cacheop-wbxml": { source: "iana" }, "application/vnd.uplanet.channel": { source: "iana" }, "application/vnd.uplanet.channel-wbxml": { source: "iana" }, "application/vnd.uplanet.list": { source: "iana" }, "application/vnd.uplanet.list-wbxml": { source: "iana" }, "application/vnd.uplanet.listcmd": { source: "iana" }, "application/vnd.uplanet.listcmd-wbxml": { source: "iana" }, "application/vnd.uplanet.signal": { source: "iana" }, "application/vnd.uri-map": { source: "iana" }, "application/vnd.valve.source.material": { source: "iana" }, "application/vnd.vcx": { source: "iana", extensions: ["vcx"] }, "application/vnd.vd-study": { source: "iana" }, "application/vnd.vectorworks": { source: "iana" }, "application/vnd.vel+json": { source: "iana", compressible: true }, "application/vnd.verimatrix.vcas": { source: "iana" }, "application/vnd.veritone.aion+json": { source: "iana", compressible: true }, "application/vnd.veryant.thin": { source: "iana" }, "application/vnd.ves.encrypted": { source: "iana" }, "application/vnd.vidsoft.vidconference": { source: "iana" }, "application/vnd.visio": { source: "iana", extensions: ["vsd", "vst", "vss", "vsw"] }, "application/vnd.visionary": { source: "iana", extensions: ["vis"] }, "application/vnd.vividence.scriptfile": { source: "iana" }, "application/vnd.vsf": { source: "iana", extensions: ["vsf"] }, "application/vnd.wap.sic": { source: "iana" }, "application/vnd.wap.slc": { source: "iana" }, "application/vnd.wap.wbxml": { source: "iana", charset: "UTF-8", extensions: ["wbxml"] }, "application/vnd.wap.wmlc": { source: "iana", extensions: ["wmlc"] }, "application/vnd.wap.wmlscriptc": { source: "iana", extensions: ["wmlsc"] }, "application/vnd.webturbo": { source: "iana", extensions: ["wtb"] }, "application/vnd.wfa.dpp": { source: "iana" }, "application/vnd.wfa.p2p": { source: "iana" }, "application/vnd.wfa.wsc": { source: "iana" }, "application/vnd.windows.devicepairing": { source: "iana" }, "application/vnd.wmc": { source: "iana" }, "application/vnd.wmf.bootstrap": { source: "iana" }, "application/vnd.wolfram.mathematica": { source: "iana" }, "application/vnd.wolfram.mathematica.package": { source: "iana" }, "application/vnd.wolfram.player": { source: "iana", extensions: ["nbp"] }, "application/vnd.wordperfect": { source: "iana", extensions: ["wpd"] }, "application/vnd.wqd": { source: "iana", extensions: ["wqd"] }, "application/vnd.wrq-hp3000-labelled": { source: "iana" }, "application/vnd.wt.stf": { source: "iana", extensions: ["stf"] }, "application/vnd.wv.csp+wbxml": { source: "iana" }, "application/vnd.wv.csp+xml": { source: "iana", compressible: true }, "application/vnd.wv.ssp+xml": { source: "iana", compressible: true }, "application/vnd.xacml+json": { source: "iana", compressible: true }, "application/vnd.xara": { source: "iana", extensions: ["xar"] }, "application/vnd.xfdl": { source: "iana", extensions: ["xfdl"] }, "application/vnd.xfdl.webform": { source: "iana" }, "application/vnd.xmi+xml": { source: "iana", compressible: true }, "application/vnd.xmpie.cpkg": { source: "iana" }, "application/vnd.xmpie.dpkg": { source: "iana" }, "application/vnd.xmpie.plan": { source: "iana" }, "application/vnd.xmpie.ppkg": { source: "iana" }, "application/vnd.xmpie.xlim": { source: "iana" }, "application/vnd.yamaha.hv-dic": { source: "iana", extensions: ["hvd"] }, "application/vnd.yamaha.hv-script": { source: "iana", extensions: ["hvs"] }, "application/vnd.yamaha.hv-voice": { source: "iana", extensions: ["hvp"] }, "application/vnd.yamaha.openscoreformat": { source: "iana", extensions: ["osf"] }, "application/vnd.yamaha.openscoreformat.osfpvg+xml": { source: "iana", compressible: true, extensions: ["osfpvg"] }, "application/vnd.yamaha.remote-setup": { source: "iana" }, "application/vnd.yamaha.smaf-audio": { source: "iana", extensions: ["saf"] }, "application/vnd.yamaha.smaf-phrase": { source: "iana", extensions: ["spf"] }, "application/vnd.yamaha.through-ngn": { source: "iana" }, "application/vnd.yamaha.tunnel-udpencap": { source: "iana" }, "application/vnd.yaoweme": { source: "iana" }, "application/vnd.yellowriver-custom-menu": { source: "iana", extensions: ["cmp"] }, "application/vnd.youtube.yt": { source: "iana" }, "application/vnd.zul": { source: "iana", extensions: ["zir", "zirz"] }, "application/vnd.zzazz.deck+xml": { source: "iana", compressible: true, extensions: ["zaz"] }, "application/voicexml+xml": { source: "iana", compressible: true, extensions: ["vxml"] }, "application/voucher-cms+json": { source: "iana", compressible: true }, "application/vq-rtcpxr": { source: "iana" }, "application/wasm": { source: "iana", compressible: true, extensions: ["wasm"] }, "application/watcherinfo+xml": { source: "iana", compressible: true, extensions: ["wif"] }, "application/webpush-options+json": { source: "iana", compressible: true }, "application/whoispp-query": { source: "iana" }, "application/whoispp-response": { source: "iana" }, "application/widget": { source: "iana", extensions: ["wgt"] }, "application/winhlp": { source: "apache", extensions: ["hlp"] }, "application/wita": { source: "iana" }, "application/wordperfect5.1": { source: "iana" }, "application/wsdl+xml": { source: "iana", compressible: true, extensions: ["wsdl"] }, "application/wspolicy+xml": { source: "iana", compressible: true, extensions: ["wspolicy"] }, "application/x-7z-compressed": { source: "apache", compressible: false, extensions: ["7z"] }, "application/x-abiword": { source: "apache", extensions: ["abw"] }, "application/x-ace-compressed": { source: "apache", extensions: ["ace"] }, "application/x-amf": { source: "apache" }, "application/x-apple-diskimage": { source: "apache", extensions: ["dmg"] }, "application/x-arj": { compressible: false, extensions: ["arj"] }, "application/x-authorware-bin": { source: "apache", extensions: ["aab", "x32", "u32", "vox"] }, "application/x-authorware-map": { source: "apache", extensions: ["aam"] }, "application/x-authorware-seg": { source: "apache", extensions: ["aas"] }, "application/x-bcpio": { source: "apache", extensions: ["bcpio"] }, "application/x-bdoc": { compressible: false, extensions: ["bdoc"] }, "application/x-bittorrent": { source: "apache", extensions: ["torrent"] }, "application/x-blorb": { source: "apache", extensions: ["blb", "blorb"] }, "application/x-bzip": { source: "apache", compressible: false, extensions: ["bz"] }, "application/x-bzip2": { source: "apache", compressible: false, extensions: ["bz2", "boz"] }, "application/x-cbr": { source: "apache", extensions: ["cbr", "cba", "cbt", "cbz", "cb7"] }, "application/x-cdlink": { source: "apache", extensions: ["vcd"] }, "application/x-cfs-compressed": { source: "apache", extensions: ["cfs"] }, "application/x-chat": { source: "apache", extensions: ["chat"] }, "application/x-chess-pgn": { source: "apache", extensions: ["pgn"] }, "application/x-chrome-extension": { extensions: ["crx"] }, "application/x-cocoa": { source: "nginx", extensions: ["cco"] }, "application/x-compress": { source: "apache" }, "application/x-conference": { source: "apache", extensions: ["nsc"] }, "application/x-cpio": { source: "apache", extensions: ["cpio"] }, "application/x-csh": { source: "apache", extensions: ["csh"] }, "application/x-deb": { compressible: false }, "application/x-debian-package": { source: "apache", extensions: ["deb", "udeb"] }, "application/x-dgc-compressed": { source: "apache", extensions: ["dgc"] }, "application/x-director": { source: "apache", extensions: ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"] }, "application/x-doom": { source: "apache", extensions: ["wad"] }, "application/x-dtbncx+xml": { source: "apache", compressible: true, extensions: ["ncx"] }, "application/x-dtbook+xml": { source: "apache", compressible: true, extensions: ["dtb"] }, "application/x-dtbresource+xml": { source: "apache", compressible: true, extensions: ["res"] }, "application/x-dvi": { source: "apache", compressible: false, extensions: ["dvi"] }, "application/x-envoy": { source: "apache", extensions: ["evy"] }, "application/x-eva": { source: "apache", extensions: ["eva"] }, "application/x-font-bdf": { source: "apache", extensions: ["bdf"] }, "application/x-font-dos": { source: "apache" }, "application/x-font-framemaker": { source: "apache" }, "application/x-font-ghostscript": { source: "apache", extensions: ["gsf"] }, "application/x-font-libgrx": { source: "apache" }, "application/x-font-linux-psf": { source: "apache", extensions: ["psf"] }, "application/x-font-pcf": { source: "apache", extensions: ["pcf"] }, "application/x-font-snf": { source: "apache", extensions: ["snf"] }, "application/x-font-speedo": { source: "apache" }, "application/x-font-sunos-news": { source: "apache" }, "application/x-font-type1": { source: "apache", extensions: ["pfa", "pfb", "pfm", "afm"] }, "application/x-font-vfont": { source: "apache" }, "application/x-freearc": { source: "apache", extensions: ["arc"] }, "application/x-futuresplash": { source: "apache", extensions: ["spl"] }, "application/x-gca-compressed": { source: "apache", extensions: ["gca"] }, "application/x-glulx": { source: "apache", extensions: ["ulx"] }, "application/x-gnumeric": { source: "apache", extensions: ["gnumeric"] }, "application/x-gramps-xml": { source: "apache", extensions: ["gramps"] }, "application/x-gtar": { source: "apache", extensions: ["gtar"] }, "application/x-gzip": { source: "apache" }, "application/x-hdf": { source: "apache", extensions: ["hdf"] }, "application/x-httpd-php": { compressible: true, extensions: ["php"] }, "application/x-install-instructions": { source: "apache", extensions: ["install"] }, "application/x-iso9660-image": { source: "apache", extensions: ["iso"] }, "application/x-iwork-keynote-sffkey": { extensions: ["key"] }, "application/x-iwork-numbers-sffnumbers": { extensions: ["numbers"] }, "application/x-iwork-pages-sffpages": { extensions: ["pages"] }, "application/x-java-archive-diff": { source: "nginx", extensions: ["jardiff"] }, "application/x-java-jnlp-file": { source: "apache", compressible: false, extensions: ["jnlp"] }, "application/x-javascript": { compressible: true }, "application/x-keepass2": { extensions: ["kdbx"] }, "application/x-latex": { source: "apache", compressible: false, extensions: ["latex"] }, "application/x-lua-bytecode": { extensions: ["luac"] }, "application/x-lzh-compressed": { source: "apache", extensions: ["lzh", "lha"] }, "application/x-makeself": { source: "nginx", extensions: ["run"] }, "application/x-mie": { source: "apache", extensions: ["mie"] }, "application/x-mobipocket-ebook": { source: "apache", extensions: ["prc", "mobi"] }, "application/x-mpegurl": { compressible: false }, "application/x-ms-application": { source: "apache", extensions: ["application"] }, "application/x-ms-shortcut": { source: "apache", extensions: ["lnk"] }, "application/x-ms-wmd": { source: "apache", extensions: ["wmd"] }, "application/x-ms-wmz": { source: "apache", extensions: ["wmz"] }, "application/x-ms-xbap": { source: "apache", extensions: ["xbap"] }, "application/x-msaccess": { source: "apache", extensions: ["mdb"] }, "application/x-msbinder": { source: "apache", extensions: ["obd"] }, "application/x-mscardfile": { source: "apache", extensions: ["crd"] }, "application/x-msclip": { source: "apache", extensions: ["clp"] }, "application/x-msdos-program": { extensions: ["exe"] }, "application/x-msdownload": { source: "apache", extensions: ["exe", "dll", "com", "bat", "msi"] }, "application/x-msmediaview": { source: "apache", extensions: ["mvb", "m13", "m14"] }, "application/x-msmetafile": { source: "apache", extensions: ["wmf", "wmz", "emf", "emz"] }, "application/x-msmoney": { source: "apache", extensions: ["mny"] }, "application/x-mspublisher": { source: "apache", extensions: ["pub"] }, "application/x-msschedule": { source: "apache", extensions: ["scd"] }, "application/x-msterminal": { source: "apache", extensions: ["trm"] }, "application/x-mswrite": { source: "apache", extensions: ["wri"] }, "application/x-netcdf": { source: "apache", extensions: ["nc", "cdf"] }, "application/x-ns-proxy-autoconfig": { compressible: true, extensions: ["pac"] }, "application/x-nzb": { source: "apache", extensions: ["nzb"] }, "application/x-perl": { source: "nginx", extensions: ["pl", "pm"] }, "application/x-pilot": { source: "nginx", extensions: ["prc", "pdb"] }, "application/x-pkcs12": { source: "apache", compressible: false, extensions: ["p12", "pfx"] }, "application/x-pkcs7-certificates": { source: "apache", extensions: ["p7b", "spc"] }, "application/x-pkcs7-certreqresp": { source: "apache", extensions: ["p7r"] }, "application/x-pki-message": { source: "iana" }, "application/x-rar-compressed": { source: "apache", compressible: false, extensions: ["rar"] }, "application/x-redhat-package-manager": { source: "nginx", extensions: ["rpm"] }, "application/x-research-info-systems": { source: "apache", extensions: ["ris"] }, "application/x-sea": { source: "nginx", extensions: ["sea"] }, "application/x-sh": { source: "apache", compressible: true, extensions: ["sh"] }, "application/x-shar": { source: "apache", extensions: ["shar"] }, "application/x-shockwave-flash": { source: "apache", compressible: false, extensions: ["swf"] }, "application/x-silverlight-app": { source: "apache", extensions: ["xap"] }, "application/x-sql": { source: "apache", extensions: ["sql"] }, "application/x-stuffit": { source: "apache", compressible: false, extensions: ["sit"] }, "application/x-stuffitx": { source: "apache", extensions: ["sitx"] }, "application/x-subrip": { source: "apache", extensions: ["srt"] }, "application/x-sv4cpio": { source: "apache", extensions: ["sv4cpio"] }, "application/x-sv4crc": { source: "apache", extensions: ["sv4crc"] }, "application/x-t3vm-image": { source: "apache", extensions: ["t3"] }, "application/x-tads": { source: "apache", extensions: ["gam"] }, "application/x-tar": { source: "apache", compressible: true, extensions: ["tar"] }, "application/x-tcl": { source: "apache", extensions: ["tcl", "tk"] }, "application/x-tex": { source: "apache", extensions: ["tex"] }, "application/x-tex-tfm": { source: "apache", extensions: ["tfm"] }, "application/x-texinfo": { source: "apache", extensions: ["texinfo", "texi"] }, "application/x-tgif": { source: "apache", extensions: ["obj"] }, "application/x-ustar": { source: "apache", extensions: ["ustar"] }, "application/x-virtualbox-hdd": { compressible: true, extensions: ["hdd"] }, "application/x-virtualbox-ova": { compressible: true, extensions: ["ova"] }, "application/x-virtualbox-ovf": { compressible: true, extensions: ["ovf"] }, "application/x-virtualbox-vbox": { compressible: true, extensions: ["vbox"] }, "application/x-virtualbox-vbox-extpack": { compressible: false, extensions: ["vbox-extpack"] }, "application/x-virtualbox-vdi": { compressible: true, extensions: ["vdi"] }, "application/x-virtualbox-vhd": { compressible: true, extensions: ["vhd"] }, "application/x-virtualbox-vmdk": { compressible: true, extensions: ["vmdk"] }, "application/x-wais-source": { source: "apache", extensions: ["src"] }, "application/x-web-app-manifest+json": { compressible: true, extensions: ["webapp"] }, "application/x-www-form-urlencoded": { source: "iana", compressible: true }, "application/x-x509-ca-cert": { source: "iana", extensions: ["der", "crt", "pem"] }, "application/x-x509-ca-ra-cert": { source: "iana" }, "application/x-x509-next-ca-cert": { source: "iana" }, "application/x-xfig": { source: "apache", extensions: ["fig"] }, "application/x-xliff+xml": { source: "apache", compressible: true, extensions: ["xlf"] }, "application/x-xpinstall": { source: "apache", compressible: false, extensions: ["xpi"] }, "application/x-xz": { source: "apache", extensions: ["xz"] }, "application/x-zmachine": { source: "apache", extensions: ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"] }, "application/x400-bp": { source: "iana" }, "application/xacml+xml": { source: "iana", compressible: true }, "application/xaml+xml": { source: "apache", compressible: true, extensions: ["xaml"] }, "application/xcap-att+xml": { source: "iana", compressible: true, extensions: ["xav"] }, "application/xcap-caps+xml": { source: "iana", compressible: true, extensions: ["xca"] }, "application/xcap-diff+xml": { source: "iana", compressible: true, extensions: ["xdf"] }, "application/xcap-el+xml": { source: "iana", compressible: true, extensions: ["xel"] }, "application/xcap-error+xml": { source: "iana", compressible: true }, "application/xcap-ns+xml": { source: "iana", compressible: true, extensions: ["xns"] }, "application/xcon-conference-info+xml": { source: "iana", compressible: true }, "application/xcon-conference-info-diff+xml": { source: "iana", compressible: true }, "application/xenc+xml": { source: "iana", compressible: true, extensions: ["xenc"] }, "application/xhtml+xml": { source: "iana", compressible: true, extensions: ["xhtml", "xht"] }, "application/xhtml-voice+xml": { source: "apache", compressible: true }, "application/xliff+xml": { source: "iana", compressible: true, extensions: ["xlf"] }, "application/xml": { source: "iana", compressible: true, extensions: ["xml", "xsl", "xsd", "rng"] }, "application/xml-dtd": { source: "iana", compressible: true, extensions: ["dtd"] }, "application/xml-external-parsed-entity": { source: "iana" }, "application/xml-patch+xml": { source: "iana", compressible: true }, "application/xmpp+xml": { source: "iana", compressible: true }, "application/xop+xml": { source: "iana", compressible: true, extensions: ["xop"] }, "application/xproc+xml": { source: "apache", compressible: true, extensions: ["xpl"] }, "application/xslt+xml": { source: "iana", compressible: true, extensions: ["xsl", "xslt"] }, "application/xspf+xml": { source: "apache", compressible: true, extensions: ["xspf"] }, "application/xv+xml": { source: "iana", compressible: true, extensions: ["mxml", "xhvml", "xvml", "xvm"] }, "application/yang": { source: "iana", extensions: ["yang"] }, "application/yang-data+json": { source: "iana", compressible: true }, "application/yang-data+xml": { source: "iana", compressible: true }, "application/yang-patch+json": { source: "iana", compressible: true }, "application/yang-patch+xml": { source: "iana", compressible: true }, "application/yin+xml": { source: "iana", compressible: true, extensions: ["yin"] }, "application/zip": { source: "iana", compressible: false, extensions: ["zip"] }, "application/zlib": { source: "iana" }, "application/zstd": { source: "iana" }, "audio/1d-interleaved-parityfec": { source: "iana" }, "audio/32kadpcm": { source: "iana" }, "audio/3gpp": { source: "iana", compressible: false, extensions: ["3gpp"] }, "audio/3gpp2": { source: "iana" }, "audio/aac": { source: "iana" }, "audio/ac3": { source: "iana" }, "audio/adpcm": { source: "apache", extensions: ["adp"] }, "audio/amr": { source: "iana", extensions: ["amr"] }, "audio/amr-wb": { source: "iana" }, "audio/amr-wb+": { source: "iana" }, "audio/aptx": { source: "iana" }, "audio/asc": { source: "iana" }, "audio/atrac-advanced-lossless": { source: "iana" }, "audio/atrac-x": { source: "iana" }, "audio/atrac3": { source: "iana" }, "audio/basic": { source: "iana", compressible: false, extensions: ["au", "snd"] }, "audio/bv16": { source: "iana" }, "audio/bv32": { source: "iana" }, "audio/clearmode": { source: "iana" }, "audio/cn": { source: "iana" }, "audio/dat12": { source: "iana" }, "audio/dls": { source: "iana" }, "audio/dsr-es201108": { source: "iana" }, "audio/dsr-es202050": { source: "iana" }, "audio/dsr-es202211": { source: "iana" }, "audio/dsr-es202212": { source: "iana" }, "audio/dv": { source: "iana" }, "audio/dvi4": { source: "iana" }, "audio/eac3": { source: "iana" }, "audio/encaprtp": { source: "iana" }, "audio/evrc": { source: "iana" }, "audio/evrc-qcp": { source: "iana" }, "audio/evrc0": { source: "iana" }, "audio/evrc1": { source: "iana" }, "audio/evrcb": { source: "iana" }, "audio/evrcb0": { source: "iana" }, "audio/evrcb1": { source: "iana" }, "audio/evrcnw": { source: "iana" }, "audio/evrcnw0": { source: "iana" }, "audio/evrcnw1": { source: "iana" }, "audio/evrcwb": { source: "iana" }, "audio/evrcwb0": { source: "iana" }, "audio/evrcwb1": { source: "iana" }, "audio/evs": { source: "iana" }, "audio/flexfec": { source: "iana" }, "audio/fwdred": { source: "iana" }, "audio/g711-0": { source: "iana" }, "audio/g719": { source: "iana" }, "audio/g722": { source: "iana" }, "audio/g7221": { source: "iana" }, "audio/g723": { source: "iana" }, "audio/g726-16": { source: "iana" }, "audio/g726-24": { source: "iana" }, "audio/g726-32": { source: "iana" }, "audio/g726-40": { source: "iana" }, "audio/g728": { source: "iana" }, "audio/g729": { source: "iana" }, "audio/g7291": { source: "iana" }, "audio/g729d": { source: "iana" }, "audio/g729e": { source: "iana" }, "audio/gsm": { source: "iana" }, "audio/gsm-efr": { source: "iana" }, "audio/gsm-hr-08": { source: "iana" }, "audio/ilbc": { source: "iana" }, "audio/ip-mr_v2.5": { source: "iana" }, "audio/isac": { source: "apache" }, "audio/l16": { source: "iana" }, "audio/l20": { source: "iana" }, "audio/l24": { source: "iana", compressible: false }, "audio/l8": { source: "iana" }, "audio/lpc": { source: "iana" }, "audio/melp": { source: "iana" }, "audio/melp1200": { source: "iana" }, "audio/melp2400": { source: "iana" }, "audio/melp600": { source: "iana" }, "audio/mhas": { source: "iana" }, "audio/midi": { source: "apache", extensions: ["mid", "midi", "kar", "rmi"] }, "audio/mobile-xmf": { source: "iana", extensions: ["mxmf"] }, "audio/mp3": { compressible: false, extensions: ["mp3"] }, "audio/mp4": { source: "iana", compressible: false, extensions: ["m4a", "mp4a"] }, "audio/mp4a-latm": { source: "iana" }, "audio/mpa": { source: "iana" }, "audio/mpa-robust": { source: "iana" }, "audio/mpeg": { source: "iana", compressible: false, extensions: ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"] }, "audio/mpeg4-generic": { source: "iana" }, "audio/musepack": { source: "apache" }, "audio/ogg": { source: "iana", compressible: false, extensions: ["oga", "ogg", "spx", "opus"] }, "audio/opus": { source: "iana" }, "audio/parityfec": { source: "iana" }, "audio/pcma": { source: "iana" }, "audio/pcma-wb": { source: "iana" }, "audio/pcmu": { source: "iana" }, "audio/pcmu-wb": { source: "iana" }, "audio/prs.sid": { source: "iana" }, "audio/qcelp": { source: "iana" }, "audio/raptorfec": { source: "iana" }, "audio/red": { source: "iana" }, "audio/rtp-enc-aescm128": { source: "iana" }, "audio/rtp-midi": { source: "iana" }, "audio/rtploopback": { source: "iana" }, "audio/rtx": { source: "iana" }, "audio/s3m": { source: "apache", extensions: ["s3m"] }, "audio/scip": { source: "iana" }, "audio/silk": { source: "apache", extensions: ["sil"] }, "audio/smv": { source: "iana" }, "audio/smv-qcp": { source: "iana" }, "audio/smv0": { source: "iana" }, "audio/sofa": { source: "iana" }, "audio/sp-midi": { source: "iana" }, "audio/speex": { source: "iana" }, "audio/t140c": { source: "iana" }, "audio/t38": { source: "iana" }, "audio/telephone-event": { source: "iana" }, "audio/tetra_acelp": { source: "iana" }, "audio/tetra_acelp_bb": { source: "iana" }, "audio/tone": { source: "iana" }, "audio/tsvcis": { source: "iana" }, "audio/uemclip": { source: "iana" }, "audio/ulpfec": { source: "iana" }, "audio/usac": { source: "iana" }, "audio/vdvi": { source: "iana" }, "audio/vmr-wb": { source: "iana" }, "audio/vnd.3gpp.iufp": { source: "iana" }, "audio/vnd.4sb": { source: "iana" }, "audio/vnd.audiokoz": { source: "iana" }, "audio/vnd.celp": { source: "iana" }, "audio/vnd.cisco.nse": { source: "iana" }, "audio/vnd.cmles.radio-events": { source: "iana" }, "audio/vnd.cns.anp1": { source: "iana" }, "audio/vnd.cns.inf1": { source: "iana" }, "audio/vnd.dece.audio": { source: "iana", extensions: ["uva", "uvva"] }, "audio/vnd.digital-winds": { source: "iana", extensions: ["eol"] }, "audio/vnd.dlna.adts": { source: "iana" }, "audio/vnd.dolby.heaac.1": { source: "iana" }, "audio/vnd.dolby.heaac.2": { source: "iana" }, "audio/vnd.dolby.mlp": { source: "iana" }, "audio/vnd.dolby.mps": { source: "iana" }, "audio/vnd.dolby.pl2": { source: "iana" }, "audio/vnd.dolby.pl2x": { source: "iana" }, "audio/vnd.dolby.pl2z": { source: "iana" }, "audio/vnd.dolby.pulse.1": { source: "iana" }, "audio/vnd.dra": { source: "iana", extensions: ["dra"] }, "audio/vnd.dts": { source: "iana", extensions: ["dts"] }, "audio/vnd.dts.hd": { source: "iana", extensions: ["dtshd"] }, "audio/vnd.dts.uhd": { source: "iana" }, "audio/vnd.dvb.file": { source: "iana" }, "audio/vnd.everad.plj": { source: "iana" }, "audio/vnd.hns.audio": { source: "iana" }, "audio/vnd.lucent.voice": { source: "iana", extensions: ["lvp"] }, "audio/vnd.ms-playready.media.pya": { source: "iana", extensions: ["pya"] }, "audio/vnd.nokia.mobile-xmf": { source: "iana" }, "audio/vnd.nortel.vbk": { source: "iana" }, "audio/vnd.nuera.ecelp4800": { source: "iana", extensions: ["ecelp4800"] }, "audio/vnd.nuera.ecelp7470": { source: "iana", extensions: ["ecelp7470"] }, "audio/vnd.nuera.ecelp9600": { source: "iana", extensions: ["ecelp9600"] }, "audio/vnd.octel.sbc": { source: "iana" }, "audio/vnd.presonus.multitrack": { source: "iana" }, "audio/vnd.qcelp": { source: "iana" }, "audio/vnd.rhetorex.32kadpcm": { source: "iana" }, "audio/vnd.rip": { source: "iana", extensions: ["rip"] }, "audio/vnd.rn-realaudio": { compressible: false }, "audio/vnd.sealedmedia.softseal.mpeg": { source: "iana" }, "audio/vnd.vmx.cvsd": { source: "iana" }, "audio/vnd.wave": { compressible: false }, "audio/vorbis": { source: "iana", compressible: false }, "audio/vorbis-config": { source: "iana" }, "audio/wav": { compressible: false, extensions: ["wav"] }, "audio/wave": { compressible: false, extensions: ["wav"] }, "audio/webm": { source: "apache", compressible: false, extensions: ["weba"] }, "audio/x-aac": { source: "apache", compressible: false, extensions: ["aac"] }, "audio/x-aiff": { source: "apache", extensions: ["aif", "aiff", "aifc"] }, "audio/x-caf": { source: "apache", compressible: false, extensions: ["caf"] }, "audio/x-flac": { source: "apache", extensions: ["flac"] }, "audio/x-m4a": { source: "nginx", extensions: ["m4a"] }, "audio/x-matroska": { source: "apache", extensions: ["mka"] }, "audio/x-mpegurl": { source: "apache", extensions: ["m3u"] }, "audio/x-ms-wax": { source: "apache", extensions: ["wax"] }, "audio/x-ms-wma": { source: "apache", extensions: ["wma"] }, "audio/x-pn-realaudio": { source: "apache", extensions: ["ram", "ra"] }, "audio/x-pn-realaudio-plugin": { source: "apache", extensions: ["rmp"] }, "audio/x-realaudio": { source: "nginx", extensions: ["ra"] }, "audio/x-tta": { source: "apache" }, "audio/x-wav": { source: "apache", extensions: ["wav"] }, "audio/xm": { source: "apache", extensions: ["xm"] }, "chemical/x-cdx": { source: "apache", extensions: ["cdx"] }, "chemical/x-cif": { source: "apache", extensions: ["cif"] }, "chemical/x-cmdf": { source: "apache", extensions: ["cmdf"] }, "chemical/x-cml": { source: "apache", extensions: ["cml"] }, "chemical/x-csml": { source: "apache", extensions: ["csml"] }, "chemical/x-pdb": { source: "apache" }, "chemical/x-xyz": { source: "apache", extensions: ["xyz"] }, "font/collection": { source: "iana", extensions: ["ttc"] }, "font/otf": { source: "iana", compressible: true, extensions: ["otf"] }, "font/sfnt": { source: "iana" }, "font/ttf": { source: "iana", compressible: true, extensions: ["ttf"] }, "font/woff": { source: "iana", extensions: ["woff"] }, "font/woff2": { source: "iana", extensions: ["woff2"] }, "image/aces": { source: "iana", extensions: ["exr"] }, "image/apng": { compressible: false, extensions: ["apng"] }, "image/avci": { source: "iana", extensions: ["avci"] }, "image/avcs": { source: "iana", extensions: ["avcs"] }, "image/avif": { source: "iana", compressible: false, extensions: ["avif"] }, "image/bmp": { source: "iana", compressible: true, extensions: ["bmp"] }, "image/cgm": { source: "iana", extensions: ["cgm"] }, "image/dicom-rle": { source: "iana", extensions: ["drle"] }, "image/emf": { source: "iana", extensions: ["emf"] }, "image/fits": { source: "iana", extensions: ["fits"] }, "image/g3fax": { source: "iana", extensions: ["g3"] }, "image/gif": { source: "iana", compressible: false, extensions: ["gif"] }, "image/heic": { source: "iana", extensions: ["heic"] }, "image/heic-sequence": { source: "iana", extensions: ["heics"] }, "image/heif": { source: "iana", extensions: ["heif"] }, "image/heif-sequence": { source: "iana", extensions: ["heifs"] }, "image/hej2k": { source: "iana", extensions: ["hej2"] }, "image/hsj2": { source: "iana", extensions: ["hsj2"] }, "image/ief": { source: "iana", extensions: ["ief"] }, "image/jls": { source: "iana", extensions: ["jls"] }, "image/jp2": { source: "iana", compressible: false, extensions: ["jp2", "jpg2"] }, "image/jpeg": { source: "iana", compressible: false, extensions: ["jpeg", "jpg", "jpe"] }, "image/jph": { source: "iana", extensions: ["jph"] }, "image/jphc": { source: "iana", extensions: ["jhc"] }, "image/jpm": { source: "iana", compressible: false, extensions: ["jpm"] }, "image/jpx": { source: "iana", compressible: false, extensions: ["jpx", "jpf"] }, "image/jxr": { source: "iana", extensions: ["jxr"] }, "image/jxra": { source: "iana", extensions: ["jxra"] }, "image/jxrs": { source: "iana", extensions: ["jxrs"] }, "image/jxs": { source: "iana", extensions: ["jxs"] }, "image/jxsc": { source: "iana", extensions: ["jxsc"] }, "image/jxsi": { source: "iana", extensions: ["jxsi"] }, "image/jxss": { source: "iana", extensions: ["jxss"] }, "image/ktx": { source: "iana", extensions: ["ktx"] }, "image/ktx2": { source: "iana", extensions: ["ktx2"] }, "image/naplps": { source: "iana" }, "image/pjpeg": { compressible: false }, "image/png": { source: "iana", compressible: false, extensions: ["png"] }, "image/prs.btif": { source: "iana", extensions: ["btif"] }, "image/prs.pti": { source: "iana", extensions: ["pti"] }, "image/pwg-raster": { source: "iana" }, "image/sgi": { source: "apache", extensions: ["sgi"] }, "image/svg+xml": { source: "iana", compressible: true, extensions: ["svg", "svgz"] }, "image/t38": { source: "iana", extensions: ["t38"] }, "image/tiff": { source: "iana", compressible: false, extensions: ["tif", "tiff"] }, "image/tiff-fx": { source: "iana", extensions: ["tfx"] }, "image/vnd.adobe.photoshop": { source: "iana", compressible: true, extensions: ["psd"] }, "image/vnd.airzip.accelerator.azv": { source: "iana", extensions: ["azv"] }, "image/vnd.cns.inf2": { source: "iana" }, "image/vnd.dece.graphic": { source: "iana", extensions: ["uvi", "uvvi", "uvg", "uvvg"] }, "image/vnd.djvu": { source: "iana", extensions: ["djvu", "djv"] }, "image/vnd.dvb.subtitle": { source: "iana", extensions: ["sub"] }, "image/vnd.dwg": { source: "iana", extensions: ["dwg"] }, "image/vnd.dxf": { source: "iana", extensions: ["dxf"] }, "image/vnd.fastbidsheet": { source: "iana", extensions: ["fbs"] }, "image/vnd.fpx": { source: "iana", extensions: ["fpx"] }, "image/vnd.fst": { source: "iana", extensions: ["fst"] }, "image/vnd.fujixerox.edmics-mmr": { source: "iana", extensions: ["mmr"] }, "image/vnd.fujixerox.edmics-rlc": { source: "iana", extensions: ["rlc"] }, "image/vnd.globalgraphics.pgb": { source: "iana" }, "image/vnd.microsoft.icon": { source: "iana", compressible: true, extensions: ["ico"] }, "image/vnd.mix": { source: "iana" }, "image/vnd.mozilla.apng": { source: "iana" }, "image/vnd.ms-dds": { compressible: true, extensions: ["dds"] }, "image/vnd.ms-modi": { source: "iana", extensions: ["mdi"] }, "image/vnd.ms-photo": { source: "apache", extensions: ["wdp"] }, "image/vnd.net-fpx": { source: "iana", extensions: ["npx"] }, "image/vnd.pco.b16": { source: "iana", extensions: ["b16"] }, "image/vnd.radiance": { source: "iana" }, "image/vnd.sealed.png": { source: "iana" }, "image/vnd.sealedmedia.softseal.gif": { source: "iana" }, "image/vnd.sealedmedia.softseal.jpg": { source: "iana" }, "image/vnd.svf": { source: "iana" }, "image/vnd.tencent.tap": { source: "iana", extensions: ["tap"] }, "image/vnd.valve.source.texture": { source: "iana", extensions: ["vtf"] }, "image/vnd.wap.wbmp": { source: "iana", extensions: ["wbmp"] }, "image/vnd.xiff": { source: "iana", extensions: ["xif"] }, "image/vnd.zbrush.pcx": { source: "iana", extensions: ["pcx"] }, "image/webp": { source: "apache", extensions: ["webp"] }, "image/wmf": { source: "iana", extensions: ["wmf"] }, "image/x-3ds": { source: "apache", extensions: ["3ds"] }, "image/x-cmu-raster": { source: "apache", extensions: ["ras"] }, "image/x-cmx": { source: "apache", extensions: ["cmx"] }, "image/x-freehand": { source: "apache", extensions: ["fh", "fhc", "fh4", "fh5", "fh7"] }, "image/x-icon": { source: "apache", compressible: true, extensions: ["ico"] }, "image/x-jng": { source: "nginx", extensions: ["jng"] }, "image/x-mrsid-image": { source: "apache", extensions: ["sid"] }, "image/x-ms-bmp": { source: "nginx", compressible: true, extensions: ["bmp"] }, "image/x-pcx": { source: "apache", extensions: ["pcx"] }, "image/x-pict": { source: "apache", extensions: ["pic", "pct"] }, "image/x-portable-anymap": { source: "apache", extensions: ["pnm"] }, "image/x-portable-bitmap": { source: "apache", extensions: ["pbm"] }, "image/x-portable-graymap": { source: "apache", extensions: ["pgm"] }, "image/x-portable-pixmap": { source: "apache", extensions: ["ppm"] }, "image/x-rgb": { source: "apache", extensions: ["rgb"] }, "image/x-tga": { source: "apache", extensions: ["tga"] }, "image/x-xbitmap": { source: "apache", extensions: ["xbm"] }, "image/x-xcf": { compressible: false }, "image/x-xpixmap": { source: "apache", extensions: ["xpm"] }, "image/x-xwindowdump": { source: "apache", extensions: ["xwd"] }, "message/cpim": { source: "iana" }, "message/delivery-status": { source: "iana" }, "message/disposition-notification": { source: "iana", extensions: [ "disposition-notification" ] }, "message/external-body": { source: "iana" }, "message/feedback-report": { source: "iana" }, "message/global": { source: "iana", extensions: ["u8msg"] }, "message/global-delivery-status": { source: "iana", extensions: ["u8dsn"] }, "message/global-disposition-notification": { source: "iana", extensions: ["u8mdn"] }, "message/global-headers": { source: "iana", extensions: ["u8hdr"] }, "message/http": { source: "iana", compressible: false }, "message/imdn+xml": { source: "iana", compressible: true }, "message/news": { source: "iana" }, "message/partial": { source: "iana", compressible: false }, "message/rfc822": { source: "iana", compressible: true, extensions: ["eml", "mime"] }, "message/s-http": { source: "iana" }, "message/sip": { source: "iana" }, "message/sipfrag": { source: "iana" }, "message/tracking-status": { source: "iana" }, "message/vnd.si.simp": { source: "iana" }, "message/vnd.wfa.wsc": { source: "iana", extensions: ["wsc"] }, "model/3mf": { source: "iana", extensions: ["3mf"] }, "model/e57": { source: "iana" }, "model/gltf+json": { source: "iana", compressible: true, extensions: ["gltf"] }, "model/gltf-binary": { source: "iana", compressible: true, extensions: ["glb"] }, "model/iges": { source: "iana", compressible: false, extensions: ["igs", "iges"] }, "model/mesh": { source: "iana", compressible: false, extensions: ["msh", "mesh", "silo"] }, "model/mtl": { source: "iana", extensions: ["mtl"] }, "model/obj": { source: "iana", extensions: ["obj"] }, "model/step": { source: "iana" }, "model/step+xml": { source: "iana", compressible: true, extensions: ["stpx"] }, "model/step+zip": { source: "iana", compressible: false, extensions: ["stpz"] }, "model/step-xml+zip": { source: "iana", compressible: false, extensions: ["stpxz"] }, "model/stl": { source: "iana", extensions: ["stl"] }, "model/vnd.collada+xml": { source: "iana", compressible: true, extensions: ["dae"] }, "model/vnd.dwf": { source: "iana", extensions: ["dwf"] }, "model/vnd.flatland.3dml": { source: "iana" }, "model/vnd.gdl": { source: "iana", extensions: ["gdl"] }, "model/vnd.gs-gdl": { source: "apache" }, "model/vnd.gs.gdl": { source: "iana" }, "model/vnd.gtw": { source: "iana", extensions: ["gtw"] }, "model/vnd.moml+xml": { source: "iana", compressible: true }, "model/vnd.mts": { source: "iana", extensions: ["mts"] }, "model/vnd.opengex": { source: "iana", extensions: ["ogex"] }, "model/vnd.parasolid.transmit.binary": { source: "iana", extensions: ["x_b"] }, "model/vnd.parasolid.transmit.text": { source: "iana", extensions: ["x_t"] }, "model/vnd.pytha.pyox": { source: "iana" }, "model/vnd.rosette.annotated-data-model": { source: "iana" }, "model/vnd.sap.vds": { source: "iana", extensions: ["vds"] }, "model/vnd.usdz+zip": { source: "iana", compressible: false, extensions: ["usdz"] }, "model/vnd.valve.source.compiled-map": { source: "iana", extensions: ["bsp"] }, "model/vnd.vtu": { source: "iana", extensions: ["vtu"] }, "model/vrml": { source: "iana", compressible: false, extensions: ["wrl", "vrml"] }, "model/x3d+binary": { source: "apache", compressible: false, extensions: ["x3db", "x3dbz"] }, "model/x3d+fastinfoset": { source: "iana", extensions: ["x3db"] }, "model/x3d+vrml": { source: "apache", compressible: false, extensions: ["x3dv", "x3dvz"] }, "model/x3d+xml": { source: "iana", compressible: true, extensions: ["x3d", "x3dz"] }, "model/x3d-vrml": { source: "iana", extensions: ["x3dv"] }, "multipart/alternative": { source: "iana", compressible: false }, "multipart/appledouble": { source: "iana" }, "multipart/byteranges": { source: "iana" }, "multipart/digest": { source: "iana" }, "multipart/encrypted": { source: "iana", compressible: false }, "multipart/form-data": { source: "iana", compressible: false }, "multipart/header-set": { source: "iana" }, "multipart/mixed": { source: "iana" }, "multipart/multilingual": { source: "iana" }, "multipart/parallel": { source: "iana" }, "multipart/related": { source: "iana", compressible: false }, "multipart/report": { source: "iana" }, "multipart/signed": { source: "iana", compressible: false }, "multipart/vnd.bint.med-plus": { source: "iana" }, "multipart/voice-message": { source: "iana" }, "multipart/x-mixed-replace": { source: "iana" }, "text/1d-interleaved-parityfec": { source: "iana" }, "text/cache-manifest": { source: "iana", compressible: true, extensions: ["appcache", "manifest"] }, "text/calendar": { source: "iana", extensions: ["ics", "ifb"] }, "text/calender": { compressible: true }, "text/cmd": { compressible: true }, "text/coffeescript": { extensions: ["coffee", "litcoffee"] }, "text/cql": { source: "iana" }, "text/cql-expression": { source: "iana" }, "text/cql-identifier": { source: "iana" }, "text/css": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["css"] }, "text/csv": { source: "iana", compressible: true, extensions: ["csv"] }, "text/csv-schema": { source: "iana" }, "text/directory": { source: "iana" }, "text/dns": { source: "iana" }, "text/ecmascript": { source: "iana" }, "text/encaprtp": { source: "iana" }, "text/enriched": { source: "iana" }, "text/fhirpath": { source: "iana" }, "text/flexfec": { source: "iana" }, "text/fwdred": { source: "iana" }, "text/gff3": { source: "iana" }, "text/grammar-ref-list": { source: "iana" }, "text/html": { source: "iana", compressible: true, extensions: ["html", "htm", "shtml"] }, "text/jade": { extensions: ["jade"] }, "text/javascript": { source: "iana", compressible: true }, "text/jcr-cnd": { source: "iana" }, "text/jsx": { compressible: true, extensions: ["jsx"] }, "text/less": { compressible: true, extensions: ["less"] }, "text/markdown": { source: "iana", compressible: true, extensions: ["markdown", "md"] }, "text/mathml": { source: "nginx", extensions: ["mml"] }, "text/mdx": { compressible: true, extensions: ["mdx"] }, "text/mizar": { source: "iana" }, "text/n3": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["n3"] }, "text/parameters": { source: "iana", charset: "UTF-8" }, "text/parityfec": { source: "iana" }, "text/plain": { source: "iana", compressible: true, extensions: ["txt", "text", "conf", "def", "list", "log", "in", "ini"] }, "text/provenance-notation": { source: "iana", charset: "UTF-8" }, "text/prs.fallenstein.rst": { source: "iana" }, "text/prs.lines.tag": { source: "iana", extensions: ["dsc"] }, "text/prs.prop.logic": { source: "iana" }, "text/raptorfec": { source: "iana" }, "text/red": { source: "iana" }, "text/rfc822-headers": { source: "iana" }, "text/richtext": { source: "iana", compressible: true, extensions: ["rtx"] }, "text/rtf": { source: "iana", compressible: true, extensions: ["rtf"] }, "text/rtp-enc-aescm128": { source: "iana" }, "text/rtploopback": { source: "iana" }, "text/rtx": { source: "iana" }, "text/sgml": { source: "iana", extensions: ["sgml", "sgm"] }, "text/shaclc": { source: "iana" }, "text/shex": { source: "iana", extensions: ["shex"] }, "text/slim": { extensions: ["slim", "slm"] }, "text/spdx": { source: "iana", extensions: ["spdx"] }, "text/strings": { source: "iana" }, "text/stylus": { extensions: ["stylus", "styl"] }, "text/t140": { source: "iana" }, "text/tab-separated-values": { source: "iana", compressible: true, extensions: ["tsv"] }, "text/troff": { source: "iana", extensions: ["t", "tr", "roff", "man", "me", "ms"] }, "text/turtle": { source: "iana", charset: "UTF-8", extensions: ["ttl"] }, "text/ulpfec": { source: "iana" }, "text/uri-list": { source: "iana", compressible: true, extensions: ["uri", "uris", "urls"] }, "text/vcard": { source: "iana", compressible: true, extensions: ["vcard"] }, "text/vnd.a": { source: "iana" }, "text/vnd.abc": { source: "iana" }, "text/vnd.ascii-art": { source: "iana" }, "text/vnd.curl": { source: "iana", extensions: ["curl"] }, "text/vnd.curl.dcurl": { source: "apache", extensions: ["dcurl"] }, "text/vnd.curl.mcurl": { source: "apache", extensions: ["mcurl"] }, "text/vnd.curl.scurl": { source: "apache", extensions: ["scurl"] }, "text/vnd.debian.copyright": { source: "iana", charset: "UTF-8" }, "text/vnd.dmclientscript": { source: "iana" }, "text/vnd.dvb.subtitle": { source: "iana", extensions: ["sub"] }, "text/vnd.esmertec.theme-descriptor": { source: "iana", charset: "UTF-8" }, "text/vnd.familysearch.gedcom": { source: "iana", extensions: ["ged"] }, "text/vnd.ficlab.flt": { source: "iana" }, "text/vnd.fly": { source: "iana", extensions: ["fly"] }, "text/vnd.fmi.flexstor": { source: "iana", extensions: ["flx"] }, "text/vnd.gml": { source: "iana" }, "text/vnd.graphviz": { source: "iana", extensions: ["gv"] }, "text/vnd.hans": { source: "iana" }, "text/vnd.hgl": { source: "iana" }, "text/vnd.in3d.3dml": { source: "iana", extensions: ["3dml"] }, "text/vnd.in3d.spot": { source: "iana", extensions: ["spot"] }, "text/vnd.iptc.newsml": { source: "iana" }, "text/vnd.iptc.nitf": { source: "iana" }, "text/vnd.latex-z": { source: "iana" }, "text/vnd.motorola.reflex": { source: "iana" }, "text/vnd.ms-mediapackage": { source: "iana" }, "text/vnd.net2phone.commcenter.command": { source: "iana" }, "text/vnd.radisys.msml-basic-layout": { source: "iana" }, "text/vnd.senx.warpscript": { source: "iana" }, "text/vnd.si.uricatalogue": { source: "iana" }, "text/vnd.sosi": { source: "iana" }, "text/vnd.sun.j2me.app-descriptor": { source: "iana", charset: "UTF-8", extensions: ["jad"] }, "text/vnd.trolltech.linguist": { source: "iana", charset: "UTF-8" }, "text/vnd.wap.si": { source: "iana" }, "text/vnd.wap.sl": { source: "iana" }, "text/vnd.wap.wml": { source: "iana", extensions: ["wml"] }, "text/vnd.wap.wmlscript": { source: "iana", extensions: ["wmls"] }, "text/vtt": { source: "iana", charset: "UTF-8", compressible: true, extensions: ["vtt"] }, "text/x-asm": { source: "apache", extensions: ["s", "asm"] }, "text/x-c": { source: "apache", extensions: ["c", "cc", "cxx", "cpp", "h", "hh", "dic"] }, "text/x-component": { source: "nginx", extensions: ["htc"] }, "text/x-fortran": { source: "apache", extensions: ["f", "for", "f77", "f90"] }, "text/x-gwt-rpc": { compressible: true }, "text/x-handlebars-template": { extensions: ["hbs"] }, "text/x-java-source": { source: "apache", extensions: ["java"] }, "text/x-jquery-tmpl": { compressible: true }, "text/x-lua": { extensions: ["lua"] }, "text/x-markdown": { compressible: true, extensions: ["mkd"] }, "text/x-nfo": { source: "apache", extensions: ["nfo"] }, "text/x-opml": { source: "apache", extensions: ["opml"] }, "text/x-org": { compressible: true, extensions: ["org"] }, "text/x-pascal": { source: "apache", extensions: ["p", "pas"] }, "text/x-processing": { compressible: true, extensions: ["pde"] }, "text/x-sass": { extensions: ["sass"] }, "text/x-scss": { extensions: ["scss"] }, "text/x-setext": { source: "apache", extensions: ["etx"] }, "text/x-sfv": { source: "apache", extensions: ["sfv"] }, "text/x-suse-ymp": { compressible: true, extensions: ["ymp"] }, "text/x-uuencode": { source: "apache", extensions: ["uu"] }, "text/x-vcalendar": { source: "apache", extensions: ["vcs"] }, "text/x-vcard": { source: "apache", extensions: ["vcf"] }, "text/xml": { source: "iana", compressible: true, extensions: ["xml"] }, "text/xml-external-parsed-entity": { source: "iana" }, "text/yaml": { compressible: true, extensions: ["yaml", "yml"] }, "video/1d-interleaved-parityfec": { source: "iana" }, "video/3gpp": { source: "iana", extensions: ["3gp", "3gpp"] }, "video/3gpp-tt": { source: "iana" }, "video/3gpp2": { source: "iana", extensions: ["3g2"] }, "video/av1": { source: "iana" }, "video/bmpeg": { source: "iana" }, "video/bt656": { source: "iana" }, "video/celb": { source: "iana" }, "video/dv": { source: "iana" }, "video/encaprtp": { source: "iana" }, "video/ffv1": { source: "iana" }, "video/flexfec": { source: "iana" }, "video/h261": { source: "iana", extensions: ["h261"] }, "video/h263": { source: "iana", extensions: ["h263"] }, "video/h263-1998": { source: "iana" }, "video/h263-2000": { source: "iana" }, "video/h264": { source: "iana", extensions: ["h264"] }, "video/h264-rcdo": { source: "iana" }, "video/h264-svc": { source: "iana" }, "video/h265": { source: "iana" }, "video/iso.segment": { source: "iana", extensions: ["m4s"] }, "video/jpeg": { source: "iana", extensions: ["jpgv"] }, "video/jpeg2000": { source: "iana" }, "video/jpm": { source: "apache", extensions: ["jpm", "jpgm"] }, "video/jxsv": { source: "iana" }, "video/mj2": { source: "iana", extensions: ["mj2", "mjp2"] }, "video/mp1s": { source: "iana" }, "video/mp2p": { source: "iana" }, "video/mp2t": { source: "iana", extensions: ["ts"] }, "video/mp4": { source: "iana", compressible: false, extensions: ["mp4", "mp4v", "mpg4"] }, "video/mp4v-es": { source: "iana" }, "video/mpeg": { source: "iana", compressible: false, extensions: ["mpeg", "mpg", "mpe", "m1v", "m2v"] }, "video/mpeg4-generic": { source: "iana" }, "video/mpv": { source: "iana" }, "video/nv": { source: "iana" }, "video/ogg": { source: "iana", compressible: false, extensions: ["ogv"] }, "video/parityfec": { source: "iana" }, "video/pointer": { source: "iana" }, "video/quicktime": { source: "iana", compressible: false, extensions: ["qt", "mov"] }, "video/raptorfec": { source: "iana" }, "video/raw": { source: "iana" }, "video/rtp-enc-aescm128": { source: "iana" }, "video/rtploopback": { source: "iana" }, "video/rtx": { source: "iana" }, "video/scip": { source: "iana" }, "video/smpte291": { source: "iana" }, "video/smpte292m": { source: "iana" }, "video/ulpfec": { source: "iana" }, "video/vc1": { source: "iana" }, "video/vc2": { source: "iana" }, "video/vnd.cctv": { source: "iana" }, "video/vnd.dece.hd": { source: "iana", extensions: ["uvh", "uvvh"] }, "video/vnd.dece.mobile": { source: "iana", extensions: ["uvm", "uvvm"] }, "video/vnd.dece.mp4": { source: "iana" }, "video/vnd.dece.pd": { source: "iana", extensions: ["uvp", "uvvp"] }, "video/vnd.dece.sd": { source: "iana", extensions: ["uvs", "uvvs"] }, "video/vnd.dece.video": { source: "iana", extensions: ["uvv", "uvvv"] }, "video/vnd.directv.mpeg": { source: "iana" }, "video/vnd.directv.mpeg-tts": { source: "iana" }, "video/vnd.dlna.mpeg-tts": { source: "iana" }, "video/vnd.dvb.file": { source: "iana", extensions: ["dvb"] }, "video/vnd.fvt": { source: "iana", extensions: ["fvt"] }, "video/vnd.hns.video": { source: "iana" }, "video/vnd.iptvforum.1dparityfec-1010": { source: "iana" }, "video/vnd.iptvforum.1dparityfec-2005": { source: "iana" }, "video/vnd.iptvforum.2dparityfec-1010": { source: "iana" }, "video/vnd.iptvforum.2dparityfec-2005": { source: "iana" }, "video/vnd.iptvforum.ttsavc": { source: "iana" }, "video/vnd.iptvforum.ttsmpeg2": { source: "iana" }, "video/vnd.motorola.video": { source: "iana" }, "video/vnd.motorola.videop": { source: "iana" }, "video/vnd.mpegurl": { source: "iana", extensions: ["mxu", "m4u"] }, "video/vnd.ms-playready.media.pyv": { source: "iana", extensions: ["pyv"] }, "video/vnd.nokia.interleaved-multimedia": { source: "iana" }, "video/vnd.nokia.mp4vr": { source: "iana" }, "video/vnd.nokia.videovoip": { source: "iana" }, "video/vnd.objectvideo": { source: "iana" }, "video/vnd.radgamettools.bink": { source: "iana" }, "video/vnd.radgamettools.smacker": { source: "iana" }, "video/vnd.sealed.mpeg1": { source: "iana" }, "video/vnd.sealed.mpeg4": { source: "iana" }, "video/vnd.sealed.swf": { source: "iana" }, "video/vnd.sealedmedia.softseal.mov": { source: "iana" }, "video/vnd.uvvu.mp4": { source: "iana", extensions: ["uvu", "uvvu"] }, "video/vnd.vivo": { source: "iana", extensions: ["viv"] }, "video/vnd.youtube.yt": { source: "iana" }, "video/vp8": { source: "iana" }, "video/vp9": { source: "iana" }, "video/webm": { source: "apache", compressible: false, extensions: ["webm"] }, "video/x-f4v": { source: "apache", extensions: ["f4v"] }, "video/x-fli": { source: "apache", extensions: ["fli"] }, "video/x-flv": { source: "apache", compressible: false, extensions: ["flv"] }, "video/x-m4v": { source: "apache", extensions: ["m4v"] }, "video/x-matroska": { source: "apache", compressible: false, extensions: ["mkv", "mk3d", "mks"] }, "video/x-mng": { source: "apache", extensions: ["mng"] }, "video/x-ms-asf": { source: "apache", extensions: ["asf", "asx"] }, "video/x-ms-vob": { source: "apache", extensions: ["vob"] }, "video/x-ms-wm": { source: "apache", extensions: ["wm"] }, "video/x-ms-wmv": { source: "apache", compressible: false, extensions: ["wmv"] }, "video/x-ms-wmx": { source: "apache", extensions: ["wmx"] }, "video/x-ms-wvx": { source: "apache", extensions: ["wvx"] }, "video/x-msvideo": { source: "apache", extensions: ["avi"] }, "video/x-sgi-movie": { source: "apache", extensions: ["movie"] }, "video/x-smv": { source: "apache", extensions: ["smv"] }, "x-conference/x-cooltalk": { source: "apache", extensions: ["ice"] }, "x-shader/x-fragment": { compressible: true }, "x-shader/x-vertex": { compressible: true } }; } }); // ../backend/node_modules/mime-db/index.js var require_mime_db = __commonJS({ "../backend/node_modules/mime-db/index.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = require_db(); } }); // ../backend/node_modules/mime-types/index.js var require_mime_types = __commonJS({ "../backend/node_modules/mime-types/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var db = require_mime_db(); var extname = require("path").extname; var EXTRACT_TYPE_REGEXP = /^\s*([^;\s]*)(?:;|\s|$)/; var TEXT_TYPE_REGEXP = /^text\//i; exports2.charset = charset; exports2.charsets = { lookup: charset }; exports2.contentType = contentType; exports2.extension = extension; exports2.extensions = /* @__PURE__ */ Object.create(null); exports2.lookup = lookup; exports2.types = /* @__PURE__ */ Object.create(null); populateMaps(exports2.extensions, exports2.types); function charset(type) { if (!type || typeof type !== "string") { return false; } var match = EXTRACT_TYPE_REGEXP.exec(type); var mime = match && db[match[1].toLowerCase()]; if (mime && mime.charset) { return mime.charset; } if (match && TEXT_TYPE_REGEXP.test(match[1])) { return "UTF-8"; } return false; } function contentType(str) { if (!str || typeof str !== "string") { return false; } var mime = str.indexOf("/") === -1 ? exports2.lookup(str) : str; if (!mime) { return false; } if (mime.indexOf("charset") === -1) { var charset2 = exports2.charset(mime); if (charset2) mime += "; charset=" + charset2.toLowerCase(); } return mime; } function extension(type) { if (!type || typeof type !== "string") { return false; } var match = EXTRACT_TYPE_REGEXP.exec(type); var exts = match && exports2.extensions[match[1].toLowerCase()]; if (!exts || !exts.length) { return false; } return exts[0]; } function lookup(path2) { if (!path2 || typeof path2 !== "string") { return false; } var extension2 = extname("x." + path2).toLowerCase().substr(1); if (!extension2) { return false; } return exports2.types[extension2] || false; } function populateMaps(extensions, types) { var preference = ["nginx", "apache", void 0, "iana"]; Object.keys(db).forEach(function forEachMimeType(type) { var mime = db[type]; var exts = mime.extensions; if (!exts || !exts.length) { return; } extensions[type] = exts; for (var i = 0; i < exts.length; i++) { var extension2 = exts[i]; if (types[extension2]) { var from = preference.indexOf(db[types[extension2]].source); var to = preference.indexOf(mime.source); if (types[extension2] !== "application/octet-stream" && (from > to || from === to && types[extension2].substr(0, 12) === "application/")) { continue; } } types[extension2] = type; } }); } } }); // ../backend/node_modules/type-is/index.js var require_type_is = __commonJS({ "../backend/node_modules/type-is/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var typer = require_media_typer(); var mime = require_mime_types(); module2.exports = typeofrequest; module2.exports.is = typeis; module2.exports.hasBody = hasbody; module2.exports.normalize = normalize; module2.exports.match = mimeMatch; function typeis(value, types_) { var i; var types = types_; var val = tryNormalizeType(value); if (!val) { return false; } if (types && !Array.isArray(types)) { types = new Array(arguments.length - 1); for (i = 0; i < types.length; i++) { types[i] = arguments[i + 1]; } } if (!types || !types.length) { return val; } var type; for (i = 0; i < types.length; i++) { if (mimeMatch(normalize(type = types[i]), val)) { return type[0] === "+" || type.indexOf("*") !== -1 ? val : type; } } return false; } function hasbody(req) { return req.headers["transfer-encoding"] !== void 0 || !isNaN(req.headers["content-length"]); } function typeofrequest(req, types_) { var types = types_; if (!hasbody(req)) { return null; } if (arguments.length > 2) { types = new Array(arguments.length - 1); for (var i = 0; i < types.length; i++) { types[i] = arguments[i + 1]; } } var value = req.headers["content-type"]; return typeis(value, types); } function normalize(type) { if (typeof type !== "string") { return false; } switch (type) { case "urlencoded": return "application/x-www-form-urlencoded"; case "multipart": return "multipart/*"; } if (type[0] === "+") { return "*/*" + type; } return type.indexOf("/") === -1 ? mime.lookup(type) : type; } function mimeMatch(expected, actual) { if (expected === false) { return false; } var actualParts = actual.split("/"); var expectedParts = expected.split("/"); if (actualParts.length !== 2 || expectedParts.length !== 2) { return false; } if (expectedParts[0] !== "*" && expectedParts[0] !== actualParts[0]) { return false; } if (expectedParts[1].substr(0, 2) === "*+") { return expectedParts[1].length <= actualParts[1].length + 1 && expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length); } if (expectedParts[1] !== "*" && expectedParts[1] !== actualParts[1]) { return false; } return true; } function normalizeType(value) { var type = typer.parse(value); type.parameters = void 0; return typer.format(type); } function tryNormalizeType(value) { if (!value) { return null; } try { return normalizeType(value); } catch (err) { return null; } } } }); // ../backend/node_modules/body-parser/lib/types/json.js var require_json = __commonJS({ "../backend/node_modules/body-parser/lib/types/json.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var bytes = require_bytes(); var contentType = require_content_type(); var createError2 = require_http_errors(); var debug = require_src()("body-parser:json"); var read = require_read(); var typeis = require_type_is(); module2.exports = json2; var FIRST_CHAR_REGEXP = /^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/; var JSON_SYNTAX_CHAR = "#"; var JSON_SYNTAX_REGEXP = /#+/g; function json2(options) { var opts = options || {}; var limit = typeof opts.limit === "undefined" || opts.limit === null ? 102400 : bytes.parse(opts.limit); var inflate = opts.inflate !== false; var reviver = opts.reviver; var strict = opts.strict !== false; var type = opts.type || "application/json"; var verify = opts.verify || false; if (limit === null) { throw new TypeError('option limit "' + String(opts.limit) + '" is invalid'); } if (verify !== false && typeof verify !== "function") { throw new TypeError("option verify must be function"); } var shouldParse = typeof type !== "function" ? typeChecker(type) : type; function parse3(body) { if (body.length === 0) { return {}; } if (strict) { var first = firstchar(body); if (first !== "{" && first !== "[") { debug("strict violation"); throw createStrictSyntaxError(body, first); } } try { debug("parse json"); return JSON.parse(body, reviver); } catch (e) { throw normalizeJsonSyntaxError(e, { message: e.message, stack: e.stack }); } } return function jsonParser(req, res, next) { if (req._body) { debug("body already parsed"); next(); return; } req.body = req.body || {}; if (!typeis.hasBody(req)) { debug("skip empty body"); next(); return; } debug("content-type %j", req.headers["content-type"]); if (!shouldParse(req)) { debug("skip parsing"); next(); return; } var charset = getCharset(req) || "utf-8"; if (charset.slice(0, 4) !== "utf-") { debug("invalid charset"); next(createError2(415, 'unsupported charset "' + charset.toUpperCase() + '"', { charset, type: "charset.unsupported" })); return; } read(req, res, next, parse3, debug, { encoding: charset, inflate, limit, verify }); }; } function createStrictSyntaxError(str, char) { var index2 = str.indexOf(char); var partial = ""; if (index2 !== -1) { partial = str.substring(0, index2) + new Array(str.length - index2 + 1).join(JSON_SYNTAX_CHAR); } try { JSON.parse(partial); throw new SyntaxError("strict violation"); } catch (e) { return normalizeJsonSyntaxError(e, { message: e.message.replace(JSON_SYNTAX_REGEXP, function(placeholder) { return str.substring(index2, index2 + placeholder.length); }), stack: e.stack }); } } function firstchar(str) { var match = FIRST_CHAR_REGEXP.exec(str); return match ? match[1] : void 0; } function getCharset(req) { try { return (contentType.parse(req).parameters.charset || "").toLowerCase(); } catch (e) { return void 0; } } function normalizeJsonSyntaxError(error, obj) { var keys = Object.getOwnPropertyNames(error); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (key !== "stack" && key !== "message") { delete error[key]; } } error.stack = obj.stack.replace(error.message, obj.message); error.message = obj.message; return error; } function typeChecker(type) { return function checkType(req) { return Boolean(typeis(req, type)); }; } } }); // ../backend/node_modules/body-parser/lib/types/raw.js var require_raw = __commonJS({ "../backend/node_modules/body-parser/lib/types/raw.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var bytes = require_bytes(); var debug = require_src()("body-parser:raw"); var read = require_read(); var typeis = require_type_is(); module2.exports = raw; function raw(options) { var opts = options || {}; var inflate = opts.inflate !== false; var limit = typeof opts.limit === "undefined" || opts.limit === null ? 102400 : bytes.parse(opts.limit); var type = opts.type || "application/octet-stream"; var verify = opts.verify || false; if (limit === null) { throw new TypeError('option limit "' + String(opts.limit) + '" is invalid'); } if (verify !== false && typeof verify !== "function") { throw new TypeError("option verify must be function"); } var shouldParse = typeof type !== "function" ? typeChecker(type) : type; function parse3(buf) { return buf; } return function rawParser(req, res, next) { if (req._body) { debug("body already parsed"); next(); return; } req.body = req.body || {}; if (!typeis.hasBody(req)) { debug("skip empty body"); next(); return; } debug("content-type %j", req.headers["content-type"]); if (!shouldParse(req)) { debug("skip parsing"); next(); return; } read(req, res, next, parse3, debug, { encoding: null, inflate, limit, verify }); }; } function typeChecker(type) { return function checkType(req) { return Boolean(typeis(req, type)); }; } } }); // ../backend/node_modules/body-parser/lib/types/text.js var require_text = __commonJS({ "../backend/node_modules/body-parser/lib/types/text.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var bytes = require_bytes(); var contentType = require_content_type(); var debug = require_src()("body-parser:text"); var read = require_read(); var typeis = require_type_is(); module2.exports = text; function text(options) { var opts = options || {}; var defaultCharset = opts.defaultCharset || "utf-8"; var inflate = opts.inflate !== false; var limit = typeof opts.limit === "undefined" || opts.limit === null ? 102400 : bytes.parse(opts.limit); var type = opts.type || "text/plain"; var verify = opts.verify || false; if (limit === null) { throw new TypeError('option limit "' + String(opts.limit) + '" is invalid'); } if (verify !== false && typeof verify !== "function") { throw new TypeError("option verify must be function"); } var shouldParse = typeof type !== "function" ? typeChecker(type) : type; function parse3(buf) { return buf; } return function textParser(req, res, next) { if (req._body) { debug("body already parsed"); next(); return; } req.body = req.body || {}; if (!typeis.hasBody(req)) { debug("skip empty body"); next(); return; } debug("content-type %j", req.headers["content-type"]); if (!shouldParse(req)) { debug("skip parsing"); next(); return; } var charset = getCharset(req) || defaultCharset; read(req, res, next, parse3, debug, { encoding: charset, inflate, limit, verify }); }; } function getCharset(req) { try { return (contentType.parse(req).parameters.charset || "").toLowerCase(); } catch (e) { return void 0; } } function typeChecker(type) { return function checkType(req) { return Boolean(typeis(req, type)); }; } } }); // ../backend/node_modules/es-errors/type.js var require_type = __commonJS({ "../backend/node_modules/es-errors/type.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = TypeError; } }); // ../backend/node_modules/object-inspect/util.inspect.js var require_util_inspect = __commonJS({ "../backend/node_modules/object-inspect/util.inspect.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = require("util").inspect; } }); // ../backend/node_modules/object-inspect/index.js var require_object_inspect = __commonJS({ "../backend/node_modules/object-inspect/index.js"(exports2, module2) { init_define_import_meta_env(); var hasMap = typeof Map === "function" && Map.prototype; var mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, "size") : null; var mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === "function" ? mapSizeDescriptor.get : null; var mapForEach = hasMap && Map.prototype.forEach; var hasSet = typeof Set === "function" && Set.prototype; var setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, "size") : null; var setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === "function" ? setSizeDescriptor.get : null; var setForEach = hasSet && Set.prototype.forEach; var hasWeakMap = typeof WeakMap === "function" && WeakMap.prototype; var weakMapHas = hasWeakMap ? WeakMap.prototype.has : null; var hasWeakSet = typeof WeakSet === "function" && WeakSet.prototype; var weakSetHas = hasWeakSet ? WeakSet.prototype.has : null; var hasWeakRef = typeof WeakRef === "function" && WeakRef.prototype; var weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null; var booleanValueOf = Boolean.prototype.valueOf; var objectToString = Object.prototype.toString; var functionToString = Function.prototype.toString; var $match = String.prototype.match; var $slice = String.prototype.slice; var $replace = String.prototype.replace; var $toUpperCase = String.prototype.toUpperCase; var $toLowerCase = String.prototype.toLowerCase; var $test = RegExp.prototype.test; var $concat = Array.prototype.concat; var $join = Array.prototype.join; var $arrSlice = Array.prototype.slice; var $floor = Math.floor; var bigIntValueOf = typeof BigInt === "function" ? BigInt.prototype.valueOf : null; var gOPS = Object.getOwnPropertySymbols; var symToString = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? Symbol.prototype.toString : null; var hasShammedSymbols = typeof Symbol === "function" && typeof Symbol.iterator === "object"; var toStringTag = typeof Symbol === "function" && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? "object" : "symbol") ? Symbol.toStringTag : null; var isEnumerable = Object.prototype.propertyIsEnumerable; var gPO = (typeof Reflect === "function" ? Reflect.getPrototypeOf : Object.getPrototypeOf) || ([].__proto__ === Array.prototype ? function(O) { return O.__proto__; } : null); function addNumericSeparator(num, str) { if (num === Infinity || num === -Infinity || num !== num || num && num > -1e3 && num < 1e3 || $test.call(/e/, str)) { return str; } var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g; if (typeof num === "number") { var int = num < 0 ? -$floor(-num) : $floor(num); if (int !== num) { var intStr = String(int); var dec = $slice.call(str, intStr.length + 1); return $replace.call(intStr, sepRegex, "$&_") + "." + $replace.call($replace.call(dec, /([0-9]{3})/g, "$&_"), /_$/, ""); } } return $replace.call(str, sepRegex, "$&_"); } var utilInspect = require_util_inspect(); var inspectCustom = utilInspect.custom; var inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null; var quotes = { __proto__: null, "double": '"', single: "'" }; var quoteREs = { __proto__: null, "double": /(["\\])/g, single: /(['\\])/g }; module2.exports = function inspect_(obj, options, depth, seen) { var opts = options || {}; if (has(opts, "quoteStyle") && !has(quotes, opts.quoteStyle)) { throw new TypeError('option "quoteStyle" must be "single" or "double"'); } if (has(opts, "maxStringLength") && (typeof opts.maxStringLength === "number" ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity : opts.maxStringLength !== null)) { throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`'); } var customInspect = has(opts, "customInspect") ? opts.customInspect : true; if (typeof customInspect !== "boolean" && customInspect !== "symbol") { throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`"); } if (has(opts, "indent") && opts.indent !== null && opts.indent !== " " && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)) { throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`'); } if (has(opts, "numericSeparator") && typeof opts.numericSeparator !== "boolean") { throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`'); } var numericSeparator = opts.numericSeparator; if (typeof obj === "undefined") { return "undefined"; } if (obj === null) { return "null"; } if (typeof obj === "boolean") { return obj ? "true" : "false"; } if (typeof obj === "string") { return inspectString(obj, opts); } if (typeof obj === "number") { if (obj === 0) { return Infinity / obj > 0 ? "0" : "-0"; } var str = String(obj); return numericSeparator ? addNumericSeparator(obj, str) : str; } if (typeof obj === "bigint") { var bigIntStr = String(obj) + "n"; return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr; } var maxDepth = typeof opts.depth === "undefined" ? 5 : opts.depth; if (typeof depth === "undefined") { depth = 0; } if (depth >= maxDepth && maxDepth > 0 && typeof obj === "object") { return isArray(obj) ? "[Array]" : "[Object]"; } var indent = getIndent(opts, depth); if (typeof seen === "undefined") { seen = []; } else if (indexOf(seen, obj) >= 0) { return "[Circular]"; } function inspect(value, from, noIndent) { if (from) { seen = $arrSlice.call(seen); seen.push(from); } if (noIndent) { var newOpts = { depth: opts.depth }; if (has(opts, "quoteStyle")) { newOpts.quoteStyle = opts.quoteStyle; } return inspect_(value, newOpts, depth + 1, seen); } return inspect_(value, opts, depth + 1, seen); } if (typeof obj === "function" && !isRegExp(obj)) { var name = nameOf(obj); var keys = arrObjKeys(obj, inspect); return "[Function" + (name ? ": " + name : " (anonymous)") + "]" + (keys.length > 0 ? " { " + $join.call(keys, ", ") + " }" : ""); } if (isSymbol(obj)) { var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\(.*\))_[^)]*$/, "$1") : symToString.call(obj); return typeof obj === "object" && !hasShammedSymbols ? markBoxed(symString) : symString; } if (isElement(obj)) { var s = "<" + $toLowerCase.call(String(obj.nodeName)); var attrs = obj.attributes || []; for (var i = 0; i < attrs.length; i++) { s += " " + attrs[i].name + "=" + wrapQuotes(quote(attrs[i].value), "double", opts); } s += ">"; if (obj.childNodes && obj.childNodes.length) { s += "..."; } s += ""; return s; } if (isArray(obj)) { if (obj.length === 0) { return "[]"; } var xs = arrObjKeys(obj, inspect); if (indent && !singleLineValues(xs)) { return "[" + indentedJoin(xs, indent) + "]"; } return "[ " + $join.call(xs, ", ") + " ]"; } if (isError(obj)) { var parts = arrObjKeys(obj, inspect); if (!("cause" in Error.prototype) && "cause" in obj && !isEnumerable.call(obj, "cause")) { return "{ [" + String(obj) + "] " + $join.call($concat.call("[cause]: " + inspect(obj.cause), parts), ", ") + " }"; } if (parts.length === 0) { return "[" + String(obj) + "]"; } return "{ [" + String(obj) + "] " + $join.call(parts, ", ") + " }"; } if (typeof obj === "object" && customInspect) { if (inspectSymbol && typeof obj[inspectSymbol] === "function" && utilInspect) { return utilInspect(obj, { depth: maxDepth - depth }); } else if (customInspect !== "symbol" && typeof obj.inspect === "function") { return obj.inspect(); } } if (isMap(obj)) { var mapParts = []; if (mapForEach) { mapForEach.call(obj, function(value, key) { mapParts.push(inspect(key, obj, true) + " => " + inspect(value, obj)); }); } return collectionOf("Map", mapSize.call(obj), mapParts, indent); } if (isSet(obj)) { var setParts = []; if (setForEach) { setForEach.call(obj, function(value) { setParts.push(inspect(value, obj)); }); } return collectionOf("Set", setSize.call(obj), setParts, indent); } if (isWeakMap(obj)) { return weakCollectionOf("WeakMap"); } if (isWeakSet(obj)) { return weakCollectionOf("WeakSet"); } if (isWeakRef(obj)) { return weakCollectionOf("WeakRef"); } if (isNumber(obj)) { return markBoxed(inspect(Number(obj))); } if (isBigInt(obj)) { return markBoxed(inspect(bigIntValueOf.call(obj))); } if (isBoolean(obj)) { return markBoxed(booleanValueOf.call(obj)); } if (isString(obj)) { return markBoxed(inspect(String(obj))); } if (typeof window !== "undefined" && obj === window) { return "{ [object Window] }"; } if (typeof globalThis !== "undefined" && obj === globalThis || typeof global !== "undefined" && obj === global) { return "{ [object globalThis] }"; } if (!isDate(obj) && !isRegExp(obj)) { var ys = arrObjKeys(obj, inspect); var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object; var protoTag = obj instanceof Object ? "" : "null prototype"; var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? "Object" : ""; var constructorTag = isPlainObject || typeof obj.constructor !== "function" ? "" : obj.constructor.name ? obj.constructor.name + " " : ""; var tag = constructorTag + (stringTag || protoTag ? "[" + $join.call($concat.call([], stringTag || [], protoTag || []), ": ") + "] " : ""); if (ys.length === 0) { return tag + "{}"; } if (indent) { return tag + "{" + indentedJoin(ys, indent) + "}"; } return tag + "{ " + $join.call(ys, ", ") + " }"; } return String(obj); }; function wrapQuotes(s, defaultStyle, opts) { var style = opts.quoteStyle || defaultStyle; var quoteChar = quotes[style]; return quoteChar + s + quoteChar; } function quote(s) { return $replace.call(String(s), /"/g, """); } function canTrustToString(obj) { return !toStringTag || !(typeof obj === "object" && (toStringTag in obj || typeof obj[toStringTag] !== "undefined")); } function isArray(obj) { return toStr(obj) === "[object Array]" && canTrustToString(obj); } function isDate(obj) { return toStr(obj) === "[object Date]" && canTrustToString(obj); } function isRegExp(obj) { return toStr(obj) === "[object RegExp]" && canTrustToString(obj); } function isError(obj) { return toStr(obj) === "[object Error]" && canTrustToString(obj); } function isString(obj) { return toStr(obj) === "[object String]" && canTrustToString(obj); } function isNumber(obj) { return toStr(obj) === "[object Number]" && canTrustToString(obj); } function isBoolean(obj) { return toStr(obj) === "[object Boolean]" && canTrustToString(obj); } function isSymbol(obj) { if (hasShammedSymbols) { return obj && typeof obj === "object" && obj instanceof Symbol; } if (typeof obj === "symbol") { return true; } if (!obj || typeof obj !== "object" || !symToString) { return false; } try { symToString.call(obj); return true; } catch (e) { } return false; } function isBigInt(obj) { if (!obj || typeof obj !== "object" || !bigIntValueOf) { return false; } try { bigIntValueOf.call(obj); return true; } catch (e) { } return false; } var hasOwn = Object.prototype.hasOwnProperty || function(key) { return key in this; }; function has(obj, key) { return hasOwn.call(obj, key); } function toStr(obj) { return objectToString.call(obj); } function nameOf(f) { if (f.name) { return f.name; } var m = $match.call(functionToString.call(f), /^function\s*([\w$]+)/); if (m) { return m[1]; } return null; } function indexOf(xs, x) { if (xs.indexOf) { return xs.indexOf(x); } for (var i = 0, l = xs.length; i < l; i++) { if (xs[i] === x) { return i; } } return -1; } function isMap(x) { if (!mapSize || !x || typeof x !== "object") { return false; } try { mapSize.call(x); try { setSize.call(x); } catch (s) { return true; } return x instanceof Map; } catch (e) { } return false; } function isWeakMap(x) { if (!weakMapHas || !x || typeof x !== "object") { return false; } try { weakMapHas.call(x, weakMapHas); try { weakSetHas.call(x, weakSetHas); } catch (s) { return true; } return x instanceof WeakMap; } catch (e) { } return false; } function isWeakRef(x) { if (!weakRefDeref || !x || typeof x !== "object") { return false; } try { weakRefDeref.call(x); return true; } catch (e) { } return false; } function isSet(x) { if (!setSize || !x || typeof x !== "object") { return false; } try { setSize.call(x); try { mapSize.call(x); } catch (m) { return true; } return x instanceof Set; } catch (e) { } return false; } function isWeakSet(x) { if (!weakSetHas || !x || typeof x !== "object") { return false; } try { weakSetHas.call(x, weakSetHas); try { weakMapHas.call(x, weakMapHas); } catch (s) { return true; } return x instanceof WeakSet; } catch (e) { } return false; } function isElement(x) { if (!x || typeof x !== "object") { return false; } if (typeof HTMLElement !== "undefined" && x instanceof HTMLElement) { return true; } return typeof x.nodeName === "string" && typeof x.getAttribute === "function"; } function inspectString(str, opts) { if (str.length > opts.maxStringLength) { var remaining = str.length - opts.maxStringLength; var trailer = "... " + remaining + " more character" + (remaining > 1 ? "s" : ""); return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer; } var quoteRE = quoteREs[opts.quoteStyle || "single"]; quoteRE.lastIndex = 0; var s = $replace.call($replace.call(str, quoteRE, "\\$1"), /[\x00-\x1f]/g, lowbyte); return wrapQuotes(s, "single", opts); } function lowbyte(c) { var n = c.charCodeAt(0); var x = { 8: "b", 9: "t", 10: "n", 12: "f", 13: "r" }[n]; if (x) { return "\\" + x; } return "\\x" + (n < 16 ? "0" : "") + $toUpperCase.call(n.toString(16)); } function markBoxed(str) { return "Object(" + str + ")"; } function weakCollectionOf(type) { return type + " { ? }"; } function collectionOf(type, size, entries, indent) { var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ", "); return type + " (" + size + ") {" + joinedEntries + "}"; } function singleLineValues(xs) { for (var i = 0; i < xs.length; i++) { if (indexOf(xs[i], "\n") >= 0) { return false; } } return true; } function getIndent(opts, depth) { var baseIndent; if (opts.indent === " ") { baseIndent = " "; } else if (typeof opts.indent === "number" && opts.indent > 0) { baseIndent = $join.call(Array(opts.indent + 1), " "); } else { return null; } return { base: baseIndent, prev: $join.call(Array(depth + 1), baseIndent) }; } function indentedJoin(xs, indent) { if (xs.length === 0) { return ""; } var lineJoiner = "\n" + indent.prev + indent.base; return lineJoiner + $join.call(xs, "," + lineJoiner) + "\n" + indent.prev; } function arrObjKeys(obj, inspect) { var isArr = isArray(obj); var xs = []; if (isArr) { xs.length = obj.length; for (var i = 0; i < obj.length; i++) { xs[i] = has(obj, i) ? inspect(obj[i], obj) : ""; } } var syms = typeof gOPS === "function" ? gOPS(obj) : []; var symMap; if (hasShammedSymbols) { symMap = {}; for (var k = 0; k < syms.length; k++) { symMap["$" + syms[k]] = syms[k]; } } for (var key in obj) { if (!has(obj, key)) { continue; } if (isArr && String(Number(key)) === key && key < obj.length) { continue; } if (hasShammedSymbols && symMap["$" + key] instanceof Symbol) { continue; } else if ($test.call(/[^\w$]/, key)) { xs.push(inspect(key, obj) + ": " + inspect(obj[key], obj)); } else { xs.push(key + ": " + inspect(obj[key], obj)); } } if (typeof gOPS === "function") { for (var j = 0; j < syms.length; j++) { if (isEnumerable.call(obj, syms[j])) { xs.push("[" + inspect(syms[j]) + "]: " + inspect(obj[syms[j]], obj)); } } } return xs; } } }); // ../backend/node_modules/side-channel-list/index.js var require_side_channel_list = __commonJS({ "../backend/node_modules/side-channel-list/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var inspect = require_object_inspect(); var $TypeError = require_type(); var listGetNode = function(list, key, isDelete) { var prev = list; var curr; for (; (curr = prev.next) != null; prev = curr) { if (curr.key === key) { prev.next = curr.next; if (!isDelete) { curr.next = /** @type {NonNullable} */ list.next; list.next = curr; } return curr; } } }; var listGet = function(objects, key) { if (!objects) { return void 0; } var node = listGetNode(objects, key); return node && node.value; }; var listSet = function(objects, key, value) { var node = listGetNode(objects, key); if (node) { node.value = value; } else { objects.next = /** @type {import('./list.d.ts').ListNode} */ { // eslint-disable-line no-param-reassign, no-extra-parens key, next: objects.next, value }; } }; var listHas = function(objects, key) { if (!objects) { return false; } return !!listGetNode(objects, key); }; var listDelete = function(objects, key) { if (objects) { return listGetNode(objects, key, true); } }; module2.exports = function getSideChannelList() { var $o; var channel = { assert: function(key) { if (!channel.has(key)) { throw new $TypeError("Side channel does not contain " + inspect(key)); } }, "delete": function(key) { var deletedNode = listDelete($o, key); if (deletedNode && $o && !$o.next) { $o = void 0; } return !!deletedNode; }, get: function(key) { return listGet($o, key); }, has: function(key) { return listHas($o, key); }, set: function(key, value) { if (!$o) { $o = { next: void 0 }; } listSet( /** @type {NonNullable} */ $o, key, value ); } }; return channel; }; } }); // ../backend/node_modules/es-object-atoms/index.js var require_es_object_atoms = __commonJS({ "../backend/node_modules/es-object-atoms/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Object; } }); // ../backend/node_modules/es-errors/index.js var require_es_errors = __commonJS({ "../backend/node_modules/es-errors/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Error; } }); // ../backend/node_modules/es-errors/eval.js var require_eval = __commonJS({ "../backend/node_modules/es-errors/eval.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = EvalError; } }); // ../backend/node_modules/es-errors/range.js var require_range = __commonJS({ "../backend/node_modules/es-errors/range.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = RangeError; } }); // ../backend/node_modules/es-errors/ref.js var require_ref = __commonJS({ "../backend/node_modules/es-errors/ref.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = ReferenceError; } }); // ../backend/node_modules/es-errors/syntax.js var require_syntax = __commonJS({ "../backend/node_modules/es-errors/syntax.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = SyntaxError; } }); // ../backend/node_modules/es-errors/uri.js var require_uri = __commonJS({ "../backend/node_modules/es-errors/uri.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = URIError; } }); // ../backend/node_modules/math-intrinsics/abs.js var require_abs = __commonJS({ "../backend/node_modules/math-intrinsics/abs.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Math.abs; } }); // ../backend/node_modules/math-intrinsics/floor.js var require_floor = __commonJS({ "../backend/node_modules/math-intrinsics/floor.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Math.floor; } }); // ../backend/node_modules/math-intrinsics/max.js var require_max = __commonJS({ "../backend/node_modules/math-intrinsics/max.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Math.max; } }); // ../backend/node_modules/math-intrinsics/min.js var require_min = __commonJS({ "../backend/node_modules/math-intrinsics/min.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Math.min; } }); // ../backend/node_modules/math-intrinsics/pow.js var require_pow = __commonJS({ "../backend/node_modules/math-intrinsics/pow.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Math.pow; } }); // ../backend/node_modules/math-intrinsics/round.js var require_round = __commonJS({ "../backend/node_modules/math-intrinsics/round.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Math.round; } }); // ../backend/node_modules/math-intrinsics/isNaN.js var require_isNaN = __commonJS({ "../backend/node_modules/math-intrinsics/isNaN.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Number.isNaN || function isNaN2(a) { return a !== a; }; } }); // ../backend/node_modules/math-intrinsics/sign.js var require_sign = __commonJS({ "../backend/node_modules/math-intrinsics/sign.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var $isNaN = require_isNaN(); module2.exports = function sign(number) { if ($isNaN(number) || number === 0) { return number; } return number < 0 ? -1 : 1; }; } }); // ../backend/node_modules/gopd/gOPD.js var require_gOPD = __commonJS({ "../backend/node_modules/gopd/gOPD.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Object.getOwnPropertyDescriptor; } }); // ../backend/node_modules/gopd/index.js var require_gopd = __commonJS({ "../backend/node_modules/gopd/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var $gOPD = require_gOPD(); if ($gOPD) { try { $gOPD([], "length"); } catch (e) { $gOPD = null; } } module2.exports = $gOPD; } }); // ../backend/node_modules/es-define-property/index.js var require_es_define_property = __commonJS({ "../backend/node_modules/es-define-property/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var $defineProperty = Object.defineProperty || false; if ($defineProperty) { try { $defineProperty({}, "a", { value: 1 }); } catch (e) { $defineProperty = false; } } module2.exports = $defineProperty; } }); // ../backend/node_modules/has-symbols/shams.js var require_shams = __commonJS({ "../backend/node_modules/has-symbols/shams.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = function hasSymbols() { if (typeof Symbol !== "function" || typeof Object.getOwnPropertySymbols !== "function") { return false; } if (typeof Symbol.iterator === "symbol") { return true; } var obj = {}; var sym = /* @__PURE__ */ Symbol("test"); var symObj = Object(sym); if (typeof sym === "string") { return false; } if (Object.prototype.toString.call(sym) !== "[object Symbol]") { return false; } if (Object.prototype.toString.call(symObj) !== "[object Symbol]") { return false; } var symVal = 42; obj[sym] = symVal; for (var _ in obj) { return false; } if (typeof Object.keys === "function" && Object.keys(obj).length !== 0) { return false; } if (typeof Object.getOwnPropertyNames === "function" && Object.getOwnPropertyNames(obj).length !== 0) { return false; } var syms = Object.getOwnPropertySymbols(obj); if (syms.length !== 1 || syms[0] !== sym) { return false; } if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; } if (typeof Object.getOwnPropertyDescriptor === "function") { var descriptor = ( /** @type {PropertyDescriptor} */ Object.getOwnPropertyDescriptor(obj, sym) ); if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; } } return true; }; } }); // ../backend/node_modules/has-symbols/index.js var require_has_symbols = __commonJS({ "../backend/node_modules/has-symbols/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var origSymbol = typeof Symbol !== "undefined" && Symbol; var hasSymbolSham = require_shams(); module2.exports = function hasNativeSymbols() { if (typeof origSymbol !== "function") { return false; } if (typeof Symbol !== "function") { return false; } if (typeof origSymbol("foo") !== "symbol") { return false; } if (typeof /* @__PURE__ */ Symbol("bar") !== "symbol") { return false; } return hasSymbolSham(); }; } }); // ../backend/node_modules/get-proto/Reflect.getPrototypeOf.js var require_Reflect_getPrototypeOf = __commonJS({ "../backend/node_modules/get-proto/Reflect.getPrototypeOf.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = typeof Reflect !== "undefined" && Reflect.getPrototypeOf || null; } }); // ../backend/node_modules/get-proto/Object.getPrototypeOf.js var require_Object_getPrototypeOf = __commonJS({ "../backend/node_modules/get-proto/Object.getPrototypeOf.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var $Object = require_es_object_atoms(); module2.exports = $Object.getPrototypeOf || null; } }); // ../backend/node_modules/function-bind/implementation.js var require_implementation = __commonJS({ "../backend/node_modules/function-bind/implementation.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var ERROR_MESSAGE = "Function.prototype.bind called on incompatible "; var toStr = Object.prototype.toString; var max = Math.max; var funcType = "[object Function]"; var concatty = function concatty2(a, b) { var arr = []; for (var i = 0; i < a.length; i += 1) { arr[i] = a[i]; } for (var j = 0; j < b.length; j += 1) { arr[j + a.length] = b[j]; } return arr; }; var slicy = function slicy2(arrLike, offset) { var arr = []; for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) { arr[j] = arrLike[i]; } return arr; }; var joiny = function(arr, joiner) { var str = ""; for (var i = 0; i < arr.length; i += 1) { str += arr[i]; if (i + 1 < arr.length) { str += joiner; } } return str; }; module2.exports = function bind(that) { var target = this; if (typeof target !== "function" || toStr.apply(target) !== funcType) { throw new TypeError(ERROR_MESSAGE + target); } var args = slicy(arguments, 1); var bound; var binder = function() { if (this instanceof bound) { var result = target.apply( this, concatty(args, arguments) ); if (Object(result) === result) { return result; } return this; } return target.apply( that, concatty(args, arguments) ); }; var boundLength = max(0, target.length - args.length); var boundArgs = []; for (var i = 0; i < boundLength; i++) { boundArgs[i] = "$" + i; } bound = Function("binder", "return function (" + joiny(boundArgs, ",") + "){ return binder.apply(this,arguments); }")(binder); if (target.prototype) { var Empty = function Empty2() { }; Empty.prototype = target.prototype; bound.prototype = new Empty(); Empty.prototype = null; } return bound; }; } }); // ../backend/node_modules/function-bind/index.js var require_function_bind = __commonJS({ "../backend/node_modules/function-bind/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var implementation = require_implementation(); module2.exports = Function.prototype.bind || implementation; } }); // ../backend/node_modules/call-bind-apply-helpers/functionCall.js var require_functionCall = __commonJS({ "../backend/node_modules/call-bind-apply-helpers/functionCall.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Function.prototype.call; } }); // ../backend/node_modules/call-bind-apply-helpers/functionApply.js var require_functionApply = __commonJS({ "../backend/node_modules/call-bind-apply-helpers/functionApply.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = Function.prototype.apply; } }); // ../backend/node_modules/call-bind-apply-helpers/reflectApply.js var require_reflectApply = __commonJS({ "../backend/node_modules/call-bind-apply-helpers/reflectApply.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = typeof Reflect !== "undefined" && Reflect && Reflect.apply; } }); // ../backend/node_modules/call-bind-apply-helpers/actualApply.js var require_actualApply = __commonJS({ "../backend/node_modules/call-bind-apply-helpers/actualApply.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var bind = require_function_bind(); var $apply = require_functionApply(); var $call = require_functionCall(); var $reflectApply = require_reflectApply(); module2.exports = $reflectApply || bind.call($call, $apply); } }); // ../backend/node_modules/call-bind-apply-helpers/index.js var require_call_bind_apply_helpers = __commonJS({ "../backend/node_modules/call-bind-apply-helpers/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var bind = require_function_bind(); var $TypeError = require_type(); var $call = require_functionCall(); var $actualApply = require_actualApply(); module2.exports = function callBindBasic(args) { if (args.length < 1 || typeof args[0] !== "function") { throw new $TypeError("a function is required"); } return $actualApply(bind, $call, args); }; } }); // ../backend/node_modules/dunder-proto/get.js var require_get = __commonJS({ "../backend/node_modules/dunder-proto/get.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var callBind = require_call_bind_apply_helpers(); var gOPD = require_gopd(); var hasProtoAccessor; try { hasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ [].__proto__ === Array.prototype; } catch (e) { if (!e || typeof e !== "object" || !("code" in e) || e.code !== "ERR_PROTO_ACCESS") { throw e; } } var desc = !!hasProtoAccessor && gOPD && gOPD( Object.prototype, /** @type {keyof typeof Object.prototype} */ "__proto__" ); var $Object = Object; var $getPrototypeOf = $Object.getPrototypeOf; module2.exports = desc && typeof desc.get === "function" ? callBind([desc.get]) : typeof $getPrototypeOf === "function" ? ( /** @type {import('./get')} */ function getDunder(value) { return $getPrototypeOf(value == null ? value : $Object(value)); } ) : false; } }); // ../backend/node_modules/get-proto/index.js var require_get_proto = __commonJS({ "../backend/node_modules/get-proto/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var reflectGetProto = require_Reflect_getPrototypeOf(); var originalGetProto = require_Object_getPrototypeOf(); var getDunderProto = require_get(); module2.exports = reflectGetProto ? function getProto(O) { return reflectGetProto(O); } : originalGetProto ? function getProto(O) { if (!O || typeof O !== "object" && typeof O !== "function") { throw new TypeError("getProto: not an object"); } return originalGetProto(O); } : getDunderProto ? function getProto(O) { return getDunderProto(O); } : null; } }); // ../backend/node_modules/hasown/index.js var require_hasown = __commonJS({ "../backend/node_modules/hasown/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var call = Function.prototype.call; var $hasOwn = Object.prototype.hasOwnProperty; var bind = require_function_bind(); module2.exports = bind.call(call, $hasOwn); } }); // ../backend/node_modules/get-intrinsic/index.js var require_get_intrinsic = __commonJS({ "../backend/node_modules/get-intrinsic/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var undefined2; var $Object = require_es_object_atoms(); var $Error = require_es_errors(); var $EvalError = require_eval(); var $RangeError = require_range(); var $ReferenceError = require_ref(); var $SyntaxError = require_syntax(); var $TypeError = require_type(); var $URIError = require_uri(); var abs = require_abs(); var floor = require_floor(); var max = require_max(); var min = require_min(); var pow = require_pow(); var round = require_round(); var sign = require_sign(); var $Function = Function; var getEvalledConstructor = function(expressionSyntax) { try { return $Function('"use strict"; return (' + expressionSyntax + ").constructor;")(); } catch (e) { } }; var $gOPD = require_gopd(); var $defineProperty = require_es_define_property(); var throwTypeError = function() { throw new $TypeError(); }; var ThrowTypeError = $gOPD ? (function() { try { arguments.callee; return throwTypeError; } catch (calleeThrows) { try { return $gOPD(arguments, "callee").get; } catch (gOPDthrows) { return throwTypeError; } } })() : throwTypeError; var hasSymbols = require_has_symbols()(); var getProto = require_get_proto(); var $ObjectGPO = require_Object_getPrototypeOf(); var $ReflectGPO = require_Reflect_getPrototypeOf(); var $apply = require_functionApply(); var $call = require_functionCall(); var needsEval = {}; var TypedArray = typeof Uint8Array === "undefined" || !getProto ? undefined2 : getProto(Uint8Array); var INTRINSICS = { __proto__: null, "%AggregateError%": typeof AggregateError === "undefined" ? undefined2 : AggregateError, "%Array%": Array, "%ArrayBuffer%": typeof ArrayBuffer === "undefined" ? undefined2 : ArrayBuffer, "%ArrayIteratorPrototype%": hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined2, "%AsyncFromSyncIteratorPrototype%": undefined2, "%AsyncFunction%": needsEval, "%AsyncGenerator%": needsEval, "%AsyncGeneratorFunction%": needsEval, "%AsyncIteratorPrototype%": needsEval, "%Atomics%": typeof Atomics === "undefined" ? undefined2 : Atomics, "%BigInt%": typeof BigInt === "undefined" ? undefined2 : BigInt, "%BigInt64Array%": typeof BigInt64Array === "undefined" ? undefined2 : BigInt64Array, "%BigUint64Array%": typeof BigUint64Array === "undefined" ? undefined2 : BigUint64Array, "%Boolean%": Boolean, "%DataView%": typeof DataView === "undefined" ? undefined2 : DataView, "%Date%": Date, "%decodeURI%": decodeURI, "%decodeURIComponent%": decodeURIComponent, "%encodeURI%": encodeURI, "%encodeURIComponent%": encodeURIComponent, "%Error%": $Error, "%eval%": eval, // eslint-disable-line no-eval "%EvalError%": $EvalError, "%Float16Array%": typeof Float16Array === "undefined" ? undefined2 : Float16Array, "%Float32Array%": typeof Float32Array === "undefined" ? undefined2 : Float32Array, "%Float64Array%": typeof Float64Array === "undefined" ? undefined2 : Float64Array, "%FinalizationRegistry%": typeof FinalizationRegistry === "undefined" ? undefined2 : FinalizationRegistry, "%Function%": $Function, "%GeneratorFunction%": needsEval, "%Int8Array%": typeof Int8Array === "undefined" ? undefined2 : Int8Array, "%Int16Array%": typeof Int16Array === "undefined" ? undefined2 : Int16Array, "%Int32Array%": typeof Int32Array === "undefined" ? undefined2 : Int32Array, "%isFinite%": isFinite, "%isNaN%": isNaN, "%IteratorPrototype%": hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined2, "%JSON%": typeof JSON === "object" ? JSON : undefined2, "%Map%": typeof Map === "undefined" ? undefined2 : Map, "%MapIteratorPrototype%": typeof Map === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Map())[Symbol.iterator]()), "%Math%": Math, "%Number%": Number, "%Object%": $Object, "%Object.getOwnPropertyDescriptor%": $gOPD, "%parseFloat%": parseFloat, "%parseInt%": parseInt, "%Promise%": typeof Promise === "undefined" ? undefined2 : Promise, "%Proxy%": typeof Proxy === "undefined" ? undefined2 : Proxy, "%RangeError%": $RangeError, "%ReferenceError%": $ReferenceError, "%Reflect%": typeof Reflect === "undefined" ? undefined2 : Reflect, "%RegExp%": RegExp, "%Set%": typeof Set === "undefined" ? undefined2 : Set, "%SetIteratorPrototype%": typeof Set === "undefined" || !hasSymbols || !getProto ? undefined2 : getProto((/* @__PURE__ */ new Set())[Symbol.iterator]()), "%SharedArrayBuffer%": typeof SharedArrayBuffer === "undefined" ? undefined2 : SharedArrayBuffer, "%String%": String, "%StringIteratorPrototype%": hasSymbols && getProto ? getProto(""[Symbol.iterator]()) : undefined2, "%Symbol%": hasSymbols ? Symbol : undefined2, "%SyntaxError%": $SyntaxError, "%ThrowTypeError%": ThrowTypeError, "%TypedArray%": TypedArray, "%TypeError%": $TypeError, "%Uint8Array%": typeof Uint8Array === "undefined" ? undefined2 : Uint8Array, "%Uint8ClampedArray%": typeof Uint8ClampedArray === "undefined" ? undefined2 : Uint8ClampedArray, "%Uint16Array%": typeof Uint16Array === "undefined" ? undefined2 : Uint16Array, "%Uint32Array%": typeof Uint32Array === "undefined" ? undefined2 : Uint32Array, "%URIError%": $URIError, "%WeakMap%": typeof WeakMap === "undefined" ? undefined2 : WeakMap, "%WeakRef%": typeof WeakRef === "undefined" ? undefined2 : WeakRef, "%WeakSet%": typeof WeakSet === "undefined" ? undefined2 : WeakSet, "%Function.prototype.call%": $call, "%Function.prototype.apply%": $apply, "%Object.defineProperty%": $defineProperty, "%Object.getPrototypeOf%": $ObjectGPO, "%Math.abs%": abs, "%Math.floor%": floor, "%Math.max%": max, "%Math.min%": min, "%Math.pow%": pow, "%Math.round%": round, "%Math.sign%": sign, "%Reflect.getPrototypeOf%": $ReflectGPO }; if (getProto) { try { null.error; } catch (e) { errorProto = getProto(getProto(e)); INTRINSICS["%Error.prototype%"] = errorProto; } } var errorProto; var doEval = function doEval2(name) { var value; if (name === "%AsyncFunction%") { value = getEvalledConstructor("async function () {}"); } else if (name === "%GeneratorFunction%") { value = getEvalledConstructor("function* () {}"); } else if (name === "%AsyncGeneratorFunction%") { value = getEvalledConstructor("async function* () {}"); } else if (name === "%AsyncGenerator%") { var fn = doEval2("%AsyncGeneratorFunction%"); if (fn) { value = fn.prototype; } } else if (name === "%AsyncIteratorPrototype%") { var gen = doEval2("%AsyncGenerator%"); if (gen && getProto) { value = getProto(gen.prototype); } } INTRINSICS[name] = value; return value; }; var LEGACY_ALIASES = { __proto__: null, "%ArrayBufferPrototype%": ["ArrayBuffer", "prototype"], "%ArrayPrototype%": ["Array", "prototype"], "%ArrayProto_entries%": ["Array", "prototype", "entries"], "%ArrayProto_forEach%": ["Array", "prototype", "forEach"], "%ArrayProto_keys%": ["Array", "prototype", "keys"], "%ArrayProto_values%": ["Array", "prototype", "values"], "%AsyncFunctionPrototype%": ["AsyncFunction", "prototype"], "%AsyncGenerator%": ["AsyncGeneratorFunction", "prototype"], "%AsyncGeneratorPrototype%": ["AsyncGeneratorFunction", "prototype", "prototype"], "%BooleanPrototype%": ["Boolean", "prototype"], "%DataViewPrototype%": ["DataView", "prototype"], "%DatePrototype%": ["Date", "prototype"], "%ErrorPrototype%": ["Error", "prototype"], "%EvalErrorPrototype%": ["EvalError", "prototype"], "%Float32ArrayPrototype%": ["Float32Array", "prototype"], "%Float64ArrayPrototype%": ["Float64Array", "prototype"], "%FunctionPrototype%": ["Function", "prototype"], "%Generator%": ["GeneratorFunction", "prototype"], "%GeneratorPrototype%": ["GeneratorFunction", "prototype", "prototype"], "%Int8ArrayPrototype%": ["Int8Array", "prototype"], "%Int16ArrayPrototype%": ["Int16Array", "prototype"], "%Int32ArrayPrototype%": ["Int32Array", "prototype"], "%JSONParse%": ["JSON", "parse"], "%JSONStringify%": ["JSON", "stringify"], "%MapPrototype%": ["Map", "prototype"], "%NumberPrototype%": ["Number", "prototype"], "%ObjectPrototype%": ["Object", "prototype"], "%ObjProto_toString%": ["Object", "prototype", "toString"], "%ObjProto_valueOf%": ["Object", "prototype", "valueOf"], "%PromisePrototype%": ["Promise", "prototype"], "%PromiseProto_then%": ["Promise", "prototype", "then"], "%Promise_all%": ["Promise", "all"], "%Promise_reject%": ["Promise", "reject"], "%Promise_resolve%": ["Promise", "resolve"], "%RangeErrorPrototype%": ["RangeError", "prototype"], "%ReferenceErrorPrototype%": ["ReferenceError", "prototype"], "%RegExpPrototype%": ["RegExp", "prototype"], "%SetPrototype%": ["Set", "prototype"], "%SharedArrayBufferPrototype%": ["SharedArrayBuffer", "prototype"], "%StringPrototype%": ["String", "prototype"], "%SymbolPrototype%": ["Symbol", "prototype"], "%SyntaxErrorPrototype%": ["SyntaxError", "prototype"], "%TypedArrayPrototype%": ["TypedArray", "prototype"], "%TypeErrorPrototype%": ["TypeError", "prototype"], "%Uint8ArrayPrototype%": ["Uint8Array", "prototype"], "%Uint8ClampedArrayPrototype%": ["Uint8ClampedArray", "prototype"], "%Uint16ArrayPrototype%": ["Uint16Array", "prototype"], "%Uint32ArrayPrototype%": ["Uint32Array", "prototype"], "%URIErrorPrototype%": ["URIError", "prototype"], "%WeakMapPrototype%": ["WeakMap", "prototype"], "%WeakSetPrototype%": ["WeakSet", "prototype"] }; var bind = require_function_bind(); var hasOwn = require_hasown(); var $concat = bind.call($call, Array.prototype.concat); var $spliceApply = bind.call($apply, Array.prototype.splice); var $replace = bind.call($call, String.prototype.replace); var $strSlice = bind.call($call, String.prototype.slice); var $exec = bind.call($call, RegExp.prototype.exec); var rePropName = /[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g; var reEscapeChar = /\\(\\)?/g; var stringToPath = function stringToPath2(string) { var first = $strSlice(string, 0, 1); var last = $strSlice(string, -1); if (first === "%" && last !== "%") { throw new $SyntaxError("invalid intrinsic syntax, expected closing `%`"); } else if (last === "%" && first !== "%") { throw new $SyntaxError("invalid intrinsic syntax, expected opening `%`"); } var result = []; $replace(string, rePropName, function(match, number, quote, subString) { result[result.length] = quote ? $replace(subString, reEscapeChar, "$1") : number || match; }); return result; }; var getBaseIntrinsic = function getBaseIntrinsic2(name, allowMissing) { var intrinsicName = name; var alias; if (hasOwn(LEGACY_ALIASES, intrinsicName)) { alias = LEGACY_ALIASES[intrinsicName]; intrinsicName = "%" + alias[0] + "%"; } if (hasOwn(INTRINSICS, intrinsicName)) { var value = INTRINSICS[intrinsicName]; if (value === needsEval) { value = doEval(intrinsicName); } if (typeof value === "undefined" && !allowMissing) { throw new $TypeError("intrinsic " + name + " exists, but is not available. Please file an issue!"); } return { alias, name: intrinsicName, value }; } throw new $SyntaxError("intrinsic " + name + " does not exist!"); }; module2.exports = function GetIntrinsic(name, allowMissing) { if (typeof name !== "string" || name.length === 0) { throw new $TypeError("intrinsic name must be a non-empty string"); } if (arguments.length > 1 && typeof allowMissing !== "boolean") { throw new $TypeError('"allowMissing" argument must be a boolean'); } if ($exec(/^%?[^%]*%?$/, name) === null) { throw new $SyntaxError("`%` may not be present anywhere but at the beginning and end of the intrinsic name"); } var parts = stringToPath(name); var intrinsicBaseName = parts.length > 0 ? parts[0] : ""; var intrinsic = getBaseIntrinsic("%" + intrinsicBaseName + "%", allowMissing); var intrinsicRealName = intrinsic.name; var value = intrinsic.value; var skipFurtherCaching = false; var alias = intrinsic.alias; if (alias) { intrinsicBaseName = alias[0]; $spliceApply(parts, $concat([0, 1], alias)); } for (var i = 1, isOwn = true; i < parts.length; i += 1) { var part = parts[i]; var first = $strSlice(part, 0, 1); var last = $strSlice(part, -1); if ((first === '"' || first === "'" || first === "`" || (last === '"' || last === "'" || last === "`")) && first !== last) { throw new $SyntaxError("property names with quotes must have matching quotes"); } if (part === "constructor" || !isOwn) { skipFurtherCaching = true; } intrinsicBaseName += "." + part; intrinsicRealName = "%" + intrinsicBaseName + "%"; if (hasOwn(INTRINSICS, intrinsicRealName)) { value = INTRINSICS[intrinsicRealName]; } else if (value != null) { if (!(part in value)) { if (!allowMissing) { throw new $TypeError("base intrinsic for " + name + " exists, but the property is not available."); } return void undefined2; } if ($gOPD && i + 1 >= parts.length) { var desc = $gOPD(value, part); isOwn = !!desc; if (isOwn && "get" in desc && !("originalValue" in desc.get)) { value = desc.get; } else { value = value[part]; } } else { isOwn = hasOwn(value, part); value = value[part]; } if (isOwn && !skipFurtherCaching) { INTRINSICS[intrinsicRealName] = value; } } } return value; }; } }); // ../backend/node_modules/call-bound/index.js var require_call_bound = __commonJS({ "../backend/node_modules/call-bound/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var GetIntrinsic = require_get_intrinsic(); var callBindBasic = require_call_bind_apply_helpers(); var $indexOf = callBindBasic([GetIntrinsic("%String.prototype.indexOf%")]); module2.exports = function callBoundIntrinsic(name, allowMissing) { var intrinsic = ( /** @type {(this: unknown, ...args: unknown[]) => unknown} */ GetIntrinsic(name, !!allowMissing) ); if (typeof intrinsic === "function" && $indexOf(name, ".prototype.") > -1) { return callBindBasic( /** @type {const} */ [intrinsic] ); } return intrinsic; }; } }); // ../backend/node_modules/side-channel-map/index.js var require_side_channel_map = __commonJS({ "../backend/node_modules/side-channel-map/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var GetIntrinsic = require_get_intrinsic(); var callBound = require_call_bound(); var inspect = require_object_inspect(); var $TypeError = require_type(); var $Map = GetIntrinsic("%Map%", true); var $mapGet = callBound("Map.prototype.get", true); var $mapSet = callBound("Map.prototype.set", true); var $mapHas = callBound("Map.prototype.has", true); var $mapDelete = callBound("Map.prototype.delete", true); var $mapSize = callBound("Map.prototype.size", true); module2.exports = !!$Map && /** @type {Exclude} */ function getSideChannelMap() { var $m; var channel = { assert: function(key) { if (!channel.has(key)) { throw new $TypeError("Side channel does not contain " + inspect(key)); } }, "delete": function(key) { if ($m) { var result = $mapDelete($m, key); if ($mapSize($m) === 0) { $m = void 0; } return result; } return false; }, get: function(key) { if ($m) { return $mapGet($m, key); } }, has: function(key) { if ($m) { return $mapHas($m, key); } return false; }, set: function(key, value) { if (!$m) { $m = new $Map(); } $mapSet($m, key, value); } }; return channel; }; } }); // ../backend/node_modules/side-channel-weakmap/index.js var require_side_channel_weakmap = __commonJS({ "../backend/node_modules/side-channel-weakmap/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var GetIntrinsic = require_get_intrinsic(); var callBound = require_call_bound(); var inspect = require_object_inspect(); var getSideChannelMap = require_side_channel_map(); var $TypeError = require_type(); var $WeakMap = GetIntrinsic("%WeakMap%", true); var $weakMapGet = callBound("WeakMap.prototype.get", true); var $weakMapSet = callBound("WeakMap.prototype.set", true); var $weakMapHas = callBound("WeakMap.prototype.has", true); var $weakMapDelete = callBound("WeakMap.prototype.delete", true); module2.exports = $WeakMap ? ( /** @type {Exclude} */ function getSideChannelWeakMap() { var $wm; var $m; var channel = { assert: function(key) { if (!channel.has(key)) { throw new $TypeError("Side channel does not contain " + inspect(key)); } }, "delete": function(key) { if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { if ($wm) { return $weakMapDelete($wm, key); } } else if (getSideChannelMap) { if ($m) { return $m["delete"](key); } } return false; }, get: function(key) { if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { if ($wm) { return $weakMapGet($wm, key); } } return $m && $m.get(key); }, has: function(key) { if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { if ($wm) { return $weakMapHas($wm, key); } } return !!$m && $m.has(key); }, set: function(key, value) { if ($WeakMap && key && (typeof key === "object" || typeof key === "function")) { if (!$wm) { $wm = new $WeakMap(); } $weakMapSet($wm, key, value); } else if (getSideChannelMap) { if (!$m) { $m = getSideChannelMap(); } $m.set(key, value); } } }; return channel; } ) : getSideChannelMap; } }); // ../backend/node_modules/side-channel/index.js var require_side_channel = __commonJS({ "../backend/node_modules/side-channel/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var $TypeError = require_type(); var inspect = require_object_inspect(); var getSideChannelList = require_side_channel_list(); var getSideChannelMap = require_side_channel_map(); var getSideChannelWeakMap = require_side_channel_weakmap(); var makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList; module2.exports = function getSideChannel() { var $channelData; var channel = { assert: function(key) { if (!channel.has(key)) { var keyDesc = key && Object(key) === key ? "the given object key" : inspect(key); throw new $TypeError("Side channel does not contain " + keyDesc); } }, "delete": function(key) { return !!$channelData && $channelData["delete"](key); }, get: function(key) { return $channelData && $channelData.get(key); }, has: function(key) { return !!$channelData && $channelData.has(key); }, set: function(key, value) { if (!$channelData) { $channelData = makeChannel(); } $channelData.set(key, value); } }; return channel; }; } }); // ../backend/node_modules/body-parser/node_modules/qs/lib/formats.js var require_formats = __commonJS({ "../backend/node_modules/body-parser/node_modules/qs/lib/formats.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var replace = String.prototype.replace; var percentTwenties = /%20/g; var Format = { RFC1738: "RFC1738", RFC3986: "RFC3986" }; module2.exports = { "default": Format.RFC3986, formatters: { RFC1738: function(value) { return replace.call(value, percentTwenties, "+"); }, RFC3986: function(value) { return String(value); } }, RFC1738: Format.RFC1738, RFC3986: Format.RFC3986 }; } }); // ../backend/node_modules/body-parser/node_modules/qs/lib/utils.js var require_utils = __commonJS({ "../backend/node_modules/body-parser/node_modules/qs/lib/utils.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var formats = require_formats(); var getSideChannel = require_side_channel(); var defineProperty = require_es_define_property(); var has = Object.prototype.hasOwnProperty; var isArray = Array.isArray; var overflowChannel = getSideChannel(); var markOverflow = function markOverflow2(obj, maxIndex) { overflowChannel.set(obj, maxIndex); return obj; }; var isOverflow = function isOverflow2(obj) { return overflowChannel.has(obj); }; var getMaxIndex = function getMaxIndex2(obj) { return overflowChannel.get(obj); }; var setMaxIndex = function setMaxIndex2(obj, maxIndex) { overflowChannel.set(obj, maxIndex); }; var hexTable = (function() { var array = []; for (var i = 0; i < 256; ++i) { array[array.length] = "%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase(); } return array; })(); var compactQueue = function compactQueue2(queue) { while (queue.length > 1) { var item = queue.pop(); var obj = item.obj[item.prop]; if (isArray(obj)) { var compacted = []; for (var j = 0; j < obj.length; ++j) { if (typeof obj[j] !== "undefined") { compacted[compacted.length] = obj[j]; } } item.obj[item.prop] = compacted; } } }; var arrayToObject = function arrayToObject2(source, options) { var obj = options && options.plainObjects ? { __proto__: null } : {}; for (var i = 0; i < source.length; ++i) { if (typeof source[i] !== "undefined") { obj[i] = source[i]; } } return obj; }; var setProperty = function setProperty2(obj, key, value) { if (key === "__proto__" && defineProperty) { defineProperty(obj, key, { configurable: true, enumerable: true, value, writable: true }); } else { obj[key] = value; } }; var merge = function merge2(target, source, options) { if (!source) { return target; } if (typeof source !== "object" && typeof source !== "function") { if (isArray(target)) { var nextIndex = target.length; if (options && typeof options.arrayLimit === "number" && nextIndex >= options.arrayLimit) { if (options.throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } return markOverflow(arrayToObject(target.concat(source), options), nextIndex); } target[nextIndex] = source; } else if (target && typeof target === "object") { if (isOverflow(target)) { var newIndex = getMaxIndex(target) + 1; target[newIndex] = source; setMaxIndex(target, newIndex); } else if (options && options.strictMerge) { return [target, source]; } else if (options && (options.plainObjects || options.allowPrototypes) || !has.call(Object.prototype, source)) { target[source] = true; } } else { return [target, source]; } return target; } if (!target || typeof target !== "object") { if (isOverflow(source)) { var sourceKeys = Object.keys(source); var result = options && options.plainObjects ? { __proto__: null, 0: target } : { 0: target }; for (var m = 0; m < sourceKeys.length; m++) { var oldKey = parseInt(sourceKeys[m], 10); result[oldKey + 1] = source[sourceKeys[m]]; } return markOverflow(result, getMaxIndex(source) + 1); } var combined = [target].concat(source); if (options && typeof options.arrayLimit === "number" && combined.length > options.arrayLimit) { if (options.throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } return markOverflow(arrayToObject(combined, options), combined.length - 1); } return combined; } var mergeTarget = target; if (isArray(target) && !isArray(source)) { mergeTarget = arrayToObject(target, options); } if (isArray(target) && isArray(source)) { source.forEach(function(item, i) { if (has.call(target, i)) { var targetItem = target[i]; if (targetItem && typeof targetItem === "object" && item && typeof item === "object") { target[i] = merge2(targetItem, item, options); } else { target[target.length] = item; } } else { target[i] = item; } }); if (options && typeof options.arrayLimit === "number" && target.length > options.arrayLimit) { if (options.throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } return markOverflow(arrayToObject(target, options), target.length - 1); } return target; } return Object.keys(source).reduce(function(acc, key) { var value = source[key]; if (has.call(acc, key)) { setProperty(acc, key, merge2(acc[key], value, options)); } else { setProperty(acc, key, value); } if (isOverflow(source) && !isOverflow(acc)) { markOverflow(acc, getMaxIndex(source)); } if (isOverflow(acc)) { var keyNum = parseInt(key, 10); if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) { setMaxIndex(acc, keyNum); } } return acc; }, mergeTarget); }; var assign = function assignSingleSource(target, source) { return Object.keys(source).reduce(function(acc, key) { setProperty(acc, key, source[key]); return acc; }, target); }; var decode = function(str, defaultDecoder, charset) { var strWithoutPlus = str.replace(/\+/g, " "); if (charset === "iso-8859-1") { return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); } try { return decodeURIComponent(strWithoutPlus); } catch (e) { return strWithoutPlus; } }; var limit = 1024; var encode = function encode2(str, defaultEncoder, charset, kind, format) { if (str.length === 0) { return str; } var string = str; if (typeof str === "symbol") { string = Symbol.prototype.toString.call(str); } else if (typeof str !== "string") { string = String(str); } if (charset === "iso-8859-1") { return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) { return "%26%23" + parseInt($0.slice(2), 16) + "%3B"; }); } var out = ""; for (var j = 0; j < string.length; j += limit) { var segment = string.length >= limit ? string.slice(j, j + limit) : string; if (j + limit < string.length) { var last = segment.charCodeAt(segment.length - 1); if (last >= 55296 && last <= 56319) { segment = segment.slice(0, -1); j -= 1; } } var arr = []; for (var i = 0; i < segment.length; ++i) { var c = segment.charCodeAt(i); if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format === formats.RFC1738 && (c === 40 || c === 41)) { arr[arr.length] = segment.charAt(i); continue; } if (c < 128) { arr[arr.length] = hexTable[c]; continue; } if (c < 2048) { arr[arr.length] = hexTable[192 | c >> 6] + hexTable[128 | c & 63]; continue; } if (c < 55296 || c >= 57344) { arr[arr.length] = hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; continue; } i += 1; c = 65536 + ((c & 1023) << 10 | segment.charCodeAt(i) & 1023); arr[arr.length] = hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; } out += arr.join(""); } return out; }; var compact = function compact2(value) { var queue = [{ obj: { o: value }, prop: "o" }]; var refs = getSideChannel(); for (var i = 0; i < queue.length; ++i) { var item = queue[i]; var obj = item.obj[item.prop]; var keys = Object.keys(obj); for (var j = 0; j < keys.length; ++j) { var key = keys[j]; var val = obj[key]; if (typeof val === "object" && val !== null && !refs.has(val)) { queue[queue.length] = { obj, prop: key }; refs.set(val, true); } } } compactQueue(queue); return value; }; var isRegExp = function isRegExp2(obj) { return Object.prototype.toString.call(obj) === "[object RegExp]"; }; var isBuffer = function isBuffer2(obj) { if (!obj || typeof obj !== "object") { return false; } return !!(obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj)); }; var combine = function combine2(a, b, arrayLimit, plainObjects, throwOnLimitExceeded) { if (isOverflow(a)) { if (throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + arrayLimit + " element" + (arrayLimit === 1 ? "" : "s") + " allowed in an array."); } var bValues = isArray(b) ? b : [b]; var newIndex = getMaxIndex(a); for (var i = 0; i < bValues.length; ++i) { newIndex += 1; a[newIndex] = bValues[i]; } setMaxIndex(a, newIndex); return a; } var result = [].concat(a, b); if (result.length > arrayLimit) { if (throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + arrayLimit + " element" + (arrayLimit === 1 ? "" : "s") + " allowed in an array."); } return markOverflow(arrayToObject(result, { plainObjects }), result.length - 1); } return result; }; var maybeMap = function maybeMap2(val, fn) { if (isArray(val)) { var mapped = []; for (var i = 0; i < val.length; i += 1) { mapped[mapped.length] = fn(val[i]); } return mapped; } return fn(val); }; module2.exports = { arrayToObject, assign, combine, compact, decode, encode, isBuffer, isOverflow, isRegExp, markOverflow, maybeMap, merge }; } }); // ../backend/node_modules/body-parser/node_modules/qs/lib/stringify.js var require_stringify = __commonJS({ "../backend/node_modules/body-parser/node_modules/qs/lib/stringify.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var getSideChannel = require_side_channel(); var utils = require_utils(); var formats = require_formats(); var has = Object.prototype.hasOwnProperty; var arrayPrefixGenerators = { brackets: function brackets(prefix) { return prefix + "[]"; }, comma: "comma", indices: function indices(prefix, key) { return prefix + "[" + key + "]"; }, repeat: function repeat(prefix) { return prefix; } }; var isArray = Array.isArray; var push = Array.prototype.push; var pushToArray = function(arr, valueOrArray) { push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); }; var toISO = Date.prototype.toISOString; var defaultFormat = formats["default"]; var defaults = { addQueryPrefix: false, allowDots: false, allowEmptyArrays: false, arrayFormat: "indices", charset: "utf-8", charsetSentinel: false, commaRoundTrip: false, delimiter: "&", depth: Infinity, encode: true, encodeDotInKeys: false, encoder: utils.encode, encodeValuesOnly: false, filter: void 0, format: defaultFormat, formatter: formats.formatters[defaultFormat], // deprecated indices: false, serializeDate: function serializeDate(date) { return toISO.call(date); }, skipNulls: false, strictNullHandling: false }; var isNonNullishPrimitive = function isNonNullishPrimitive2(v) { return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint"; }; var sentinel = {}; var stringify = function stringify2(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder2, filter2, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel, depth, currentDepth) { var obj = object; if (currentDepth > depth) { throw new RangeError("Input depth exceeded depth option of " + depth); } var tmpSc = sideChannel; var step = 0; var findFlag = false; while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) { var pos = tmpSc.get(object); step += 1; if (typeof pos !== "undefined") { if (pos === step) { throw new RangeError("Cyclic object value"); } else { findFlag = true; } } if (typeof tmpSc.get(sentinel) === "undefined") { step = 0; } } obj = typeof filter2 === "function" ? filter2(prefix, obj) : obj; if (obj instanceof Date) { obj = serializeDate(obj); } else if (generateArrayPrefix === "comma" && isArray(obj)) { obj = utils.maybeMap(obj, function(value2) { if (value2 instanceof Date) { return serializeDate(value2); } return value2; }); } if (obj === null) { if (strictNullHandling) { return formatter(encoder2 && !encodeValuesOnly ? encoder2(prefix, defaults.encoder, charset, "key", format) : prefix); } obj = ""; } if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { if (encoder2) { var keyValue = encodeValuesOnly ? prefix : encoder2(prefix, defaults.encoder, charset, "key", format); return [formatter(keyValue) + "=" + formatter(encoder2(obj, defaults.encoder, charset, "value", format))]; } return [formatter(prefix) + "=" + formatter(String(obj))]; } var values = []; if (typeof obj === "undefined") { return values; } var objKeys; if (generateArrayPrefix === "comma" && isArray(obj)) { if (encodeValuesOnly && encoder2) { obj = utils.maybeMap(obj, function(v) { return v == null ? v : encoder2(v); }); } objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }]; } else if (isArray(filter2)) { objKeys = filter2; } else { var keys = Object.keys(obj); objKeys = sort ? keys.sort(sort) : keys; } var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, "%2E") : String(prefix); var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + "[]" : encodedPrefix; if (allowEmptyArrays && isArray(obj) && obj.length === 0 && Object.keys(obj).length === 0) { return adjustedPrefix + "[]"; } for (var j = 0; j < objKeys.length; ++j) { var key = objKeys[j]; var value = typeof key === "object" && key && typeof key.value !== "undefined" ? key.value : obj[key]; if (skipNulls && value === null) { continue; } var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, "%2E") : String(key); var keyPrefix = isArray(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + encodedKey : "[" + encodedKey + "]"); sideChannel.set(object, step); var valueSideChannel = getSideChannel(); valueSideChannel.set(sentinel, sideChannel); pushToArray(values, stringify2( value, keyPrefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, generateArrayPrefix === "comma" && encodeValuesOnly && isArray(obj) ? null : encoder2, filter2, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel, depth, currentDepth + 1 )); } return values; }; var normalizeStringifyOptions = function normalizeStringifyOptions2(opts) { if (!opts) { return defaults; } if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); } if (typeof opts.encodeDotInKeys !== "undefined" && typeof opts.encodeDotInKeys !== "boolean") { throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided"); } if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") { throw new TypeError("Encoder has to be a function."); } var charset = opts.charset || defaults.charset; if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); } var format = formats["default"]; if (typeof opts.format !== "undefined") { if (!has.call(formats.formatters, opts.format)) { throw new TypeError("Unknown format option provided."); } format = opts.format; } var formatter = formats.formatters[format]; var filter2 = defaults.filter; if (typeof opts.filter === "function" || isArray(opts.filter)) { filter2 = opts.filter; } var arrayFormat; if (opts.arrayFormat in arrayPrefixGenerators) { arrayFormat = opts.arrayFormat; } else if ("indices" in opts) { arrayFormat = opts.indices ? "indices" : "repeat"; } else { arrayFormat = defaults.arrayFormat; } if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") { throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); } var allowDots = typeof opts.allowDots === "undefined" ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; return { addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults.addQueryPrefix, allowDots, allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, arrayFormat, charset, charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, commaRoundTrip: !!opts.commaRoundTrip, delimiter: typeof opts.delimiter === "undefined" ? defaults.delimiter : opts.delimiter, depth: typeof opts.depth === "number" ? opts.depth : defaults.depth, encode: typeof opts.encode === "boolean" ? opts.encode : defaults.encode, encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean" ? opts.encodeDotInKeys : defaults.encodeDotInKeys, encoder: typeof opts.encoder === "function" ? opts.encoder : defaults.encoder, encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults.encodeValuesOnly, filter: filter2, format, formatter, serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults.serializeDate, skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults.skipNulls, sort: typeof opts.sort === "function" ? opts.sort : null, strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling }; }; module2.exports = function(object, opts) { var obj = object; var options = normalizeStringifyOptions(opts); var objKeys; var filter2; if (typeof options.filter === "function") { filter2 = options.filter; obj = filter2("", obj); } else if (isArray(options.filter)) { filter2 = options.filter; objKeys = filter2; } var keys = []; if (typeof obj !== "object" || obj === null) { return ""; } var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; var commaRoundTrip = generateArrayPrefix === "comma" && options.commaRoundTrip; if (!objKeys) { objKeys = Object.keys(obj); } if (options.sort) { objKeys.sort(options.sort); } var sideChannel = getSideChannel(); for (var i = 0; i < objKeys.length; ++i) { var key = objKeys[i]; if (typeof key === "undefined" || key === null) { continue; } var value = obj[key]; if (options.skipNulls && value === null) { continue; } var encodedKey = options.encodeDotInKeys ? String(key).replace(/\./g, "%2E") : String(key); pushToArray(keys, stringify( value, encodedKey, generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel, options.depth, 0 )); } var joined = keys.join(options.delimiter); var prefix = options.addQueryPrefix === true ? "?" : ""; if (options.charsetSentinel) { if (options.charset === "iso-8859-1") { prefix += "utf8=%26%2310003%3B" + options.delimiter; } else { prefix += "utf8=%E2%9C%93" + options.delimiter; } } return joined.length > 0 ? prefix + joined : ""; }; } }); // ../backend/node_modules/body-parser/node_modules/qs/lib/parse.js var require_parse = __commonJS({ "../backend/node_modules/body-parser/node_modules/qs/lib/parse.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var utils = require_utils(); var has = Object.prototype.hasOwnProperty; var isArray = Array.isArray; var defaults = { allowDots: false, allowEmptyArrays: false, allowPrototypes: false, allowSparse: false, arrayLimit: 20, charset: "utf-8", charsetSentinel: false, comma: false, decodeDotInKeys: false, decoder: utils.decode, delimiter: "&", depth: 5, duplicates: "combine", ignoreQueryPrefix: false, interpretNumericEntities: false, parameterLimit: 1e3, parseArrays: true, plainObjects: false, strictDepth: false, strictMerge: true, strictNullHandling: false, throwOnLimitExceeded: false }; var interpretNumericEntities = function(str) { return str.replace(/&#(\d+);/g, function($0, numberStr) { return String.fromCharCode(parseInt(numberStr, 10)); }); }; var parseArrayValue = function(val, options, currentArrayLength) { if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) { if (options.throwOnLimitExceeded) { var commaCount = 0; var commaIndex = val.indexOf(","); while (commaIndex > -1) { commaCount += 1; if (commaCount >= options.arrayLimit) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } commaIndex = val.indexOf(",", commaIndex + 1); } } return val.split(","); } if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } return val; }; var isoSentinel = "utf8=%26%2310003%3B"; var charsetSentinel = "utf8=%E2%9C%93"; var parseValues = function parseQueryStringValues(str, options) { var obj = { __proto__: null }; var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, "") : str; cleanStr = cleanStr.replace(/%5B/gi, "[").replace(/%5D/gi, "]"); var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit; var parts = cleanStr.split( options.delimiter, options.throwOnLimitExceeded && typeof limit !== "undefined" ? limit + 1 : limit ); if (options.throwOnLimitExceeded && typeof limit !== "undefined" && parts.length > limit) { throw new RangeError("Parameter limit exceeded. Only " + limit + " parameter" + (limit === 1 ? "" : "s") + " allowed."); } var skipIndex = -1; var i; var charset = options.charset; if (options.charsetSentinel) { for (i = 0; i < parts.length; ++i) { if (parts[i].indexOf("utf8=") === 0) { if (parts[i] === charsetSentinel) { charset = "utf-8"; } else if (parts[i] === isoSentinel) { charset = "iso-8859-1"; } skipIndex = i; i = parts.length; } } } for (i = 0; i < parts.length; ++i) { if (i === skipIndex) { continue; } var part = parts[i]; var bracketEqualsPos = part.indexOf("]="); var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1; var key; var val; if (pos === -1) { key = options.decoder(part, defaults.decoder, charset, "key"); val = options.strictNullHandling ? null : ""; } else { key = options.decoder(part.slice(0, pos), defaults.decoder, charset, "key"); if (key !== null) { val = utils.maybeMap( parseArrayValue( part.slice(pos + 1), options, isArray(obj[key]) ? obj[key].length : 0 ), function(encodedVal) { return options.decoder(encodedVal, defaults.decoder, charset, "value"); } ); } } if (val && options.interpretNumericEntities && charset === "iso-8859-1") { val = interpretNumericEntities(String(val)); } if (part.indexOf("[]=") > -1) { val = isArray(val) ? [val] : val; } if (options.comma && isArray(val) && val.length > options.arrayLimit) { val = utils.combine([], val, options.arrayLimit, options.plainObjects, options.throwOnLimitExceeded); } if (key !== null) { var existing = has.call(obj, key); if (existing && (options.duplicates === "combine" || part.indexOf("[]=") > -1)) { obj[key] = utils.combine( obj[key], val, options.arrayLimit, options.plainObjects, options.throwOnLimitExceeded ); } else if (!existing || options.duplicates === "last") { obj[key] = val; } } } return obj; }; var parseObject = function(chain, val, options, valuesParsed) { var currentArrayLength = 0; if (chain.length > 0 && chain[chain.length - 1] === "[]") { var parentKey = chain.slice(0, -1).join(""); currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; } var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); for (var i = chain.length - 1; i >= 0; --i) { var obj; var root = chain[i]; if (root === "[]" && options.parseArrays) { if (utils.isOverflow(leaf)) { obj = leaf; } else { obj = options.allowEmptyArrays && (leaf === "" || options.strictNullHandling && leaf === null) ? [] : utils.combine( [], leaf, options.arrayLimit, options.plainObjects, options.throwOnLimitExceeded ); } } else { obj = options.plainObjects ? { __proto__: null } : {}; var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root; var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, ".") : cleanRoot; var index2 = parseInt(decodedRoot, 10); var isValidArrayIndex = !isNaN(index2) && root !== decodedRoot && String(index2) === decodedRoot && index2 >= 0 && options.parseArrays; if (!options.parseArrays && decodedRoot === "") { obj = { 0: leaf }; } else if (isValidArrayIndex && index2 < options.arrayLimit) { obj = []; obj[index2] = leaf; } else if (isValidArrayIndex && options.throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } else if (isValidArrayIndex) { obj[index2] = leaf; utils.markOverflow(obj, index2); } else if (decodedRoot !== "__proto__") { obj[decodedRoot] = leaf; } } leaf = obj; } return leaf; }; var splitKeyIntoSegments = function splitKeyIntoSegments2(originalKey, options) { var key = options.allowDots ? originalKey.replace(/\.([^.[]+)/g, "[$1]") : originalKey; if (options.depth <= 0) { if (!options.plainObjects && has.call(Object.prototype, key)) { if (!options.allowPrototypes) { return; } } return [key]; } var segments = []; var first = key.indexOf("["); var parent = first >= 0 ? key.slice(0, first) : key; if (parent) { if (!options.plainObjects && has.call(Object.prototype, parent)) { if (!options.allowPrototypes) { return; } } segments[segments.length] = parent; } var n = key.length; var open = first; var collected = 0; while (open >= 0 && collected < options.depth) { var level = 1; var i = open + 1; var close = -1; while (i < n && close < 0) { var cu = key.charCodeAt(i); if (cu === 91) { level += 1; } else if (cu === 93) { level -= 1; if (level === 0) { close = i; } } i += 1; } if (close < 0) { segments[segments.length] = "[" + key.slice(open) + "]"; return segments; } var seg = key.slice(open, close + 1); var content = seg.slice(1, -1); if (!options.plainObjects && has.call(Object.prototype, content) && !options.allowPrototypes) { return; } segments[segments.length] = seg; collected += 1; open = key.indexOf("[", close + 1); } if (open >= 0) { if (options.strictDepth === true) { throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true"); } segments[segments.length] = "[" + key.slice(open) + "]"; } return segments; }; var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { if (!givenKey) { return; } var keys = splitKeyIntoSegments(givenKey, options); if (!keys) { return; } return parseObject(keys, val, options, valuesParsed); }; var normalizeParseOptions = function normalizeParseOptions2(opts) { if (!opts) { return defaults; } if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); } if (typeof opts.decodeDotInKeys !== "undefined" && typeof opts.decodeDotInKeys !== "boolean") { throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided"); } if (opts.decoder !== null && typeof opts.decoder !== "undefined" && typeof opts.decoder !== "function") { throw new TypeError("Decoder has to be a function."); } if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); } if (typeof opts.throwOnLimitExceeded !== "undefined" && typeof opts.throwOnLimitExceeded !== "boolean") { throw new TypeError("`throwOnLimitExceeded` option must be a boolean"); } var charset = typeof opts.charset === "undefined" ? defaults.charset : opts.charset; var duplicates = typeof opts.duplicates === "undefined" ? defaults.duplicates : opts.duplicates; if (duplicates !== "combine" && duplicates !== "first" && duplicates !== "last") { throw new TypeError("The duplicates option must be either combine, first, or last"); } var allowDots = typeof opts.allowDots === "undefined" ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; return { allowDots, allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults.allowPrototypes, allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults.allowSparse, arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults.arrayLimit, charset, charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, comma: typeof opts.comma === "boolean" ? opts.comma : defaults.comma, decodeDotInKeys: typeof opts.decodeDotInKeys === "boolean" ? opts.decodeDotInKeys : defaults.decodeDotInKeys, decoder: typeof opts.decoder === "function" ? opts.decoder : defaults.decoder, delimiter: typeof opts.delimiter === "string" || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, // eslint-disable-next-line no-implicit-coercion, no-extra-parens depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults.depth, duplicates, ignoreQueryPrefix: opts.ignoreQueryPrefix === true, interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults.interpretNumericEntities, parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults.parameterLimit, parseArrays: opts.parseArrays !== false, plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults.plainObjects, strictDepth: typeof opts.strictDepth === "boolean" ? !!opts.strictDepth : defaults.strictDepth, strictMerge: typeof opts.strictMerge === "boolean" ? !!opts.strictMerge : defaults.strictMerge, strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling, throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === "boolean" ? opts.throwOnLimitExceeded : false }; }; module2.exports = function(str, opts) { var options = normalizeParseOptions(opts); if (str === "" || str === null || typeof str === "undefined") { return options.plainObjects ? { __proto__: null } : {}; } var tempObj = typeof str === "string" ? parseValues(str, options) : str; var obj = options.plainObjects ? { __proto__: null } : {}; var keys = Object.keys(tempObj); for (var i = 0; i < keys.length; ++i) { var key = keys[i]; var newObj = parseKeys(key, tempObj[key], options, typeof str === "string"); obj = utils.merge(obj, newObj, options); } if (options.allowSparse === true) { return obj; } return utils.compact(obj); }; } }); // ../backend/node_modules/body-parser/node_modules/qs/lib/index.js var require_lib3 = __commonJS({ "../backend/node_modules/body-parser/node_modules/qs/lib/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var stringify = require_stringify(); var parse3 = require_parse(); var formats = require_formats(); module2.exports = { formats, parse: parse3, stringify }; } }); // ../backend/node_modules/body-parser/lib/types/urlencoded.js var require_urlencoded = __commonJS({ "../backend/node_modules/body-parser/lib/types/urlencoded.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var bytes = require_bytes(); var contentType = require_content_type(); var createError2 = require_http_errors(); var debug = require_src()("body-parser:urlencoded"); var deprecate = require_depd()("body-parser"); var read = require_read(); var typeis = require_type_is(); module2.exports = urlencoded; var parsers = /* @__PURE__ */ Object.create(null); function urlencoded(options) { var opts = options || {}; if (opts.extended === void 0) { deprecate("undefined extended: provide extended option"); } var extended = opts.extended !== false; var inflate = opts.inflate !== false; var limit = typeof opts.limit === "undefined" || opts.limit === null ? 102400 : bytes.parse(opts.limit); var type = opts.type || "application/x-www-form-urlencoded"; var verify = opts.verify || false; if (limit === null) { throw new TypeError('option limit "' + String(opts.limit) + '" is invalid'); } if (verify !== false && typeof verify !== "function") { throw new TypeError("option verify must be function"); } var queryparse = extended ? extendedparser(opts) : simpleparser(opts); var shouldParse = typeof type !== "function" ? typeChecker(type) : type; function parse3(body) { return body.length ? queryparse(body) : {}; } return function urlencodedParser(req, res, next) { if (req._body) { debug("body already parsed"); next(); return; } req.body = req.body || {}; if (!typeis.hasBody(req)) { debug("skip empty body"); next(); return; } debug("content-type %j", req.headers["content-type"]); if (!shouldParse(req)) { debug("skip parsing"); next(); return; } var charset = getCharset(req) || "utf-8"; if (charset !== "utf-8") { debug("invalid charset"); next(createError2(415, 'unsupported charset "' + charset.toUpperCase() + '"', { charset, type: "charset.unsupported" })); return; } read(req, res, next, parse3, debug, { debug, encoding: charset, inflate, limit, verify }); }; } function extendedparser(options) { var parameterLimit = options.parameterLimit !== void 0 ? options.parameterLimit : 1e3; var depth = options.depth !== void 0 ? options.depth : 32; var parse3 = parser("qs"); if (isNaN(parameterLimit) || parameterLimit < 1) { throw new TypeError("option parameterLimit must be a positive number"); } if (isNaN(depth) || depth < 0) { throw new TypeError("option depth must be a zero or a positive number"); } if (isFinite(parameterLimit)) { parameterLimit = parameterLimit | 0; } return function queryparse(body) { var paramCount = parameterCount(body, parameterLimit); if (paramCount === void 0) { debug("too many parameters"); throw createError2(413, "too many parameters", { type: "parameters.too.many" }); } var arrayLimit = Math.max(100, paramCount); debug("parse extended urlencoding"); try { return parse3(body, { allowPrototypes: true, arrayLimit, depth, strictDepth: true, parameterLimit }); } catch (err) { if (err instanceof RangeError) { throw createError2(400, "The input exceeded the depth", { type: "querystring.parse.rangeError" }); } else { throw err; } } }; } function getCharset(req) { try { return (contentType.parse(req).parameters.charset || "").toLowerCase(); } catch (e) { return void 0; } } function parameterCount(body, limit) { var count = 0; var index2 = -1; do { count++; if (count > limit) { return void 0; } index2 = body.indexOf("&", index2 + 1); } while (index2 !== -1); return count; } function parser(name) { var mod = parsers[name]; if (mod !== void 0) { return mod.parse; } switch (name) { case "qs": mod = require_lib3(); break; case "querystring": mod = require("querystring"); break; } parsers[name] = mod; return mod.parse; } function simpleparser(options) { var parameterLimit = options.parameterLimit !== void 0 ? options.parameterLimit : 1e3; var parse3 = parser("querystring"); if (isNaN(parameterLimit) || parameterLimit < 1) { throw new TypeError("option parameterLimit must be a positive number"); } if (isFinite(parameterLimit)) { parameterLimit = parameterLimit | 0; } return function queryparse(body) { var paramCount = parameterCount(body, parameterLimit); if (paramCount === void 0) { debug("too many parameters"); throw createError2(413, "too many parameters", { type: "parameters.too.many" }); } debug("parse urlencoding"); return parse3(body, void 0, void 0, { maxKeys: parameterLimit }); }; } function typeChecker(type) { return function checkType(req) { return Boolean(typeis(req, type)); }; } } }); // ../backend/node_modules/body-parser/index.js var require_body_parser = __commonJS({ "../backend/node_modules/body-parser/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var deprecate = require_depd()("body-parser"); var parsers = /* @__PURE__ */ Object.create(null); exports2 = module2.exports = deprecate.function( bodyParser, "bodyParser: use individual json/urlencoded middlewares" ); Object.defineProperty(exports2, "json", { configurable: true, enumerable: true, get: createParserGetter("json") }); Object.defineProperty(exports2, "raw", { configurable: true, enumerable: true, get: createParserGetter("raw") }); Object.defineProperty(exports2, "text", { configurable: true, enumerable: true, get: createParserGetter("text") }); Object.defineProperty(exports2, "urlencoded", { configurable: true, enumerable: true, get: createParserGetter("urlencoded") }); function bodyParser(options) { var opts = Object.create(options || null, { type: { configurable: true, enumerable: true, value: void 0, writable: true } }); var _urlencoded = exports2.urlencoded(opts); var _json = exports2.json(opts); return function bodyParser2(req, res, next) { _json(req, res, function(err) { if (err) return next(err); _urlencoded(req, res, next); }); }; } function createParserGetter(name) { return function get() { return loadParser(name); }; } function loadParser(parserName) { var parser = parsers[parserName]; if (parser !== void 0) { return parser; } switch (parserName) { case "json": parser = require_json(); break; case "raw": parser = require_raw(); break; case "text": parser = require_text(); break; case "urlencoded": parser = require_urlencoded(); break; } return parsers[parserName] = parser; } } }); // ../backend/node_modules/merge-descriptors/index.js var require_merge_descriptors = __commonJS({ "../backend/node_modules/merge-descriptors/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = merge; var hasOwnProperty = Object.prototype.hasOwnProperty; function merge(dest, src, redefine) { if (!dest) { throw new TypeError("argument dest is required"); } if (!src) { throw new TypeError("argument src is required"); } if (redefine === void 0) { redefine = true; } Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { if (!redefine && hasOwnProperty.call(dest, name)) { return; } var descriptor = Object.getOwnPropertyDescriptor(src, name); Object.defineProperty(dest, name, descriptor); }); return dest; } } }); // ../backend/node_modules/encodeurl/index.js var require_encodeurl = __commonJS({ "../backend/node_modules/encodeurl/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = encodeUrl; var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g; var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g; var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1\uFFFD$2"; function encodeUrl(url) { return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI); } } }); // ../backend/node_modules/escape-html/index.js var require_escape_html = __commonJS({ "../backend/node_modules/escape-html/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var matchHtmlRegExp = /["'&<>]/; module2.exports = escapeHtml; function escapeHtml(string) { var str = "" + string; var match = matchHtmlRegExp.exec(str); if (!match) { return str; } var escape3; var html = ""; var index2 = 0; var lastIndex = 0; for (index2 = match.index; index2 < str.length; index2++) { switch (str.charCodeAt(index2)) { case 34: escape3 = """; break; case 38: escape3 = "&"; break; case 39: escape3 = "'"; break; case 60: escape3 = "<"; break; case 62: escape3 = ">"; break; default: continue; } if (lastIndex !== index2) { html += str.substring(lastIndex, index2); } lastIndex = index2 + 1; html += escape3; } return lastIndex !== index2 ? html + str.substring(lastIndex, index2) : html; } } }); // ../backend/node_modules/parseurl/index.js var require_parseurl = __commonJS({ "../backend/node_modules/parseurl/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var url = require("url"); var parse3 = url.parse; var Url = url.Url; module2.exports = parseurl; module2.exports.original = originalurl; function parseurl(req) { var url2 = req.url; if (url2 === void 0) { return void 0; } var parsed = req._parsedUrl; if (fresh(url2, parsed)) { return parsed; } parsed = fastparse(url2); parsed._raw = url2; return req._parsedUrl = parsed; } function originalurl(req) { var url2 = req.originalUrl; if (typeof url2 !== "string") { return parseurl(req); } var parsed = req._parsedOriginalUrl; if (fresh(url2, parsed)) { return parsed; } parsed = fastparse(url2); parsed._raw = url2; return req._parsedOriginalUrl = parsed; } function fastparse(str) { if (typeof str !== "string" || str.charCodeAt(0) !== 47) { return parse3(str); } var pathname = str; var query = null; var search = null; for (var i = 1; i < str.length; i++) { switch (str.charCodeAt(i)) { case 63: if (search === null) { pathname = str.substring(0, i); query = str.substring(i + 1); search = str.substring(i); } break; case 9: /* \t */ case 10: /* \n */ case 12: /* \f */ case 13: /* \r */ case 32: /* */ case 35: /* # */ case 160: case 65279: return parse3(str); } } var url2 = Url !== void 0 ? new Url() : {}; url2.path = str; url2.href = str; url2.pathname = pathname; if (search !== null) { url2.query = query; url2.search = search; } return url2; } function fresh(url2, parsedUrl) { return typeof parsedUrl === "object" && parsedUrl !== null && (Url === void 0 || parsedUrl instanceof Url) && parsedUrl._raw === url2; } } }); // ../backend/node_modules/finalhandler/index.js var require_finalhandler = __commonJS({ "../backend/node_modules/finalhandler/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var debug = require_src()("finalhandler"); var encodeUrl = require_encodeurl(); var escapeHtml = require_escape_html(); var onFinished = require_on_finished(); var parseUrl = require_parseurl(); var statuses = require_statuses(); var unpipe = require_unpipe(); var DOUBLE_SPACE_REGEXP = /\x20{2}/g; var NEWLINE_REGEXP = /\n/g; var defer = typeof setImmediate === "function" ? setImmediate : function(fn) { process.nextTick(fn.bind.apply(fn, arguments)); }; var isFinished = onFinished.isFinished; function createHtmlDocument(message) { var body = escapeHtml(message).replace(NEWLINE_REGEXP, "
").replace(DOUBLE_SPACE_REGEXP, "  "); return '\n\n\n\nError\n\n\n
' + body + "
\n\n\n"; } module2.exports = finalhandler; function finalhandler(req, res, options) { var opts = options || {}; var env2 = opts.env || process.env.NODE_ENV || "development"; var onerror = opts.onerror; return function(err) { var headers; var msg; var status; if (!err && headersSent(res)) { debug("cannot 404 after headers sent"); return; } if (err) { status = getErrorStatusCode(err); if (status === void 0) { status = getResponseStatusCode(res); } else { headers = getErrorHeaders(err); } msg = getErrorMessage(err, status, env2); } else { status = 404; msg = "Cannot " + req.method + " " + encodeUrl(getResourceName(req)); } debug("default %s", status); if (err && onerror) { defer(onerror, err, req, res); } if (headersSent(res)) { debug("cannot %d after headers sent", status); if (req.socket) { req.socket.destroy(); } return; } send(req, res, status, headers, msg); }; } function getErrorHeaders(err) { if (!err.headers || typeof err.headers !== "object") { return void 0; } var headers = /* @__PURE__ */ Object.create(null); var keys = Object.keys(err.headers); for (var i = 0; i < keys.length; i++) { var key = keys[i]; headers[key] = err.headers[key]; } return headers; } function getErrorMessage(err, status, env2) { var msg; if (env2 !== "production") { msg = err.stack; if (!msg && typeof err.toString === "function") { msg = err.toString(); } } return msg || statuses.message[status]; } function getErrorStatusCode(err) { if (typeof err.status === "number" && err.status >= 400 && err.status < 600) { return err.status; } if (typeof err.statusCode === "number" && err.statusCode >= 400 && err.statusCode < 600) { return err.statusCode; } return void 0; } function getResourceName(req) { try { return parseUrl.original(req).pathname; } catch (e) { return "resource"; } } function getResponseStatusCode(res) { var status = res.statusCode; if (typeof status !== "number" || status < 400 || status > 599) { status = 500; } return status; } function headersSent(res) { return typeof res.headersSent !== "boolean" ? Boolean(res._header) : res.headersSent; } function send(req, res, status, headers, message) { function write() { var body = createHtmlDocument(message); res.statusCode = status; if (req.httpVersionMajor < 2) { res.statusMessage = statuses.message[status]; } res.removeHeader("Content-Encoding"); res.removeHeader("Content-Language"); res.removeHeader("Content-Range"); setHeaders(res, headers); res.setHeader("Content-Security-Policy", "default-src 'none'"); res.setHeader("X-Content-Type-Options", "nosniff"); res.setHeader("Content-Type", "text/html; charset=utf-8"); res.setHeader("Content-Length", Buffer.byteLength(body, "utf8")); if (req.method === "HEAD") { res.end(); return; } res.end(body, "utf8"); } if (isFinished(req)) { write(); return; } unpipe(req); onFinished(req, write); req.resume(); } function setHeaders(res, headers) { if (!headers) { return; } var keys = Object.keys(headers); for (var i = 0; i < keys.length; i++) { var key = keys[i]; res.setHeader(key, headers[key]); } } } }); // ../backend/node_modules/array-flatten/array-flatten.js var require_array_flatten = __commonJS({ "../backend/node_modules/array-flatten/array-flatten.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = arrayFlatten; function flattenWithDepth(array, result, depth) { for (var i = 0; i < array.length; i++) { var value = array[i]; if (depth > 0 && Array.isArray(value)) { flattenWithDepth(value, result, depth - 1); } else { result.push(value); } } return result; } function flattenForever(array, result) { for (var i = 0; i < array.length; i++) { var value = array[i]; if (Array.isArray(value)) { flattenForever(value, result); } else { result.push(value); } } return result; } function arrayFlatten(array, depth) { if (depth == null) { return flattenForever(array, []); } return flattenWithDepth(array, [], depth); } } }); // ../backend/node_modules/path-to-regexp/index.js var require_path_to_regexp = __commonJS({ "../backend/node_modules/path-to-regexp/index.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = pathToRegexp; var MATCHING_GROUP_REGEXP = /\\.|\((?:\?<(.*?)>)?(?!\?)/g; function pathToRegexp(path2, keys, options) { options = options || {}; keys = keys || []; var strict = options.strict; var end = options.end !== false; var flags = options.sensitive ? "" : "i"; var lookahead = options.lookahead !== false; var extraOffset = 0; var keysOffset = keys.length; var i = 0; var name = 0; var pos = 0; var backtrack = ""; var m; if (path2 instanceof RegExp) { while (m = MATCHING_GROUP_REGEXP.exec(path2.source)) { if (m[0][0] === "\\") continue; keys.push({ name: m[1] || name++, optional: false, offset: m.index }); } return path2; } if (Array.isArray(path2)) { path2 = path2.map(function(value) { return pathToRegexp(value, keys, options).source; }); return new RegExp(path2.join("|"), flags); } if (typeof path2 !== "string") { throw new TypeError("path must be a string, array of strings, or regular expression"); } path2 = path2.replace( /\\.|(\/)?(\.)?:(\w+)(\(.*?\))?(\*)?(\?)?|[.*]|\/\(/g, function(match, slash, format, key, capture, star, optional, offset) { if (match[0] === "\\") { backtrack += match; pos += 2; return match; } if (match === ".") { backtrack += "\\."; extraOffset += 1; pos += 1; return "\\."; } if (slash || format) { backtrack = ""; } else { backtrack += path2.slice(pos, offset); } pos = offset + match.length; if (match === "*") { backtrack = ""; extraOffset += 3; return "(.*)"; } if (match === "/(") { backtrack += "/"; extraOffset += 2; return "/(?:"; } slash = slash || ""; format = format ? "\\." : ""; optional = optional || ""; capture = capture ? capture.replace(/\\.|\*/, function(m2) { return m2 === "*" ? "(.*)" : m2; }) : backtrack ? "((?:(?!/|" + backtrack + ").)+?)" : "([^/" + format + "]+?)"; keys.push({ name: key, optional: !!optional, offset: offset + extraOffset }); var result = "(?:" + format + slash + capture + (star ? "((?:[/" + format + "].+?)?)" : "") + ")" + optional; backtrack = ""; extraOffset += result.length - match.length; return result; } ); while (m = MATCHING_GROUP_REGEXP.exec(path2)) { if (m[0][0] === "\\") continue; if (keysOffset + i === keys.length || keys[keysOffset + i].offset > m.index) { keys.splice(keysOffset + i, 0, { name: name++, // Unnamed matching groups must be consistently linear. optional: false, offset: m.index }); } i++; } path2 += strict ? "" : path2[path2.length - 1] === "/" ? "?" : "/?"; if (end) { path2 += "$"; } else if (path2[path2.length - 1] !== "/") { path2 += lookahead ? "(?=/|$)" : "(?:/|$)"; } return new RegExp("^" + path2, flags); } } }); // ../backend/node_modules/express/lib/router/layer.js var require_layer = __commonJS({ "../backend/node_modules/express/lib/router/layer.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var pathRegexp = require_path_to_regexp(); var debug = require_src()("express:router:layer"); var hasOwnProperty = Object.prototype.hasOwnProperty; module2.exports = Layer; function Layer(path2, options, fn) { if (!(this instanceof Layer)) { return new Layer(path2, options, fn); } debug("new %o", path2); var opts = options || {}; this.handle = fn; this.name = fn.name || ""; this.params = void 0; this.path = void 0; this.regexp = pathRegexp(path2, this.keys = [], opts); this.regexp.fast_star = path2 === "*"; this.regexp.fast_slash = path2 === "/" && opts.end === false; } Layer.prototype.handle_error = function handle_error(error, req, res, next) { var fn = this.handle; if (fn.length !== 4) { return next(error); } try { fn(error, req, res, next); } catch (err) { next(err); } }; Layer.prototype.handle_request = function handle2(req, res, next) { var fn = this.handle; if (fn.length > 3) { return next(); } try { fn(req, res, next); } catch (err) { next(err); } }; Layer.prototype.match = function match(path2) { var match2; if (path2 != null) { if (this.regexp.fast_slash) { this.params = {}; this.path = ""; return true; } if (this.regexp.fast_star) { this.params = { "0": decode_param(path2) }; this.path = path2; return true; } match2 = this.regexp.exec(path2); } if (!match2) { this.params = void 0; this.path = void 0; return false; } this.params = {}; this.path = match2[0]; var keys = this.keys; var params = this.params; for (var i = 1; i < match2.length; i++) { var key = keys[i - 1]; var prop = key.name; var val = decode_param(match2[i]); if (val !== void 0 || !hasOwnProperty.call(params, prop)) { params[prop] = val; } } return true; }; function decode_param(val) { if (typeof val !== "string" || val.length === 0) { return val; } try { return decodeURIComponent(val); } catch (err) { if (err instanceof URIError) { err.message = "Failed to decode param '" + val + "'"; err.status = err.statusCode = 400; } throw err; } } } }); // ../backend/node_modules/methods/index.js var require_methods = __commonJS({ "../backend/node_modules/methods/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var http = require("http"); module2.exports = getCurrentNodeMethods() || getBasicNodeMethods(); function getCurrentNodeMethods() { return http.METHODS && http.METHODS.map(function lowerCaseMethod(method) { return method.toLowerCase(); }); } function getBasicNodeMethods() { return [ "get", "post", "put", "head", "delete", "options", "trace", "copy", "lock", "mkcol", "move", "purge", "propfind", "proppatch", "unlock", "report", "mkactivity", "checkout", "merge", "m-search", "notify", "subscribe", "unsubscribe", "patch", "search", "connect" ]; } } }); // ../backend/node_modules/express/lib/router/route.js var require_route = __commonJS({ "../backend/node_modules/express/lib/router/route.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var debug = require_src()("express:router:route"); var flatten = require_array_flatten(); var Layer = require_layer(); var methods = require_methods(); var slice = Array.prototype.slice; var toString = Object.prototype.toString; module2.exports = Route; function Route(path2) { this.path = path2; this.stack = []; debug("new %o", path2); this.methods = {}; } Route.prototype._handles_method = function _handles_method(method) { if (this.methods._all) { return true; } var name = typeof method === "string" ? method.toLowerCase() : method; if (name === "head" && !this.methods["head"]) { name = "get"; } return Boolean(this.methods[name]); }; Route.prototype._options = function _options() { var methods2 = Object.keys(this.methods); if (this.methods.get && !this.methods.head) { methods2.push("head"); } for (var i = 0; i < methods2.length; i++) { methods2[i] = methods2[i].toUpperCase(); } return methods2; }; Route.prototype.dispatch = function dispatch(req, res, done) { var idx = 0; var stack = this.stack; var sync = 0; if (stack.length === 0) { return done(); } var method = typeof req.method === "string" ? req.method.toLowerCase() : req.method; if (method === "head" && !this.methods["head"]) { method = "get"; } req.route = this; next(); function next(err) { if (err && err === "route") { return done(); } if (err && err === "router") { return done(err); } if (++sync > 100) { return setImmediate(next, err); } var layer = stack[idx++]; if (!layer) { return done(err); } if (layer.method && layer.method !== method) { next(err); } else if (err) { layer.handle_error(err, req, res, next); } else { layer.handle_request(req, res, next); } sync = 0; } }; Route.prototype.all = function all() { var handles = flatten(slice.call(arguments)); for (var i = 0; i < handles.length; i++) { var handle2 = handles[i]; if (typeof handle2 !== "function") { var type = toString.call(handle2); var msg = "Route.all() requires a callback function but got a " + type; throw new TypeError(msg); } var layer = Layer("/", {}, handle2); layer.method = void 0; this.methods._all = true; this.stack.push(layer); } return this; }; methods.forEach(function(method) { Route.prototype[method] = function() { var handles = flatten(slice.call(arguments)); for (var i = 0; i < handles.length; i++) { var handle2 = handles[i]; if (typeof handle2 !== "function") { var type = toString.call(handle2); var msg = "Route." + method + "() requires a callback function but got a " + type; throw new Error(msg); } debug("%s %o", method, this.path); var layer = Layer("/", {}, handle2); layer.method = method; this.methods[method] = true; this.stack.push(layer); } return this; }; }); } }); // ../backend/node_modules/utils-merge/index.js var require_utils_merge = __commonJS({ "../backend/node_modules/utils-merge/index.js"(exports2, module2) { init_define_import_meta_env(); exports2 = module2.exports = function(a, b) { if (a && b) { for (var key in b) { a[key] = b[key]; } } return a; }; } }); // ../backend/node_modules/express/lib/router/index.js var require_router = __commonJS({ "../backend/node_modules/express/lib/router/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Route = require_route(); var Layer = require_layer(); var methods = require_methods(); var mixin = require_utils_merge(); var debug = require_src()("express:router"); var deprecate = require_depd()("express"); var flatten = require_array_flatten(); var parseUrl = require_parseurl(); var setPrototypeOf = require_setprototypeof(); var objectRegExp = /^\[object (\S+)\]$/; var slice = Array.prototype.slice; var toString = Object.prototype.toString; var proto = module2.exports = function(options) { var opts = options || {}; function router(req, res, next) { router.handle(req, res, next); } setPrototypeOf(router, proto); router.params = {}; router._params = []; router.caseSensitive = opts.caseSensitive; router.mergeParams = opts.mergeParams; router.strict = opts.strict; router.stack = []; return router; }; proto.param = function param(name, fn) { if (typeof name === "function") { deprecate("router.param(fn): Refactor to use path params"); this._params.push(name); return; } var params = this._params; var len = params.length; var ret; if (name[0] === ":") { deprecate("router.param(" + JSON.stringify(name) + ", fn): Use router.param(" + JSON.stringify(name.slice(1)) + ", fn) instead"); name = name.slice(1); } for (var i = 0; i < len; ++i) { if (ret = params[i](name, fn)) { fn = ret; } } if ("function" !== typeof fn) { throw new Error("invalid param() call for " + name + ", got " + fn); } (this.params[name] = this.params[name] || []).push(fn); return this; }; proto.handle = function handle2(req, res, out) { var self2 = this; debug("dispatching %s %s", req.method, req.url); var idx = 0; var protohost = getProtohost(req.url) || ""; var removed = ""; var slashAdded = false; var sync = 0; var paramcalled = {}; var options = []; var stack = self2.stack; var parentParams = req.params; var parentUrl = req.baseUrl || ""; var done = restore(out, req, "baseUrl", "next", "params"); req.next = next; if (req.method === "OPTIONS") { done = wrap(done, function(old, err) { if (err || options.length === 0) return old(err); sendOptionsResponse(res, options, old); }); } req.baseUrl = parentUrl; req.originalUrl = req.originalUrl || req.url; next(); function next(err) { var layerError = err === "route" ? null : err; if (slashAdded) { req.url = req.url.slice(1); slashAdded = false; } if (removed.length !== 0) { req.baseUrl = parentUrl; req.url = protohost + removed + req.url.slice(protohost.length); removed = ""; } if (layerError === "router") { setImmediate(done, null); return; } if (idx >= stack.length) { setImmediate(done, layerError); return; } if (++sync > 100) { return setImmediate(next, err); } var path2 = getPathname(req); if (path2 == null) { return done(layerError); } var layer; var match; var route; while (match !== true && idx < stack.length) { layer = stack[idx++]; match = matchLayer(layer, path2); route = layer.route; if (typeof match !== "boolean") { layerError = layerError || match; } if (match !== true) { continue; } if (!route) { continue; } if (layerError) { match = false; continue; } var method = req.method; var has_method = route._handles_method(method); if (!has_method && method === "OPTIONS") { appendMethods(options, route._options()); } if (!has_method && method !== "HEAD") { match = false; } } if (match !== true) { return done(layerError); } if (route) { req.route = route; } req.params = self2.mergeParams ? mergeParams(layer.params, parentParams) : layer.params; var layerPath = layer.path; self2.process_params(layer, paramcalled, req, res, function(err2) { if (err2) { next(layerError || err2); } else if (route) { layer.handle_request(req, res, next); } else { trim_prefix(layer, layerError, layerPath, path2); } sync = 0; }); } function trim_prefix(layer, layerError, layerPath, path2) { if (layerPath.length !== 0) { if (layerPath !== path2.slice(0, layerPath.length)) { next(layerError); return; } var c = path2[layerPath.length]; if (c && c !== "/" && c !== ".") return next(layerError); debug("trim prefix (%s) from url %s", layerPath, req.url); removed = layerPath; req.url = protohost + req.url.slice(protohost.length + removed.length); if (!protohost && req.url[0] !== "/") { req.url = "/" + req.url; slashAdded = true; } req.baseUrl = parentUrl + (removed[removed.length - 1] === "/" ? removed.substring(0, removed.length - 1) : removed); } debug("%s %s : %s", layer.name, layerPath, req.originalUrl); if (layerError) { layer.handle_error(layerError, req, res, next); } else { layer.handle_request(req, res, next); } } }; proto.process_params = function process_params(layer, called, req, res, done) { var params = this.params; var keys = layer.keys; if (!keys || keys.length === 0) { return done(); } var i = 0; var name; var paramIndex = 0; var key; var paramVal; var paramCallbacks; var paramCalled; function param(err) { if (err) { return done(err); } if (i >= keys.length) { return done(); } paramIndex = 0; key = keys[i++]; name = key.name; paramVal = req.params[name]; paramCallbacks = params[name]; paramCalled = called[name]; if (paramVal === void 0 || !paramCallbacks) { return param(); } if (paramCalled && (paramCalled.match === paramVal || paramCalled.error && paramCalled.error !== "route")) { req.params[name] = paramCalled.value; return param(paramCalled.error); } called[name] = paramCalled = { error: null, match: paramVal, value: paramVal }; paramCallback(); } function paramCallback(err) { var fn = paramCallbacks[paramIndex++]; paramCalled.value = req.params[key.name]; if (err) { paramCalled.error = err; param(err); return; } if (!fn) return param(); try { fn(req, res, paramCallback, paramVal, key.name); } catch (e) { paramCallback(e); } } param(); }; proto.use = function use(fn) { var offset = 0; var path2 = "/"; if (typeof fn !== "function") { var arg = fn; while (Array.isArray(arg) && arg.length !== 0) { arg = arg[0]; } if (typeof arg !== "function") { offset = 1; path2 = fn; } } var callbacks = flatten(slice.call(arguments, offset)); if (callbacks.length === 0) { throw new TypeError("Router.use() requires a middleware function"); } for (var i = 0; i < callbacks.length; i++) { var fn = callbacks[i]; if (typeof fn !== "function") { throw new TypeError("Router.use() requires a middleware function but got a " + gettype(fn)); } debug("use %o %s", path2, fn.name || ""); var layer = new Layer(path2, { sensitive: this.caseSensitive, strict: false, end: false }, fn); layer.route = void 0; this.stack.push(layer); } return this; }; proto.route = function route(path2) { var route2 = new Route(path2); var layer = new Layer(path2, { sensitive: this.caseSensitive, strict: this.strict, end: true }, route2.dispatch.bind(route2)); layer.route = route2; this.stack.push(layer); return route2; }; methods.concat("all").forEach(function(method) { proto[method] = function(path2) { var route = this.route(path2); route[method].apply(route, slice.call(arguments, 1)); return this; }; }); function appendMethods(list, addition) { for (var i = 0; i < addition.length; i++) { var method = addition[i]; if (list.indexOf(method) === -1) { list.push(method); } } } function getPathname(req) { try { return parseUrl(req).pathname; } catch (err) { return void 0; } } function getProtohost(url) { if (typeof url !== "string" || url.length === 0 || url[0] === "/") { return void 0; } var searchIndex = url.indexOf("?"); var pathLength = searchIndex !== -1 ? searchIndex : url.length; var fqdnIndex = url.slice(0, pathLength).indexOf("://"); return fqdnIndex !== -1 ? url.substring(0, url.indexOf("/", 3 + fqdnIndex)) : void 0; } function gettype(obj) { var type = typeof obj; if (type !== "object") { return type; } return toString.call(obj).replace(objectRegExp, "$1"); } function matchLayer(layer, path2) { try { return layer.match(path2); } catch (err) { return err; } } function mergeParams(params, parent) { if (typeof parent !== "object" || !parent) { return params; } var obj = mixin({}, parent); if (!(0 in params) || !(0 in parent)) { return mixin(obj, params); } var i = 0; var o = 0; while (i in params) { i++; } while (o in parent) { o++; } for (i--; i >= 0; i--) { params[i + o] = params[i]; if (i < o) { delete params[i]; } } return mixin(obj, params); } function restore(fn, obj) { var props = new Array(arguments.length - 2); var vals = new Array(arguments.length - 2); for (var i = 0; i < props.length; i++) { props[i] = arguments[i + 2]; vals[i] = obj[props[i]]; } return function() { for (var i2 = 0; i2 < props.length; i2++) { obj[props[i2]] = vals[i2]; } return fn.apply(this, arguments); }; } function sendOptionsResponse(res, options, next) { try { var body = options.join(","); res.set("Allow", body); res.send(body); } catch (err) { next(err); } } function wrap(old, fn) { return function proxy() { var args = new Array(arguments.length + 1); args[0] = old; for (var i = 0, len = arguments.length; i < len; i++) { args[i + 1] = arguments[i]; } fn.apply(this, args); }; } } }); // ../backend/node_modules/express/lib/middleware/init.js var require_init = __commonJS({ "../backend/node_modules/express/lib/middleware/init.js"(exports2) { "use strict"; init_define_import_meta_env(); var setPrototypeOf = require_setprototypeof(); exports2.init = function(app2) { return function expressInit(req, res, next) { if (app2.enabled("x-powered-by")) res.setHeader("X-Powered-By", "Express"); req.res = res; res.req = req; req.next = next; setPrototypeOf(req, app2.request); setPrototypeOf(res, app2.response); res.locals = res.locals || /* @__PURE__ */ Object.create(null); next(); }; }; } }); // ../backend/node_modules/qs/lib/formats.js var require_formats2 = __commonJS({ "../backend/node_modules/qs/lib/formats.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var replace = String.prototype.replace; var percentTwenties = /%20/g; var Format = { RFC1738: "RFC1738", RFC3986: "RFC3986" }; module2.exports = { "default": Format.RFC3986, formatters: { RFC1738: function(value) { return replace.call(value, percentTwenties, "+"); }, RFC3986: function(value) { return String(value); } }, RFC1738: Format.RFC1738, RFC3986: Format.RFC3986 }; } }); // ../backend/node_modules/qs/lib/utils.js var require_utils2 = __commonJS({ "../backend/node_modules/qs/lib/utils.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var formats = require_formats2(); var getSideChannel = require_side_channel(); var has = Object.prototype.hasOwnProperty; var isArray = Array.isArray; var overflowChannel = getSideChannel(); var markOverflow = function markOverflow2(obj, maxIndex) { overflowChannel.set(obj, maxIndex); return obj; }; var isOverflow = function isOverflow2(obj) { return overflowChannel.has(obj); }; var getMaxIndex = function getMaxIndex2(obj) { return overflowChannel.get(obj); }; var setMaxIndex = function setMaxIndex2(obj, maxIndex) { overflowChannel.set(obj, maxIndex); }; var hexTable = (function() { var array = []; for (var i = 0; i < 256; ++i) { array[array.length] = "%" + ((i < 16 ? "0" : "") + i.toString(16)).toUpperCase(); } return array; })(); var compactQueue = function compactQueue2(queue) { while (queue.length > 1) { var item = queue.pop(); var obj = item.obj[item.prop]; if (isArray(obj)) { var compacted = []; for (var j = 0; j < obj.length; ++j) { if (typeof obj[j] !== "undefined") { compacted[compacted.length] = obj[j]; } } item.obj[item.prop] = compacted; } } }; var arrayToObject = function arrayToObject2(source, options) { var obj = options && options.plainObjects ? { __proto__: null } : {}; for (var i = 0; i < source.length; ++i) { if (typeof source[i] !== "undefined") { obj[i] = source[i]; } } return obj; }; var merge = function merge2(target, source, options) { if (!source) { return target; } if (typeof source !== "object" && typeof source !== "function") { if (isArray(target)) { var nextIndex = target.length; if (options && typeof options.arrayLimit === "number" && nextIndex > options.arrayLimit) { return markOverflow(arrayToObject(target.concat(source), options), nextIndex); } target[nextIndex] = source; } else if (target && typeof target === "object") { if (isOverflow(target)) { var newIndex = getMaxIndex(target) + 1; target[newIndex] = source; setMaxIndex(target, newIndex); } else if (options && (options.plainObjects || options.allowPrototypes) || !has.call(Object.prototype, source)) { target[source] = true; } } else { return [target, source]; } return target; } if (!target || typeof target !== "object") { if (isOverflow(source)) { var sourceKeys = Object.keys(source); var result = options && options.plainObjects ? { __proto__: null, 0: target } : { 0: target }; for (var m = 0; m < sourceKeys.length; m++) { var oldKey = parseInt(sourceKeys[m], 10); result[oldKey + 1] = source[sourceKeys[m]]; } return markOverflow(result, getMaxIndex(source) + 1); } var combined = [target].concat(source); if (options && typeof options.arrayLimit === "number" && combined.length > options.arrayLimit) { return markOverflow(arrayToObject(combined, options), combined.length - 1); } return combined; } var mergeTarget = target; if (isArray(target) && !isArray(source)) { mergeTarget = arrayToObject(target, options); } if (isArray(target) && isArray(source)) { source.forEach(function(item, i) { if (has.call(target, i)) { var targetItem = target[i]; if (targetItem && typeof targetItem === "object" && item && typeof item === "object") { target[i] = merge2(targetItem, item, options); } else { target[target.length] = item; } } else { target[i] = item; } }); return target; } return Object.keys(source).reduce(function(acc, key) { var value = source[key]; if (has.call(acc, key)) { acc[key] = merge2(acc[key], value, options); } else { acc[key] = value; } if (isOverflow(source) && !isOverflow(acc)) { markOverflow(acc, getMaxIndex(source)); } if (isOverflow(acc)) { var keyNum = parseInt(key, 10); if (String(keyNum) === key && keyNum >= 0 && keyNum > getMaxIndex(acc)) { setMaxIndex(acc, keyNum); } } return acc; }, mergeTarget); }; var assign = function assignSingleSource(target, source) { return Object.keys(source).reduce(function(acc, key) { acc[key] = source[key]; return acc; }, target); }; var decode = function(str, defaultDecoder, charset) { var strWithoutPlus = str.replace(/\+/g, " "); if (charset === "iso-8859-1") { return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape); } try { return decodeURIComponent(strWithoutPlus); } catch (e) { return strWithoutPlus; } }; var limit = 1024; var encode = function encode2(str, defaultEncoder, charset, kind, format) { if (str.length === 0) { return str; } var string = str; if (typeof str === "symbol") { string = Symbol.prototype.toString.call(str); } else if (typeof str !== "string") { string = String(str); } if (charset === "iso-8859-1") { return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) { return "%26%23" + parseInt($0.slice(2), 16) + "%3B"; }); } var out = ""; for (var j = 0; j < string.length; j += limit) { var segment = string.length >= limit ? string.slice(j, j + limit) : string; var arr = []; for (var i = 0; i < segment.length; ++i) { var c = segment.charCodeAt(i); if (c === 45 || c === 46 || c === 95 || c === 126 || c >= 48 && c <= 57 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || format === formats.RFC1738 && (c === 40 || c === 41)) { arr[arr.length] = segment.charAt(i); continue; } if (c < 128) { arr[arr.length] = hexTable[c]; continue; } if (c < 2048) { arr[arr.length] = hexTable[192 | c >> 6] + hexTable[128 | c & 63]; continue; } if (c < 55296 || c >= 57344) { arr[arr.length] = hexTable[224 | c >> 12] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; continue; } i += 1; c = 65536 + ((c & 1023) << 10 | segment.charCodeAt(i) & 1023); arr[arr.length] = hexTable[240 | c >> 18] + hexTable[128 | c >> 12 & 63] + hexTable[128 | c >> 6 & 63] + hexTable[128 | c & 63]; } out += arr.join(""); } return out; }; var compact = function compact2(value) { var queue = [{ obj: { o: value }, prop: "o" }]; var refs = []; for (var i = 0; i < queue.length; ++i) { var item = queue[i]; var obj = item.obj[item.prop]; var keys = Object.keys(obj); for (var j = 0; j < keys.length; ++j) { var key = keys[j]; var val = obj[key]; if (typeof val === "object" && val !== null && refs.indexOf(val) === -1) { queue[queue.length] = { obj, prop: key }; refs[refs.length] = val; } } } compactQueue(queue); return value; }; var isRegExp = function isRegExp2(obj) { return Object.prototype.toString.call(obj) === "[object RegExp]"; }; var isBuffer = function isBuffer2(obj) { if (!obj || typeof obj !== "object") { return false; } return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj)); }; var combine = function combine2(a, b, arrayLimit, plainObjects) { if (isOverflow(a)) { var newIndex = getMaxIndex(a) + 1; a[newIndex] = b; setMaxIndex(a, newIndex); return a; } var result = [].concat(a, b); if (result.length > arrayLimit) { return markOverflow(arrayToObject(result, { plainObjects }), result.length - 1); } return result; }; var maybeMap = function maybeMap2(val, fn) { if (isArray(val)) { var mapped = []; for (var i = 0; i < val.length; i += 1) { mapped[mapped.length] = fn(val[i]); } return mapped; } return fn(val); }; module2.exports = { arrayToObject, assign, combine, compact, decode, encode, isBuffer, isOverflow, isRegExp, markOverflow, maybeMap, merge }; } }); // ../backend/node_modules/qs/lib/stringify.js var require_stringify2 = __commonJS({ "../backend/node_modules/qs/lib/stringify.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var getSideChannel = require_side_channel(); var utils = require_utils2(); var formats = require_formats2(); var has = Object.prototype.hasOwnProperty; var arrayPrefixGenerators = { brackets: function brackets(prefix) { return prefix + "[]"; }, comma: "comma", indices: function indices(prefix, key) { return prefix + "[" + key + "]"; }, repeat: function repeat(prefix) { return prefix; } }; var isArray = Array.isArray; var push = Array.prototype.push; var pushToArray = function(arr, valueOrArray) { push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]); }; var toISO = Date.prototype.toISOString; var defaultFormat = formats["default"]; var defaults = { addQueryPrefix: false, allowDots: false, allowEmptyArrays: false, arrayFormat: "indices", charset: "utf-8", charsetSentinel: false, commaRoundTrip: false, delimiter: "&", encode: true, encodeDotInKeys: false, encoder: utils.encode, encodeValuesOnly: false, filter: void 0, format: defaultFormat, formatter: formats.formatters[defaultFormat], // deprecated indices: false, serializeDate: function serializeDate(date) { return toISO.call(date); }, skipNulls: false, strictNullHandling: false }; var isNonNullishPrimitive = function isNonNullishPrimitive2(v) { return typeof v === "string" || typeof v === "number" || typeof v === "boolean" || typeof v === "symbol" || typeof v === "bigint"; }; var sentinel = {}; var stringify = function stringify2(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder2, filter2, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) { var obj = object; var tmpSc = sideChannel; var step = 0; var findFlag = false; while ((tmpSc = tmpSc.get(sentinel)) !== void 0 && !findFlag) { var pos = tmpSc.get(object); step += 1; if (typeof pos !== "undefined") { if (pos === step) { throw new RangeError("Cyclic object value"); } else { findFlag = true; } } if (typeof tmpSc.get(sentinel) === "undefined") { step = 0; } } if (typeof filter2 === "function") { obj = filter2(prefix, obj); } else if (obj instanceof Date) { obj = serializeDate(obj); } else if (generateArrayPrefix === "comma" && isArray(obj)) { obj = utils.maybeMap(obj, function(value2) { if (value2 instanceof Date) { return serializeDate(value2); } return value2; }); } if (obj === null) { if (strictNullHandling) { return encoder2 && !encodeValuesOnly ? encoder2(prefix, defaults.encoder, charset, "key", format) : prefix; } obj = ""; } if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) { if (encoder2) { var keyValue = encodeValuesOnly ? prefix : encoder2(prefix, defaults.encoder, charset, "key", format); return [formatter(keyValue) + "=" + formatter(encoder2(obj, defaults.encoder, charset, "value", format))]; } return [formatter(prefix) + "=" + formatter(String(obj))]; } var values = []; if (typeof obj === "undefined") { return values; } var objKeys; if (generateArrayPrefix === "comma" && isArray(obj)) { if (encodeValuesOnly && encoder2) { obj = utils.maybeMap(obj, encoder2); } objKeys = [{ value: obj.length > 0 ? obj.join(",") || null : void 0 }]; } else if (isArray(filter2)) { objKeys = filter2; } else { var keys = Object.keys(obj); objKeys = sort ? keys.sort(sort) : keys; } var encodedPrefix = encodeDotInKeys ? String(prefix).replace(/\./g, "%2E") : String(prefix); var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + "[]" : encodedPrefix; if (allowEmptyArrays && isArray(obj) && obj.length === 0) { return adjustedPrefix + "[]"; } for (var j = 0; j < objKeys.length; ++j) { var key = objKeys[j]; var value = typeof key === "object" && key && typeof key.value !== "undefined" ? key.value : obj[key]; if (skipNulls && value === null) { continue; } var encodedKey = allowDots && encodeDotInKeys ? String(key).replace(/\./g, "%2E") : String(key); var keyPrefix = isArray(obj) ? typeof generateArrayPrefix === "function" ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix : adjustedPrefix + (allowDots ? "." + encodedKey : "[" + encodedKey + "]"); sideChannel.set(object, step); var valueSideChannel = getSideChannel(); valueSideChannel.set(sentinel, sideChannel); pushToArray(values, stringify2( value, keyPrefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, generateArrayPrefix === "comma" && encodeValuesOnly && isArray(obj) ? null : encoder2, filter2, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel )); } return values; }; var normalizeStringifyOptions = function normalizeStringifyOptions2(opts) { if (!opts) { return defaults; } if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); } if (typeof opts.encodeDotInKeys !== "undefined" && typeof opts.encodeDotInKeys !== "boolean") { throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided"); } if (opts.encoder !== null && typeof opts.encoder !== "undefined" && typeof opts.encoder !== "function") { throw new TypeError("Encoder has to be a function."); } var charset = opts.charset || defaults.charset; if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); } var format = formats["default"]; if (typeof opts.format !== "undefined") { if (!has.call(formats.formatters, opts.format)) { throw new TypeError("Unknown format option provided."); } format = opts.format; } var formatter = formats.formatters[format]; var filter2 = defaults.filter; if (typeof opts.filter === "function" || isArray(opts.filter)) { filter2 = opts.filter; } var arrayFormat; if (opts.arrayFormat in arrayPrefixGenerators) { arrayFormat = opts.arrayFormat; } else if ("indices" in opts) { arrayFormat = opts.indices ? "indices" : "repeat"; } else { arrayFormat = defaults.arrayFormat; } if ("commaRoundTrip" in opts && typeof opts.commaRoundTrip !== "boolean") { throw new TypeError("`commaRoundTrip` must be a boolean, or absent"); } var allowDots = typeof opts.allowDots === "undefined" ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; return { addQueryPrefix: typeof opts.addQueryPrefix === "boolean" ? opts.addQueryPrefix : defaults.addQueryPrefix, allowDots, allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, arrayFormat, charset, charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, commaRoundTrip: !!opts.commaRoundTrip, delimiter: typeof opts.delimiter === "undefined" ? defaults.delimiter : opts.delimiter, encode: typeof opts.encode === "boolean" ? opts.encode : defaults.encode, encodeDotInKeys: typeof opts.encodeDotInKeys === "boolean" ? opts.encodeDotInKeys : defaults.encodeDotInKeys, encoder: typeof opts.encoder === "function" ? opts.encoder : defaults.encoder, encodeValuesOnly: typeof opts.encodeValuesOnly === "boolean" ? opts.encodeValuesOnly : defaults.encodeValuesOnly, filter: filter2, format, formatter, serializeDate: typeof opts.serializeDate === "function" ? opts.serializeDate : defaults.serializeDate, skipNulls: typeof opts.skipNulls === "boolean" ? opts.skipNulls : defaults.skipNulls, sort: typeof opts.sort === "function" ? opts.sort : null, strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling }; }; module2.exports = function(object, opts) { var obj = object; var options = normalizeStringifyOptions(opts); var objKeys; var filter2; if (typeof options.filter === "function") { filter2 = options.filter; obj = filter2("", obj); } else if (isArray(options.filter)) { filter2 = options.filter; objKeys = filter2; } var keys = []; if (typeof obj !== "object" || obj === null) { return ""; } var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat]; var commaRoundTrip = generateArrayPrefix === "comma" && options.commaRoundTrip; if (!objKeys) { objKeys = Object.keys(obj); } if (options.sort) { objKeys.sort(options.sort); } var sideChannel = getSideChannel(); for (var i = 0; i < objKeys.length; ++i) { var key = objKeys[i]; var value = obj[key]; if (options.skipNulls && value === null) { continue; } pushToArray(keys, stringify( value, key, generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel )); } var joined = keys.join(options.delimiter); var prefix = options.addQueryPrefix === true ? "?" : ""; if (options.charsetSentinel) { if (options.charset === "iso-8859-1") { prefix += "utf8=%26%2310003%3B&"; } else { prefix += "utf8=%E2%9C%93&"; } } return joined.length > 0 ? prefix + joined : ""; }; } }); // ../backend/node_modules/qs/lib/parse.js var require_parse2 = __commonJS({ "../backend/node_modules/qs/lib/parse.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var utils = require_utils2(); var has = Object.prototype.hasOwnProperty; var isArray = Array.isArray; var defaults = { allowDots: false, allowEmptyArrays: false, allowPrototypes: false, allowSparse: false, arrayLimit: 20, charset: "utf-8", charsetSentinel: false, comma: false, decodeDotInKeys: false, decoder: utils.decode, delimiter: "&", depth: 5, duplicates: "combine", ignoreQueryPrefix: false, interpretNumericEntities: false, parameterLimit: 1e3, parseArrays: true, plainObjects: false, strictDepth: false, strictNullHandling: false, throwOnLimitExceeded: false }; var interpretNumericEntities = function(str) { return str.replace(/&#(\d+);/g, function($0, numberStr) { return String.fromCharCode(parseInt(numberStr, 10)); }); }; var parseArrayValue = function(val, options, currentArrayLength) { if (val && typeof val === "string" && options.comma && val.indexOf(",") > -1) { return val.split(","); } if (options.throwOnLimitExceeded && currentArrayLength >= options.arrayLimit) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } return val; }; var isoSentinel = "utf8=%26%2310003%3B"; var charsetSentinel = "utf8=%E2%9C%93"; var parseValues = function parseQueryStringValues(str, options) { var obj = { __proto__: null }; var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\?/, "") : str; cleanStr = cleanStr.replace(/%5B/gi, "[").replace(/%5D/gi, "]"); var limit = options.parameterLimit === Infinity ? void 0 : options.parameterLimit; var parts = cleanStr.split( options.delimiter, options.throwOnLimitExceeded ? limit + 1 : limit ); if (options.throwOnLimitExceeded && parts.length > limit) { throw new RangeError("Parameter limit exceeded. Only " + limit + " parameter" + (limit === 1 ? "" : "s") + " allowed."); } var skipIndex = -1; var i; var charset = options.charset; if (options.charsetSentinel) { for (i = 0; i < parts.length; ++i) { if (parts[i].indexOf("utf8=") === 0) { if (parts[i] === charsetSentinel) { charset = "utf-8"; } else if (parts[i] === isoSentinel) { charset = "iso-8859-1"; } skipIndex = i; i = parts.length; } } } for (i = 0; i < parts.length; ++i) { if (i === skipIndex) { continue; } var part = parts[i]; var bracketEqualsPos = part.indexOf("]="); var pos = bracketEqualsPos === -1 ? part.indexOf("=") : bracketEqualsPos + 1; var key; var val; if (pos === -1) { key = options.decoder(part, defaults.decoder, charset, "key"); val = options.strictNullHandling ? null : ""; } else { key = options.decoder(part.slice(0, pos), defaults.decoder, charset, "key"); if (key !== null) { val = utils.maybeMap( parseArrayValue( part.slice(pos + 1), options, isArray(obj[key]) ? obj[key].length : 0 ), function(encodedVal) { return options.decoder(encodedVal, defaults.decoder, charset, "value"); } ); } } if (val && options.interpretNumericEntities && charset === "iso-8859-1") { val = interpretNumericEntities(String(val)); } if (part.indexOf("[]=") > -1) { val = isArray(val) ? [val] : val; } if (options.comma && isArray(val) && val.length > options.arrayLimit) { if (options.throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } val = utils.combine([], val, options.arrayLimit, options.plainObjects); } if (key !== null) { var existing = has.call(obj, key); if (existing && options.duplicates === "combine") { obj[key] = utils.combine( obj[key], val, options.arrayLimit, options.plainObjects ); } else if (!existing || options.duplicates === "last") { obj[key] = val; } } } return obj; }; var parseObject = function(chain, val, options, valuesParsed) { var currentArrayLength = 0; if (chain.length > 0 && chain[chain.length - 1] === "[]") { var parentKey = chain.slice(0, -1).join(""); currentArrayLength = Array.isArray(val) && val[parentKey] ? val[parentKey].length : 0; } var leaf = valuesParsed ? val : parseArrayValue(val, options, currentArrayLength); for (var i = chain.length - 1; i >= 0; --i) { var obj; var root = chain[i]; if (root === "[]" && options.parseArrays) { if (utils.isOverflow(leaf)) { obj = leaf; } else { obj = options.allowEmptyArrays && (leaf === "" || options.strictNullHandling && leaf === null) ? [] : utils.combine( [], leaf, options.arrayLimit, options.plainObjects ); } } else { obj = options.plainObjects ? { __proto__: null } : {}; var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root; var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, ".") : cleanRoot; var index2 = parseInt(decodedRoot, 10); var isValidArrayIndex = !isNaN(index2) && root !== decodedRoot && String(index2) === decodedRoot && index2 >= 0 && options.parseArrays; if (!options.parseArrays && decodedRoot === "") { obj = { 0: leaf }; } else if (isValidArrayIndex && index2 < options.arrayLimit) { obj = []; obj[index2] = leaf; } else if (isValidArrayIndex && options.throwOnLimitExceeded) { throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array."); } else if (isValidArrayIndex) { obj[index2] = leaf; utils.markOverflow(obj, index2); } else if (decodedRoot !== "__proto__") { obj[decodedRoot] = leaf; } } leaf = obj; } return leaf; }; var splitKeyIntoSegments = function splitKeyIntoSegments2(givenKey, options) { var key = options.allowDots ? givenKey.replace(/\.([^.[]+)/g, "[$1]") : givenKey; if (options.depth <= 0) { if (!options.plainObjects && has.call(Object.prototype, key)) { if (!options.allowPrototypes) { return; } } return [key]; } var brackets = /(\[[^[\]]*])/; var child = /(\[[^[\]]*])/g; var segment = brackets.exec(key); var parent = segment ? key.slice(0, segment.index) : key; var keys = []; if (parent) { if (!options.plainObjects && has.call(Object.prototype, parent)) { if (!options.allowPrototypes) { return; } } keys[keys.length] = parent; } var i = 0; while ((segment = child.exec(key)) !== null && i < options.depth) { i += 1; var segmentContent = segment[1].slice(1, -1); if (!options.plainObjects && has.call(Object.prototype, segmentContent)) { if (!options.allowPrototypes) { return; } } keys[keys.length] = segment[1]; } if (segment) { if (options.strictDepth === true) { throw new RangeError("Input depth exceeded depth option of " + options.depth + " and strictDepth is true"); } keys[keys.length] = "[" + key.slice(segment.index) + "]"; } return keys; }; var parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) { if (!givenKey) { return; } var keys = splitKeyIntoSegments(givenKey, options); if (!keys) { return; } return parseObject(keys, val, options, valuesParsed); }; var normalizeParseOptions = function normalizeParseOptions2(opts) { if (!opts) { return defaults; } if (typeof opts.allowEmptyArrays !== "undefined" && typeof opts.allowEmptyArrays !== "boolean") { throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided"); } if (typeof opts.decodeDotInKeys !== "undefined" && typeof opts.decodeDotInKeys !== "boolean") { throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided"); } if (opts.decoder !== null && typeof opts.decoder !== "undefined" && typeof opts.decoder !== "function") { throw new TypeError("Decoder has to be a function."); } if (typeof opts.charset !== "undefined" && opts.charset !== "utf-8" && opts.charset !== "iso-8859-1") { throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined"); } if (typeof opts.throwOnLimitExceeded !== "undefined" && typeof opts.throwOnLimitExceeded !== "boolean") { throw new TypeError("`throwOnLimitExceeded` option must be a boolean"); } var charset = typeof opts.charset === "undefined" ? defaults.charset : opts.charset; var duplicates = typeof opts.duplicates === "undefined" ? defaults.duplicates : opts.duplicates; if (duplicates !== "combine" && duplicates !== "first" && duplicates !== "last") { throw new TypeError("The duplicates option must be either combine, first, or last"); } var allowDots = typeof opts.allowDots === "undefined" ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots; return { allowDots, allowEmptyArrays: typeof opts.allowEmptyArrays === "boolean" ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays, allowPrototypes: typeof opts.allowPrototypes === "boolean" ? opts.allowPrototypes : defaults.allowPrototypes, allowSparse: typeof opts.allowSparse === "boolean" ? opts.allowSparse : defaults.allowSparse, arrayLimit: typeof opts.arrayLimit === "number" ? opts.arrayLimit : defaults.arrayLimit, charset, charsetSentinel: typeof opts.charsetSentinel === "boolean" ? opts.charsetSentinel : defaults.charsetSentinel, comma: typeof opts.comma === "boolean" ? opts.comma : defaults.comma, decodeDotInKeys: typeof opts.decodeDotInKeys === "boolean" ? opts.decodeDotInKeys : defaults.decodeDotInKeys, decoder: typeof opts.decoder === "function" ? opts.decoder : defaults.decoder, delimiter: typeof opts.delimiter === "string" || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter, // eslint-disable-next-line no-implicit-coercion, no-extra-parens depth: typeof opts.depth === "number" || opts.depth === false ? +opts.depth : defaults.depth, duplicates, ignoreQueryPrefix: opts.ignoreQueryPrefix === true, interpretNumericEntities: typeof opts.interpretNumericEntities === "boolean" ? opts.interpretNumericEntities : defaults.interpretNumericEntities, parameterLimit: typeof opts.parameterLimit === "number" ? opts.parameterLimit : defaults.parameterLimit, parseArrays: opts.parseArrays !== false, plainObjects: typeof opts.plainObjects === "boolean" ? opts.plainObjects : defaults.plainObjects, strictDepth: typeof opts.strictDepth === "boolean" ? !!opts.strictDepth : defaults.strictDepth, strictNullHandling: typeof opts.strictNullHandling === "boolean" ? opts.strictNullHandling : defaults.strictNullHandling, throwOnLimitExceeded: typeof opts.throwOnLimitExceeded === "boolean" ? opts.throwOnLimitExceeded : false }; }; module2.exports = function(str, opts) { var options = normalizeParseOptions(opts); if (str === "" || str === null || typeof str === "undefined") { return options.plainObjects ? { __proto__: null } : {}; } var tempObj = typeof str === "string" ? parseValues(str, options) : str; var obj = options.plainObjects ? { __proto__: null } : {}; var keys = Object.keys(tempObj); for (var i = 0; i < keys.length; ++i) { var key = keys[i]; var newObj = parseKeys(key, tempObj[key], options, typeof str === "string"); obj = utils.merge(obj, newObj, options); } if (options.allowSparse === true) { return obj; } return utils.compact(obj); }; } }); // ../backend/node_modules/qs/lib/index.js var require_lib4 = __commonJS({ "../backend/node_modules/qs/lib/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var stringify = require_stringify2(); var parse3 = require_parse2(); var formats = require_formats2(); module2.exports = { formats, parse: parse3, stringify }; } }); // ../backend/node_modules/express/lib/middleware/query.js var require_query = __commonJS({ "../backend/node_modules/express/lib/middleware/query.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var merge = require_utils_merge(); var parseUrl = require_parseurl(); var qs = require_lib4(); module2.exports = function query(options) { var opts = merge({}, options); var queryparse = qs.parse; if (typeof options === "function") { queryparse = options; opts = void 0; } if (opts !== void 0 && opts.allowPrototypes === void 0) { opts.allowPrototypes = true; } return function query2(req, res, next) { if (!req.query) { var val = parseUrl(req).query; req.query = queryparse(val, opts); } next(); }; }; } }); // ../backend/node_modules/express/lib/view.js var require_view = __commonJS({ "../backend/node_modules/express/lib/view.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var debug = require_src()("express:view"); var path2 = require("path"); var fs = require("fs"); var dirname = path2.dirname; var basename = path2.basename; var extname = path2.extname; var join = path2.join; var resolve = path2.resolve; module2.exports = View; function View(name, options) { var opts = options || {}; this.defaultEngine = opts.defaultEngine; this.ext = extname(name); this.name = name; this.root = opts.root; if (!this.ext && !this.defaultEngine) { throw new Error("No default engine was specified and no extension was provided."); } var fileName = name; if (!this.ext) { this.ext = this.defaultEngine[0] !== "." ? "." + this.defaultEngine : this.defaultEngine; fileName += this.ext; } if (!opts.engines[this.ext]) { var mod = this.ext.slice(1); debug('require "%s"', mod); var fn = require(mod).__express; if (typeof fn !== "function") { throw new Error('Module "' + mod + '" does not provide a view engine.'); } opts.engines[this.ext] = fn; } this.engine = opts.engines[this.ext]; this.path = this.lookup(fileName); } View.prototype.lookup = function lookup(name) { var path3; var roots = [].concat(this.root); debug('lookup "%s"', name); for (var i = 0; i < roots.length && !path3; i++) { var root = roots[i]; var loc = resolve(root, name); var dir = dirname(loc); var file = basename(loc); path3 = this.resolve(dir, file); } return path3; }; View.prototype.render = function render2(options, callback) { debug('render "%s"', this.path); this.engine(this.path, options, callback); }; View.prototype.resolve = function resolve2(dir, file) { var ext = this.ext; var path3 = join(dir, file); var stat = tryStat(path3); if (stat && stat.isFile()) { return path3; } path3 = join(dir, basename(file, ext), "index" + ext); stat = tryStat(path3); if (stat && stat.isFile()) { return path3; } }; function tryStat(path3) { debug('stat "%s"', path3); try { return fs.statSync(path3); } catch (e) { return void 0; } } } }); // ../backend/node_modules/safe-buffer/index.js var require_safe_buffer = __commonJS({ "../backend/node_modules/safe-buffer/index.js"(exports2, module2) { init_define_import_meta_env(); var buffer = require("buffer"); var Buffer2 = buffer.Buffer; function copyProps(src, dst) { for (var key in src) { dst[key] = src[key]; } } if (Buffer2.from && Buffer2.alloc && Buffer2.allocUnsafe && Buffer2.allocUnsafeSlow) { module2.exports = buffer; } else { copyProps(buffer, exports2); exports2.Buffer = SafeBuffer; } function SafeBuffer(arg, encodingOrOffset, length) { return Buffer2(arg, encodingOrOffset, length); } SafeBuffer.prototype = Object.create(Buffer2.prototype); copyProps(Buffer2, SafeBuffer); SafeBuffer.from = function(arg, encodingOrOffset, length) { if (typeof arg === "number") { throw new TypeError("Argument must not be a number"); } return Buffer2(arg, encodingOrOffset, length); }; SafeBuffer.alloc = function(size, fill, encoding) { if (typeof size !== "number") { throw new TypeError("Argument must be a number"); } var buf = Buffer2(size); if (fill !== void 0) { if (typeof encoding === "string") { buf.fill(fill, encoding); } else { buf.fill(fill); } } else { buf.fill(0); } return buf; }; SafeBuffer.allocUnsafe = function(size) { if (typeof size !== "number") { throw new TypeError("Argument must be a number"); } return Buffer2(size); }; SafeBuffer.allocUnsafeSlow = function(size) { if (typeof size !== "number") { throw new TypeError("Argument must be a number"); } return buffer.SlowBuffer(size); }; } }); // ../backend/node_modules/content-disposition/index.js var require_content_disposition = __commonJS({ "../backend/node_modules/content-disposition/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = contentDisposition; module2.exports.parse = parse3; var basename = require("path").basename; var Buffer2 = require_safe_buffer().Buffer; var ENCODE_URL_ATTR_CHAR_REGEXP = /[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g; var HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/; var HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g; var NON_LATIN1_REGEXP = /[^\x20-\x7e\xa0-\xff]/g; var QESC_REGEXP = /\\([\u0000-\u007f])/g; var QUOTE_REGEXP = /([\\"])/g; var PARAM_REGEXP = /;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g; var TEXT_REGEXP = /^[\x20-\x7e\x80-\xff]+$/; var TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/; var EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/; var DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/; function contentDisposition(filename, options) { var opts = options || {}; var type = opts.type || "attachment"; var params = createparams(filename, opts.fallback); return format(new ContentDisposition(type, params)); } function createparams(filename, fallback) { if (filename === void 0) { return; } var params = {}; if (typeof filename !== "string") { throw new TypeError("filename must be a string"); } if (fallback === void 0) { fallback = true; } if (typeof fallback !== "string" && typeof fallback !== "boolean") { throw new TypeError("fallback must be a string or boolean"); } if (typeof fallback === "string" && NON_LATIN1_REGEXP.test(fallback)) { throw new TypeError("fallback must be ISO-8859-1 string"); } var name = basename(filename); var isQuotedString = TEXT_REGEXP.test(name); var fallbackName = typeof fallback !== "string" ? fallback && getlatin1(name) : basename(fallback); var hasFallback = typeof fallbackName === "string" && fallbackName !== name; if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) { params["filename*"] = name; } if (isQuotedString || hasFallback) { params.filename = hasFallback ? fallbackName : name; } return params; } function format(obj) { var parameters = obj.parameters; var type = obj.type; if (!type || typeof type !== "string" || !TOKEN_REGEXP.test(type)) { throw new TypeError("invalid type"); } var string = String(type).toLowerCase(); if (parameters && typeof parameters === "object") { var param; var params = Object.keys(parameters).sort(); for (var i = 0; i < params.length; i++) { param = params[i]; var val = param.substr(-1) === "*" ? ustring(parameters[param]) : qstring(parameters[param]); string += "; " + param + "=" + val; } } return string; } function decodefield(str) { var match = EXT_VALUE_REGEXP.exec(str); if (!match) { throw new TypeError("invalid extended field value"); } var charset = match[1].toLowerCase(); var encoded = match[2]; var value; var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode); switch (charset) { case "iso-8859-1": value = getlatin1(binary); break; case "utf-8": value = Buffer2.from(binary, "binary").toString("utf8"); break; default: throw new TypeError("unsupported charset in extended field"); } return value; } function getlatin1(val) { return String(val).replace(NON_LATIN1_REGEXP, "?"); } function parse3(string) { if (!string || typeof string !== "string") { throw new TypeError("argument string is required"); } var match = DISPOSITION_TYPE_REGEXP.exec(string); if (!match) { throw new TypeError("invalid type format"); } var index2 = match[0].length; var type = match[1].toLowerCase(); var key; var names = []; var params = {}; var value; index2 = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ";" ? index2 - 1 : index2; while (match = PARAM_REGEXP.exec(string)) { if (match.index !== index2) { throw new TypeError("invalid parameter format"); } index2 += match[0].length; key = match[1].toLowerCase(); value = match[2]; if (names.indexOf(key) !== -1) { throw new TypeError("invalid duplicate parameter"); } names.push(key); if (key.indexOf("*") + 1 === key.length) { key = key.slice(0, -1); value = decodefield(value); params[key] = value; continue; } if (typeof params[key] === "string") { continue; } if (value[0] === '"') { value = value.substr(1, value.length - 2).replace(QESC_REGEXP, "$1"); } params[key] = value; } if (index2 !== -1 && index2 !== string.length) { throw new TypeError("invalid parameter format"); } return new ContentDisposition(type, params); } function pdecode(str, hex) { return String.fromCharCode(parseInt(hex, 16)); } function pencode(char) { return "%" + String(char).charCodeAt(0).toString(16).toUpperCase(); } function qstring(val) { var str = String(val); return '"' + str.replace(QUOTE_REGEXP, "\\$1") + '"'; } function ustring(val) { var str = String(val); var encoded = encodeURIComponent(str).replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode); return "UTF-8''" + encoded; } function ContentDisposition(type, parameters) { this.type = type; this.parameters = parameters; } } }); // ../backend/node_modules/etag/index.js var require_etag = __commonJS({ "../backend/node_modules/etag/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = etag; var crypto4 = require("crypto"); var Stats = require("fs").Stats; var toString = Object.prototype.toString; function entitytag(entity) { if (entity.length === 0) { return '"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"'; } var hash2 = crypto4.createHash("sha1").update(entity, "utf8").digest("base64").substring(0, 27); var len = typeof entity === "string" ? Buffer.byteLength(entity, "utf8") : entity.length; return '"' + len.toString(16) + "-" + hash2 + '"'; } function etag(entity, options) { if (entity == null) { throw new TypeError("argument entity is required"); } var isStats = isstats(entity); var weak = options && typeof options.weak === "boolean" ? options.weak : isStats; if (!isStats && typeof entity !== "string" && !Buffer.isBuffer(entity)) { throw new TypeError("argument entity must be string, Buffer, or fs.Stats"); } var tag = isStats ? stattag(entity) : entitytag(entity); return weak ? "W/" + tag : tag; } function isstats(obj) { if (typeof Stats === "function" && obj instanceof Stats) { return true; } return obj && typeof obj === "object" && "ctime" in obj && toString.call(obj.ctime) === "[object Date]" && "mtime" in obj && toString.call(obj.mtime) === "[object Date]" && "ino" in obj && typeof obj.ino === "number" && "size" in obj && typeof obj.size === "number"; } function stattag(stat) { var mtime = stat.mtime.getTime().toString(16); var size = stat.size.toString(16); return '"' + size + "-" + mtime + '"'; } } }); // ../backend/node_modules/fresh/index.js var require_fresh = __commonJS({ "../backend/node_modules/fresh/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\s*?no-cache\s*?(?:,|$)/; module2.exports = fresh; function fresh(reqHeaders, resHeaders) { var modifiedSince = reqHeaders["if-modified-since"]; var noneMatch = reqHeaders["if-none-match"]; if (!modifiedSince && !noneMatch) { return false; } var cacheControl = reqHeaders["cache-control"]; if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) { return false; } if (noneMatch && noneMatch !== "*") { var etag = resHeaders["etag"]; if (!etag) { return false; } var etagStale = true; var matches = parseTokenList(noneMatch); for (var i = 0; i < matches.length; i++) { var match = matches[i]; if (match === etag || match === "W/" + etag || "W/" + match === etag) { etagStale = false; break; } } if (etagStale) { return false; } } if (modifiedSince) { var lastModified = resHeaders["last-modified"]; var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince)); if (modifiedStale) { return false; } } return true; } function parseHttpDate(date) { var timestamp = date && Date.parse(date); return typeof timestamp === "number" ? timestamp : NaN; } function parseTokenList(str) { var end = 0; var list = []; var start = 0; for (var i = 0, len = str.length; i < len; i++) { switch (str.charCodeAt(i)) { case 32: if (start === end) { start = end = i + 1; } break; case 44: list.push(str.substring(start, end)); start = end = i + 1; break; default: end = i + 1; break; } } list.push(str.substring(start, end)); return list; } } }); // ../backend/node_modules/mime/types.json var require_types = __commonJS({ "../backend/node_modules/mime/types.json"(exports2, module2) { module2.exports = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomsvc+xml": ["atomsvc"], "application/bdoc": ["bdoc"], "application/ccxml+xml": ["ccxml"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["ecma"], "application/emma+xml": ["emma"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/font-tdpfr": ["pfr"], "application/font-woff": [], "application/font-woff2": [], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/prs.cww": ["cww"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": [], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": [], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": [], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": [], "application/x-msdownload": ["com", "bat"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["wmf", "emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": [], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "application/xaml+xml": ["xaml"], "application/xcap-diff+xml": ["xdf"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": [], "audio/adpcm": ["adp"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mp3": [], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/wav": ["wav"], "audio/wave": [], "audio/webm": ["weba"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": [], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": [], "audio/x-wav": [], "audio/xm": ["xm"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/apng": ["apng"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/ief": ["ief"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/ktx": ["ktx"], "image/png": ["png"], "image/prs.btif": ["btif"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/tiff": ["tiff", "tif"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": [], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/webp": ["webp"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": [], "image/x-pcx": ["pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/rfc822": ["eml", "mime"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.vtu": ["vtu"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["x3db", "x3dbz"], "model/x3d+vrml": ["x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/hjson": ["hjson"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/prs.lines.tag": ["dsc"], "text/richtext": ["rtx"], "text/rtf": [], "text/sgml": ["sgml", "sgm"], "text/slim": ["slim", "slm"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/vtt": ["vtt"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": [], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "text/xml": [], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/jpeg": ["jpgv"], "video/jpm": ["jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/webm": ["webm"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] }; } }); // ../backend/node_modules/mime/mime.js var require_mime = __commonJS({ "../backend/node_modules/mime/mime.js"(exports2, module2) { init_define_import_meta_env(); var path2 = require("path"); var fs = require("fs"); function Mime() { this.types = /* @__PURE__ */ Object.create(null); this.extensions = /* @__PURE__ */ Object.create(null); } Mime.prototype.define = function(map) { for (var type in map) { var exts = map[type]; for (var i = 0; i < exts.length; i++) { if (process.env.DEBUG_MIME && this.types[exts[i]]) { console.warn((this._loading || "define()").replace(/.*\//, ""), 'changes "' + exts[i] + '" extension type from ' + this.types[exts[i]] + " to " + type); } this.types[exts[i]] = type; } if (!this.extensions[type]) { this.extensions[type] = exts[0]; } } }; Mime.prototype.load = function(file) { this._loading = file; var map = {}, content = fs.readFileSync(file, "ascii"), lines = content.split(/[\r\n]+/); lines.forEach(function(line) { var fields = line.replace(/\s*#.*|^\s*|\s*$/g, "").split(/\s+/); map[fields.shift()] = fields; }); this.define(map); this._loading = null; }; Mime.prototype.lookup = function(path3, fallback) { var ext = path3.replace(/^.*[\.\/\\]/, "").toLowerCase(); return this.types[ext] || fallback || this.default_type; }; Mime.prototype.extension = function(mimeType) { var type = mimeType.match(/^\s*([^;\s]*)(?:;|\s|$)/)[1].toLowerCase(); return this.extensions[type]; }; var mime = new Mime(); mime.define(require_types()); mime.default_type = mime.lookup("bin"); mime.Mime = Mime; mime.charsets = { lookup: function(mimeType, fallback) { return /^text\/|^application\/(javascript|json)/.test(mimeType) ? "UTF-8" : fallback; } }; module2.exports = mime; } }); // ../backend/node_modules/send/node_modules/ms/index.js var require_ms2 = __commonJS({ "../backend/node_modules/send/node_modules/ms/index.js"(exports2, module2) { init_define_import_meta_env(); var s = 1e3; var m = s * 60; var h = m * 60; var d = h * 24; var w = d * 7; var y = d * 365.25; module2.exports = function(val, options) { options = options || {}; var type = typeof val; if (type === "string" && val.length > 0) { return parse3(val); } else if (type === "number" && isFinite(val)) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) ); }; function parse3(str) { str = String(str); if (str.length > 100) { return; } var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec( str ); if (!match) { return; } var n = parseFloat(match[1]); var type = (match[2] || "ms").toLowerCase(); switch (type) { case "years": case "year": case "yrs": case "yr": case "y": return n * y; case "weeks": case "week": case "w": return n * w; case "days": case "day": case "d": return n * d; case "hours": case "hour": case "hrs": case "hr": case "h": return n * h; case "minutes": case "minute": case "mins": case "min": case "m": return n * m; case "seconds": case "second": case "secs": case "sec": case "s": return n * s; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return n; default: return void 0; } } function fmtShort(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return Math.round(ms / d) + "d"; } if (msAbs >= h) { return Math.round(ms / h) + "h"; } if (msAbs >= m) { return Math.round(ms / m) + "m"; } if (msAbs >= s) { return Math.round(ms / s) + "s"; } return ms + "ms"; } function fmtLong(ms) { var msAbs = Math.abs(ms); if (msAbs >= d) { return plural(ms, msAbs, d, "day"); } if (msAbs >= h) { return plural(ms, msAbs, h, "hour"); } if (msAbs >= m) { return plural(ms, msAbs, m, "minute"); } if (msAbs >= s) { return plural(ms, msAbs, s, "second"); } return ms + " ms"; } function plural(ms, msAbs, n, name) { var isPlural = msAbs >= n * 1.5; return Math.round(ms / n) + " " + name + (isPlural ? "s" : ""); } } }); // ../backend/node_modules/range-parser/index.js var require_range_parser = __commonJS({ "../backend/node_modules/range-parser/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = rangeParser; function rangeParser(size, str, options) { if (typeof str !== "string") { throw new TypeError("argument str must be a string"); } var index2 = str.indexOf("="); if (index2 === -1) { return -2; } var arr = str.slice(index2 + 1).split(","); var ranges = []; ranges.type = str.slice(0, index2); for (var i = 0; i < arr.length; i++) { var range = arr[i].split("-"); var start = parseInt(range[0], 10); var end = parseInt(range[1], 10); if (isNaN(start)) { start = size - end; end = size - 1; } else if (isNaN(end)) { end = size - 1; } if (end > size - 1) { end = size - 1; } if (isNaN(start) || isNaN(end) || start > end || start < 0) { continue; } ranges.push({ start, end }); } if (ranges.length < 1) { return -1; } return options && options.combine ? combineRanges(ranges) : ranges; } function combineRanges(ranges) { var ordered = ranges.map(mapWithIndex).sort(sortByRangeStart); for (var j = 0, i = 1; i < ordered.length; i++) { var range = ordered[i]; var current = ordered[j]; if (range.start > current.end + 1) { ordered[++j] = range; } else if (range.end > current.end) { current.end = range.end; current.index = Math.min(current.index, range.index); } } ordered.length = j + 1; var combined = ordered.sort(sortByRangeIndex).map(mapWithoutIndex); combined.type = ranges.type; return combined; } function mapWithIndex(range, index2) { return { start: range.start, end: range.end, index: index2 }; } function mapWithoutIndex(range) { return { start: range.start, end: range.end }; } function sortByRangeIndex(a, b) { return a.index - b.index; } function sortByRangeStart(a, b) { return a.start - b.start; } } }); // ../backend/node_modules/send/index.js var require_send = __commonJS({ "../backend/node_modules/send/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var createError2 = require_http_errors(); var debug = require_src()("send"); var deprecate = require_depd()("send"); var destroy = require_destroy(); var encodeUrl = require_encodeurl(); var escapeHtml = require_escape_html(); var etag = require_etag(); var fresh = require_fresh(); var fs = require("fs"); var mime = require_mime(); var ms = require_ms2(); var onFinished = require_on_finished(); var parseRange = require_range_parser(); var path2 = require("path"); var statuses = require_statuses(); var Stream = require("stream"); var util = require("util"); var extname = path2.extname; var join = path2.join; var normalize = path2.normalize; var resolve = path2.resolve; var sep = path2.sep; var BYTES_RANGE_REGEXP = /^ *bytes=/; var MAX_MAXAGE = 60 * 60 * 24 * 365 * 1e3; var UP_PATH_REGEXP = /(?:^|[\\/])\.\.(?:[\\/]|$)/; module2.exports = send; module2.exports.mime = mime; function send(req, path3, options) { return new SendStream(req, path3, options); } function SendStream(req, path3, options) { Stream.call(this); var opts = options || {}; this.options = opts; this.path = path3; this.req = req; this._acceptRanges = opts.acceptRanges !== void 0 ? Boolean(opts.acceptRanges) : true; this._cacheControl = opts.cacheControl !== void 0 ? Boolean(opts.cacheControl) : true; this._etag = opts.etag !== void 0 ? Boolean(opts.etag) : true; this._dotfiles = opts.dotfiles !== void 0 ? opts.dotfiles : "ignore"; if (this._dotfiles !== "ignore" && this._dotfiles !== "allow" && this._dotfiles !== "deny") { throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"'); } this._hidden = Boolean(opts.hidden); if (opts.hidden !== void 0) { deprecate("hidden: use dotfiles: '" + (this._hidden ? "allow" : "ignore") + "' instead"); } if (opts.dotfiles === void 0) { this._dotfiles = void 0; } this._extensions = opts.extensions !== void 0 ? normalizeList(opts.extensions, "extensions option") : []; this._immutable = opts.immutable !== void 0 ? Boolean(opts.immutable) : false; this._index = opts.index !== void 0 ? normalizeList(opts.index, "index option") : ["index.html"]; this._lastModified = opts.lastModified !== void 0 ? Boolean(opts.lastModified) : true; this._maxage = opts.maxAge || opts.maxage; this._maxage = typeof this._maxage === "string" ? ms(this._maxage) : Number(this._maxage); this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0; this._root = opts.root ? resolve(opts.root) : null; if (!this._root && opts.from) { this.from(opts.from); } } util.inherits(SendStream, Stream); SendStream.prototype.etag = deprecate.function(function etag2(val) { this._etag = Boolean(val); debug("etag %s", this._etag); return this; }, "send.etag: pass etag as option"); SendStream.prototype.hidden = deprecate.function(function hidden(val) { this._hidden = Boolean(val); this._dotfiles = void 0; debug("hidden %s", this._hidden); return this; }, "send.hidden: use dotfiles option"); SendStream.prototype.index = deprecate.function(function index2(paths) { var index3 = !paths ? [] : normalizeList(paths, "paths argument"); debug("index %o", paths); this._index = index3; return this; }, "send.index: pass index as option"); SendStream.prototype.root = function root(path3) { this._root = resolve(String(path3)); debug("root %s", this._root); return this; }; SendStream.prototype.from = deprecate.function( SendStream.prototype.root, "send.from: pass root as option" ); SendStream.prototype.root = deprecate.function( SendStream.prototype.root, "send.root: pass root as option" ); SendStream.prototype.maxage = deprecate.function(function maxage(maxAge) { this._maxage = typeof maxAge === "string" ? ms(maxAge) : Number(maxAge); this._maxage = !isNaN(this._maxage) ? Math.min(Math.max(0, this._maxage), MAX_MAXAGE) : 0; debug("max-age %d", this._maxage); return this; }, "send.maxage: pass maxAge as option"); SendStream.prototype.error = function error(status, err) { if (hasListeners(this, "error")) { return this.emit("error", createHttpError(status, err)); } var res = this.res; var msg = statuses.message[status] || String(status); var doc = createHtmlDocument("Error", escapeHtml(msg)); clearHeaders(res); if (err && err.headers) { setHeaders(res, err.headers); } res.statusCode = status; res.setHeader("Content-Type", "text/html; charset=UTF-8"); res.setHeader("Content-Length", Buffer.byteLength(doc)); res.setHeader("Content-Security-Policy", "default-src 'none'"); res.setHeader("X-Content-Type-Options", "nosniff"); res.end(doc); }; SendStream.prototype.hasTrailingSlash = function hasTrailingSlash() { return this.path[this.path.length - 1] === "/"; }; SendStream.prototype.isConditionalGET = function isConditionalGET() { return this.req.headers["if-match"] || this.req.headers["if-unmodified-since"] || this.req.headers["if-none-match"] || this.req.headers["if-modified-since"]; }; SendStream.prototype.isPreconditionFailure = function isPreconditionFailure() { var req = this.req; var res = this.res; var match = req.headers["if-match"]; if (match) { var etag2 = res.getHeader("ETag"); return !etag2 || match !== "*" && parseTokenList(match).every(function(match2) { return match2 !== etag2 && match2 !== "W/" + etag2 && "W/" + match2 !== etag2; }); } var unmodifiedSince = parseHttpDate(req.headers["if-unmodified-since"]); if (!isNaN(unmodifiedSince)) { var lastModified = parseHttpDate(res.getHeader("Last-Modified")); return isNaN(lastModified) || lastModified > unmodifiedSince; } return false; }; SendStream.prototype.removeContentHeaderFields = function removeContentHeaderFields() { var res = this.res; res.removeHeader("Content-Encoding"); res.removeHeader("Content-Language"); res.removeHeader("Content-Length"); res.removeHeader("Content-Range"); res.removeHeader("Content-Type"); }; SendStream.prototype.notModified = function notModified() { var res = this.res; debug("not modified"); this.removeContentHeaderFields(); res.statusCode = 304; res.end(); }; SendStream.prototype.headersAlreadySent = function headersAlreadySent() { var err = new Error("Can't set headers after they are sent."); debug("headers already sent"); this.error(500, err); }; SendStream.prototype.isCachable = function isCachable() { var statusCode = this.res.statusCode; return statusCode >= 200 && statusCode < 300 || statusCode === 304; }; SendStream.prototype.onStatError = function onStatError(error) { switch (error.code) { case "ENAMETOOLONG": case "ENOENT": case "ENOTDIR": this.error(404, error); break; default: this.error(500, error); break; } }; SendStream.prototype.isFresh = function isFresh() { return fresh(this.req.headers, { etag: this.res.getHeader("ETag"), "last-modified": this.res.getHeader("Last-Modified") }); }; SendStream.prototype.isRangeFresh = function isRangeFresh() { var ifRange = this.req.headers["if-range"]; if (!ifRange) { return true; } if (ifRange.indexOf('"') !== -1) { var etag2 = this.res.getHeader("ETag"); return Boolean(etag2 && ifRange.indexOf(etag2) !== -1); } var lastModified = this.res.getHeader("Last-Modified"); return parseHttpDate(lastModified) <= parseHttpDate(ifRange); }; SendStream.prototype.redirect = function redirect(path3) { var res = this.res; if (hasListeners(this, "directory")) { this.emit("directory", res, path3); return; } if (this.hasTrailingSlash()) { this.error(403); return; } var loc = encodeUrl(collapseLeadingSlashes(this.path + "/")); var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); res.statusCode = 301; res.setHeader("Content-Type", "text/html; charset=UTF-8"); res.setHeader("Content-Length", Buffer.byteLength(doc)); res.setHeader("Content-Security-Policy", "default-src 'none'"); res.setHeader("X-Content-Type-Options", "nosniff"); res.setHeader("Location", loc); res.end(doc); }; SendStream.prototype.pipe = function pipe(res) { var root = this._root; this.res = res; var path3 = decode(this.path); if (path3 === -1) { this.error(400); return res; } if (~path3.indexOf("\0")) { this.error(400); return res; } var parts; if (root !== null) { if (path3) { path3 = normalize("." + sep + path3); } if (UP_PATH_REGEXP.test(path3)) { debug('malicious path "%s"', path3); this.error(403); return res; } parts = path3.split(sep); path3 = normalize(join(root, path3)); } else { if (UP_PATH_REGEXP.test(path3)) { debug('malicious path "%s"', path3); this.error(403); return res; } parts = normalize(path3).split(sep); path3 = resolve(path3); } if (containsDotFile(parts)) { var access = this._dotfiles; if (access === void 0) { access = parts[parts.length - 1][0] === "." ? this._hidden ? "allow" : "ignore" : "allow"; } debug('%s dotfile "%s"', access, path3); switch (access) { case "allow": break; case "deny": this.error(403); return res; case "ignore": default: this.error(404); return res; } } if (this._index.length && this.hasTrailingSlash()) { this.sendIndex(path3); return res; } this.sendFile(path3); return res; }; SendStream.prototype.send = function send2(path3, stat) { var len = stat.size; var options = this.options; var opts = {}; var res = this.res; var req = this.req; var ranges = req.headers.range; var offset = options.start || 0; if (headersSent(res)) { this.headersAlreadySent(); return; } debug('pipe "%s"', path3); this.setHeader(path3, stat); this.type(path3); if (this.isConditionalGET()) { if (this.isPreconditionFailure()) { this.error(412); return; } if (this.isCachable() && this.isFresh()) { this.notModified(); return; } } len = Math.max(0, len - offset); if (options.end !== void 0) { var bytes = options.end - offset + 1; if (len > bytes) len = bytes; } if (this._acceptRanges && BYTES_RANGE_REGEXP.test(ranges)) { ranges = parseRange(len, ranges, { combine: true }); if (!this.isRangeFresh()) { debug("range stale"); ranges = -2; } if (ranges === -1) { debug("range unsatisfiable"); res.setHeader("Content-Range", contentRange("bytes", len)); return this.error(416, { headers: { "Content-Range": res.getHeader("Content-Range") } }); } if (ranges !== -2 && ranges.length === 1) { debug("range %j", ranges); res.statusCode = 206; res.setHeader("Content-Range", contentRange("bytes", len, ranges[0])); offset += ranges[0].start; len = ranges[0].end - ranges[0].start + 1; } } for (var prop in options) { opts[prop] = options[prop]; } opts.start = offset; opts.end = Math.max(offset, offset + len - 1); res.setHeader("Content-Length", len); if (req.method === "HEAD") { res.end(); return; } this.stream(path3, opts); }; SendStream.prototype.sendFile = function sendFile(path3) { var i = 0; var self2 = this; debug('stat "%s"', path3); fs.stat(path3, function onstat(err, stat) { if (err && err.code === "ENOENT" && !extname(path3) && path3[path3.length - 1] !== sep) { return next(err); } if (err) return self2.onStatError(err); if (stat.isDirectory()) return self2.redirect(path3); self2.emit("file", path3, stat); self2.send(path3, stat); }); function next(err) { if (self2._extensions.length <= i) { return err ? self2.onStatError(err) : self2.error(404); } var p = path3 + "." + self2._extensions[i++]; debug('stat "%s"', p); fs.stat(p, function(err2, stat) { if (err2) return next(err2); if (stat.isDirectory()) return next(); self2.emit("file", p, stat); self2.send(p, stat); }); } }; SendStream.prototype.sendIndex = function sendIndex(path3) { var i = -1; var self2 = this; function next(err) { if (++i >= self2._index.length) { if (err) return self2.onStatError(err); return self2.error(404); } var p = join(path3, self2._index[i]); debug('stat "%s"', p); fs.stat(p, function(err2, stat) { if (err2) return next(err2); if (stat.isDirectory()) return next(); self2.emit("file", p, stat); self2.send(p, stat); }); } next(); }; SendStream.prototype.stream = function stream(path3, options) { var self2 = this; var res = this.res; var stream2 = fs.createReadStream(path3, options); this.emit("stream", stream2); stream2.pipe(res); function cleanup() { destroy(stream2, true); } onFinished(res, cleanup); stream2.on("error", function onerror(err) { cleanup(); self2.onStatError(err); }); stream2.on("end", function onend() { self2.emit("end"); }); }; SendStream.prototype.type = function type(path3) { var res = this.res; if (res.getHeader("Content-Type")) return; var type2 = mime.lookup(path3); if (!type2) { debug("no content-type"); return; } var charset = mime.charsets.lookup(type2); debug("content-type %s", type2); res.setHeader("Content-Type", type2 + (charset ? "; charset=" + charset : "")); }; SendStream.prototype.setHeader = function setHeader(path3, stat) { var res = this.res; this.emit("headers", res, path3, stat); if (this._acceptRanges && !res.getHeader("Accept-Ranges")) { debug("accept ranges"); res.setHeader("Accept-Ranges", "bytes"); } if (this._cacheControl && !res.getHeader("Cache-Control")) { var cacheControl = "public, max-age=" + Math.floor(this._maxage / 1e3); if (this._immutable) { cacheControl += ", immutable"; } debug("cache-control %s", cacheControl); res.setHeader("Cache-Control", cacheControl); } if (this._lastModified && !res.getHeader("Last-Modified")) { var modified = stat.mtime.toUTCString(); debug("modified %s", modified); res.setHeader("Last-Modified", modified); } if (this._etag && !res.getHeader("ETag")) { var val = etag(stat); debug("etag %s", val); res.setHeader("ETag", val); } }; function clearHeaders(res) { var headers = getHeaderNames(res); for (var i = 0; i < headers.length; i++) { res.removeHeader(headers[i]); } } function collapseLeadingSlashes(str) { for (var i = 0; i < str.length; i++) { if (str[i] !== "/") { break; } } return i > 1 ? "/" + str.substr(i) : str; } function containsDotFile(parts) { for (var i = 0; i < parts.length; i++) { var part = parts[i]; if (part.length > 1 && part[0] === ".") { return true; } } return false; } function contentRange(type, size, range) { return type + " " + (range ? range.start + "-" + range.end : "*") + "/" + size; } function createHtmlDocument(title, body) { return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; } function createHttpError(status, err) { if (!err) { return createError2(status); } return err instanceof Error ? createError2(status, err, { expose: false }) : createError2(status, err); } function decode(path3) { try { return decodeURIComponent(path3); } catch (err) { return -1; } } function getHeaderNames(res) { return typeof res.getHeaderNames !== "function" ? Object.keys(res._headers || {}) : res.getHeaderNames(); } function hasListeners(emitter, type) { var count = typeof emitter.listenerCount !== "function" ? emitter.listeners(type).length : emitter.listenerCount(type); return count > 0; } function headersSent(res) { return typeof res.headersSent !== "boolean" ? Boolean(res._header) : res.headersSent; } function normalizeList(val, name) { var list = [].concat(val || []); for (var i = 0; i < list.length; i++) { if (typeof list[i] !== "string") { throw new TypeError(name + " must be array of strings or false"); } } return list; } function parseHttpDate(date) { var timestamp = date && Date.parse(date); return typeof timestamp === "number" ? timestamp : NaN; } function parseTokenList(str) { var end = 0; var list = []; var start = 0; for (var i = 0, len = str.length; i < len; i++) { switch (str.charCodeAt(i)) { case 32: if (start === end) { start = end = i + 1; } break; case 44: if (start !== end) { list.push(str.substring(start, end)); } start = end = i + 1; break; default: end = i + 1; break; } } if (start !== end) { list.push(str.substring(start, end)); } return list; } function setHeaders(res, headers) { var keys = Object.keys(headers); for (var i = 0; i < keys.length; i++) { var key = keys[i]; res.setHeader(key, headers[key]); } } } }); // ../backend/node_modules/forwarded/index.js var require_forwarded = __commonJS({ "../backend/node_modules/forwarded/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = forwarded; function forwarded(req) { if (!req) { throw new TypeError("argument req is required"); } var proxyAddrs = parse3(req.headers["x-forwarded-for"] || ""); var socketAddr = getSocketAddr(req); var addrs = [socketAddr].concat(proxyAddrs); return addrs; } function getSocketAddr(req) { return req.socket ? req.socket.remoteAddress : req.connection.remoteAddress; } function parse3(header) { var end = header.length; var list = []; var start = header.length; for (var i = header.length - 1; i >= 0; i--) { switch (header.charCodeAt(i)) { case 32: if (start === end) { start = end = i; } break; case 44: if (start !== end) { list.push(header.substring(start, end)); } start = end = i; break; default: start = i; break; } } if (start !== end) { list.push(header.substring(start, end)); } return list; } } }); // ../backend/node_modules/ipaddr.js/lib/ipaddr.js var require_ipaddr = __commonJS({ "../backend/node_modules/ipaddr.js/lib/ipaddr.js"(exports2, module2) { init_define_import_meta_env(); (function() { var expandIPv6, ipaddr, ipv4Part, ipv4Regexes, ipv6Part, ipv6Regexes, matchCIDR, root, zoneIndex; ipaddr = {}; root = this; if (typeof module2 !== "undefined" && module2 !== null && module2.exports) { module2.exports = ipaddr; } else { root["ipaddr"] = ipaddr; } matchCIDR = function(first, second, partSize, cidrBits) { var part, shift; if (first.length !== second.length) { throw new Error("ipaddr: cannot match CIDR for objects with different lengths"); } part = 0; while (cidrBits > 0) { shift = partSize - cidrBits; if (shift < 0) { shift = 0; } if (first[part] >> shift !== second[part] >> shift) { return false; } cidrBits -= partSize; part += 1; } return true; }; ipaddr.subnetMatch = function(address, rangeList, defaultName) { var k, len, rangeName, rangeSubnets, subnet; if (defaultName == null) { defaultName = "unicast"; } for (rangeName in rangeList) { rangeSubnets = rangeList[rangeName]; if (rangeSubnets[0] && !(rangeSubnets[0] instanceof Array)) { rangeSubnets = [rangeSubnets]; } for (k = 0, len = rangeSubnets.length; k < len; k++) { subnet = rangeSubnets[k]; if (address.kind() === subnet[0].kind()) { if (address.match.apply(address, subnet)) { return rangeName; } } } } return defaultName; }; ipaddr.IPv4 = (function() { function IPv4(octets) { var k, len, octet; if (octets.length !== 4) { throw new Error("ipaddr: ipv4 octet count should be 4"); } for (k = 0, len = octets.length; k < len; k++) { octet = octets[k]; if (!(0 <= octet && octet <= 255)) { throw new Error("ipaddr: ipv4 octet should fit in 8 bits"); } } this.octets = octets; } IPv4.prototype.kind = function() { return "ipv4"; }; IPv4.prototype.toString = function() { return this.octets.join("."); }; IPv4.prototype.toNormalizedString = function() { return this.toString(); }; IPv4.prototype.toByteArray = function() { return this.octets.slice(0); }; IPv4.prototype.match = function(other, cidrRange) { var ref; if (cidrRange === void 0) { ref = other, other = ref[0], cidrRange = ref[1]; } if (other.kind() !== "ipv4") { throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one"); } return matchCIDR(this.octets, other.octets, 8, cidrRange); }; IPv4.prototype.SpecialRanges = { unspecified: [[new IPv4([0, 0, 0, 0]), 8]], broadcast: [[new IPv4([255, 255, 255, 255]), 32]], multicast: [[new IPv4([224, 0, 0, 0]), 4]], linkLocal: [[new IPv4([169, 254, 0, 0]), 16]], loopback: [[new IPv4([127, 0, 0, 0]), 8]], carrierGradeNat: [[new IPv4([100, 64, 0, 0]), 10]], "private": [[new IPv4([10, 0, 0, 0]), 8], [new IPv4([172, 16, 0, 0]), 12], [new IPv4([192, 168, 0, 0]), 16]], reserved: [[new IPv4([192, 0, 0, 0]), 24], [new IPv4([192, 0, 2, 0]), 24], [new IPv4([192, 88, 99, 0]), 24], [new IPv4([198, 51, 100, 0]), 24], [new IPv4([203, 0, 113, 0]), 24], [new IPv4([240, 0, 0, 0]), 4]] }; IPv4.prototype.range = function() { return ipaddr.subnetMatch(this, this.SpecialRanges); }; IPv4.prototype.toIPv4MappedAddress = function() { return ipaddr.IPv6.parse("::ffff:" + this.toString()); }; IPv4.prototype.prefixLengthFromSubnetMask = function() { var cidr, i, k, octet, stop, zeros, zerotable; zerotable = { 0: 8, 128: 7, 192: 6, 224: 5, 240: 4, 248: 3, 252: 2, 254: 1, 255: 0 }; cidr = 0; stop = false; for (i = k = 3; k >= 0; i = k += -1) { octet = this.octets[i]; if (octet in zerotable) { zeros = zerotable[octet]; if (stop && zeros !== 0) { return null; } if (zeros !== 8) { stop = true; } cidr += zeros; } else { return null; } } return 32 - cidr; }; return IPv4; })(); ipv4Part = "(0?\\d+|0x[a-f0-9]+)"; ipv4Regexes = { fourOctet: new RegExp("^" + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "$", "i"), longValue: new RegExp("^" + ipv4Part + "$", "i") }; ipaddr.IPv4.parser = function(string) { var match, parseIntAuto, part, shift, value; parseIntAuto = function(string2) { if (string2[0] === "0" && string2[1] !== "x") { return parseInt(string2, 8); } else { return parseInt(string2); } }; if (match = string.match(ipv4Regexes.fourOctet)) { return (function() { var k, len, ref, results; ref = match.slice(1, 6); results = []; for (k = 0, len = ref.length; k < len; k++) { part = ref[k]; results.push(parseIntAuto(part)); } return results; })(); } else if (match = string.match(ipv4Regexes.longValue)) { value = parseIntAuto(match[1]); if (value > 4294967295 || value < 0) { throw new Error("ipaddr: address outside defined range"); } return (function() { var k, results; results = []; for (shift = k = 0; k <= 24; shift = k += 8) { results.push(value >> shift & 255); } return results; })().reverse(); } else { return null; } }; ipaddr.IPv6 = (function() { function IPv6(parts, zoneId) { var i, k, l, len, part, ref; if (parts.length === 16) { this.parts = []; for (i = k = 0; k <= 14; i = k += 2) { this.parts.push(parts[i] << 8 | parts[i + 1]); } } else if (parts.length === 8) { this.parts = parts; } else { throw new Error("ipaddr: ipv6 part count should be 8 or 16"); } ref = this.parts; for (l = 0, len = ref.length; l < len; l++) { part = ref[l]; if (!(0 <= part && part <= 65535)) { throw new Error("ipaddr: ipv6 part should fit in 16 bits"); } } if (zoneId) { this.zoneId = zoneId; } } IPv6.prototype.kind = function() { return "ipv6"; }; IPv6.prototype.toString = function() { return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/, "::"); }; IPv6.prototype.toRFC5952String = function() { var bestMatchIndex, bestMatchLength, match, regex, string; regex = /((^|:)(0(:|$)){2,})/g; string = this.toNormalizedString(); bestMatchIndex = 0; bestMatchLength = -1; while (match = regex.exec(string)) { if (match[0].length > bestMatchLength) { bestMatchIndex = match.index; bestMatchLength = match[0].length; } } if (bestMatchLength < 0) { return string; } return string.substring(0, bestMatchIndex) + "::" + string.substring(bestMatchIndex + bestMatchLength); }; IPv6.prototype.toByteArray = function() { var bytes, k, len, part, ref; bytes = []; ref = this.parts; for (k = 0, len = ref.length; k < len; k++) { part = ref[k]; bytes.push(part >> 8); bytes.push(part & 255); } return bytes; }; IPv6.prototype.toNormalizedString = function() { var addr, part, suffix; addr = (function() { var k, len, ref, results; ref = this.parts; results = []; for (k = 0, len = ref.length; k < len; k++) { part = ref[k]; results.push(part.toString(16)); } return results; }).call(this).join(":"); suffix = ""; if (this.zoneId) { suffix = "%" + this.zoneId; } return addr + suffix; }; IPv6.prototype.toFixedLengthString = function() { var addr, part, suffix; addr = (function() { var k, len, ref, results; ref = this.parts; results = []; for (k = 0, len = ref.length; k < len; k++) { part = ref[k]; results.push(part.toString(16).padStart(4, "0")); } return results; }).call(this).join(":"); suffix = ""; if (this.zoneId) { suffix = "%" + this.zoneId; } return addr + suffix; }; IPv6.prototype.match = function(other, cidrRange) { var ref; if (cidrRange === void 0) { ref = other, other = ref[0], cidrRange = ref[1]; } if (other.kind() !== "ipv6") { throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one"); } return matchCIDR(this.parts, other.parts, 16, cidrRange); }; IPv6.prototype.SpecialRanges = { unspecified: [new IPv6([0, 0, 0, 0, 0, 0, 0, 0]), 128], linkLocal: [new IPv6([65152, 0, 0, 0, 0, 0, 0, 0]), 10], multicast: [new IPv6([65280, 0, 0, 0, 0, 0, 0, 0]), 8], loopback: [new IPv6([0, 0, 0, 0, 0, 0, 0, 1]), 128], uniqueLocal: [new IPv6([64512, 0, 0, 0, 0, 0, 0, 0]), 7], ipv4Mapped: [new IPv6([0, 0, 0, 0, 0, 65535, 0, 0]), 96], rfc6145: [new IPv6([0, 0, 0, 0, 65535, 0, 0, 0]), 96], rfc6052: [new IPv6([100, 65435, 0, 0, 0, 0, 0, 0]), 96], "6to4": [new IPv6([8194, 0, 0, 0, 0, 0, 0, 0]), 16], teredo: [new IPv6([8193, 0, 0, 0, 0, 0, 0, 0]), 32], reserved: [[new IPv6([8193, 3512, 0, 0, 0, 0, 0, 0]), 32]] }; IPv6.prototype.range = function() { return ipaddr.subnetMatch(this, this.SpecialRanges); }; IPv6.prototype.isIPv4MappedAddress = function() { return this.range() === "ipv4Mapped"; }; IPv6.prototype.toIPv4Address = function() { var high, low, ref; if (!this.isIPv4MappedAddress()) { throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4"); } ref = this.parts.slice(-2), high = ref[0], low = ref[1]; return new ipaddr.IPv4([high >> 8, high & 255, low >> 8, low & 255]); }; IPv6.prototype.prefixLengthFromSubnetMask = function() { var cidr, i, k, part, stop, zeros, zerotable; zerotable = { 0: 16, 32768: 15, 49152: 14, 57344: 13, 61440: 12, 63488: 11, 64512: 10, 65024: 9, 65280: 8, 65408: 7, 65472: 6, 65504: 5, 65520: 4, 65528: 3, 65532: 2, 65534: 1, 65535: 0 }; cidr = 0; stop = false; for (i = k = 7; k >= 0; i = k += -1) { part = this.parts[i]; if (part in zerotable) { zeros = zerotable[part]; if (stop && zeros !== 0) { return null; } if (zeros !== 16) { stop = true; } cidr += zeros; } else { return null; } } return 128 - cidr; }; return IPv6; })(); ipv6Part = "(?:[0-9a-f]+::?)+"; zoneIndex = "%[0-9a-z]{1,}"; ipv6Regexes = { zoneIndex: new RegExp(zoneIndex, "i"), "native": new RegExp("^(::)?(" + ipv6Part + ")?([0-9a-f]+)?(::)?(" + zoneIndex + ")?$", "i"), transitional: new RegExp("^((?:" + ipv6Part + ")|(?:::)(?:" + ipv6Part + ")?)" + (ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part + "\\." + ipv4Part) + ("(" + zoneIndex + ")?$"), "i") }; expandIPv6 = function(string, parts) { var colonCount, lastColon, part, replacement, replacementCount, zoneId; if (string.indexOf("::") !== string.lastIndexOf("::")) { return null; } zoneId = (string.match(ipv6Regexes["zoneIndex"]) || [])[0]; if (zoneId) { zoneId = zoneId.substring(1); string = string.replace(/%.+$/, ""); } colonCount = 0; lastColon = -1; while ((lastColon = string.indexOf(":", lastColon + 1)) >= 0) { colonCount++; } if (string.substr(0, 2) === "::") { colonCount--; } if (string.substr(-2, 2) === "::") { colonCount--; } if (colonCount > parts) { return null; } replacementCount = parts - colonCount; replacement = ":"; while (replacementCount--) { replacement += "0:"; } string = string.replace("::", replacement); if (string[0] === ":") { string = string.slice(1); } if (string[string.length - 1] === ":") { string = string.slice(0, -1); } parts = (function() { var k, len, ref, results; ref = string.split(":"); results = []; for (k = 0, len = ref.length; k < len; k++) { part = ref[k]; results.push(parseInt(part, 16)); } return results; })(); return { parts, zoneId }; }; ipaddr.IPv6.parser = function(string) { var addr, k, len, match, octet, octets, zoneId; if (ipv6Regexes["native"].test(string)) { return expandIPv6(string, 8); } else if (match = string.match(ipv6Regexes["transitional"])) { zoneId = match[6] || ""; addr = expandIPv6(match[1].slice(0, -1) + zoneId, 6); if (addr.parts) { octets = [parseInt(match[2]), parseInt(match[3]), parseInt(match[4]), parseInt(match[5])]; for (k = 0, len = octets.length; k < len; k++) { octet = octets[k]; if (!(0 <= octet && octet <= 255)) { return null; } } addr.parts.push(octets[0] << 8 | octets[1]); addr.parts.push(octets[2] << 8 | octets[3]); return { parts: addr.parts, zoneId: addr.zoneId }; } } return null; }; ipaddr.IPv4.isIPv4 = ipaddr.IPv6.isIPv6 = function(string) { return this.parser(string) !== null; }; ipaddr.IPv4.isValid = function(string) { var e; try { new this(this.parser(string)); return true; } catch (error1) { e = error1; return false; } }; ipaddr.IPv4.isValidFourPartDecimal = function(string) { if (ipaddr.IPv4.isValid(string) && string.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/)) { return true; } else { return false; } }; ipaddr.IPv6.isValid = function(string) { var addr, e; if (typeof string === "string" && string.indexOf(":") === -1) { return false; } try { addr = this.parser(string); new this(addr.parts, addr.zoneId); return true; } catch (error1) { e = error1; return false; } }; ipaddr.IPv4.parse = function(string) { var parts; parts = this.parser(string); if (parts === null) { throw new Error("ipaddr: string is not formatted like ip address"); } return new this(parts); }; ipaddr.IPv6.parse = function(string) { var addr; addr = this.parser(string); if (addr.parts === null) { throw new Error("ipaddr: string is not formatted like ip address"); } return new this(addr.parts, addr.zoneId); }; ipaddr.IPv4.parseCIDR = function(string) { var maskLength, match, parsed; if (match = string.match(/^(.+)\/(\d+)$/)) { maskLength = parseInt(match[2]); if (maskLength >= 0 && maskLength <= 32) { parsed = [this.parse(match[1]), maskLength]; Object.defineProperty(parsed, "toString", { value: function() { return this.join("/"); } }); return parsed; } } throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range"); }; ipaddr.IPv4.subnetMaskFromPrefixLength = function(prefix) { var filledOctetCount, j, octets; prefix = parseInt(prefix); if (prefix < 0 || prefix > 32) { throw new Error("ipaddr: invalid IPv4 prefix length"); } octets = [0, 0, 0, 0]; j = 0; filledOctetCount = Math.floor(prefix / 8); while (j < filledOctetCount) { octets[j] = 255; j++; } if (filledOctetCount < 4) { octets[filledOctetCount] = Math.pow(2, prefix % 8) - 1 << 8 - prefix % 8; } return new this(octets); }; ipaddr.IPv4.broadcastAddressFromCIDR = function(string) { var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; try { cidr = this.parseCIDR(string); ipInterfaceOctets = cidr[0].toByteArray(); subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); octets = []; i = 0; while (i < 4) { octets.push(parseInt(ipInterfaceOctets[i], 10) | parseInt(subnetMaskOctets[i], 10) ^ 255); i++; } return new this(octets); } catch (error1) { error = error1; throw new Error("ipaddr: the address does not have IPv4 CIDR format"); } }; ipaddr.IPv4.networkAddressFromCIDR = function(string) { var cidr, error, i, ipInterfaceOctets, octets, subnetMaskOctets; try { cidr = this.parseCIDR(string); ipInterfaceOctets = cidr[0].toByteArray(); subnetMaskOctets = this.subnetMaskFromPrefixLength(cidr[1]).toByteArray(); octets = []; i = 0; while (i < 4) { octets.push(parseInt(ipInterfaceOctets[i], 10) & parseInt(subnetMaskOctets[i], 10)); i++; } return new this(octets); } catch (error1) { error = error1; throw new Error("ipaddr: the address does not have IPv4 CIDR format"); } }; ipaddr.IPv6.parseCIDR = function(string) { var maskLength, match, parsed; if (match = string.match(/^(.+)\/(\d+)$/)) { maskLength = parseInt(match[2]); if (maskLength >= 0 && maskLength <= 128) { parsed = [this.parse(match[1]), maskLength]; Object.defineProperty(parsed, "toString", { value: function() { return this.join("/"); } }); return parsed; } } throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range"); }; ipaddr.isValid = function(string) { return ipaddr.IPv6.isValid(string) || ipaddr.IPv4.isValid(string); }; ipaddr.parse = function(string) { if (ipaddr.IPv6.isValid(string)) { return ipaddr.IPv6.parse(string); } else if (ipaddr.IPv4.isValid(string)) { return ipaddr.IPv4.parse(string); } else { throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format"); } }; ipaddr.parseCIDR = function(string) { var e; try { return ipaddr.IPv6.parseCIDR(string); } catch (error1) { e = error1; try { return ipaddr.IPv4.parseCIDR(string); } catch (error12) { e = error12; throw new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format"); } } }; ipaddr.fromByteArray = function(bytes) { var length; length = bytes.length; if (length === 4) { return new ipaddr.IPv4(bytes); } else if (length === 16) { return new ipaddr.IPv6(bytes); } else { throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address"); } }; ipaddr.process = function(string) { var addr; addr = this.parse(string); if (addr.kind() === "ipv6" && addr.isIPv4MappedAddress()) { return addr.toIPv4Address(); } else { return addr; } }; }).call(exports2); } }); // ../backend/node_modules/proxy-addr/index.js var require_proxy_addr = __commonJS({ "../backend/node_modules/proxy-addr/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = proxyaddr; module2.exports.all = alladdrs; module2.exports.compile = compile3; var forwarded = require_forwarded(); var ipaddr = require_ipaddr(); var DIGIT_REGEXP = /^[0-9]+$/; var isip = ipaddr.isValid; var parseip = ipaddr.parse; var IP_RANGES = { linklocal: ["169.254.0.0/16", "fe80::/10"], loopback: ["127.0.0.1/8", "::1/128"], uniquelocal: ["10.0.0.0/8", "172.16.0.0/12", "192.168.0.0/16", "fc00::/7"] }; function alladdrs(req, trust) { var addrs = forwarded(req); if (!trust) { return addrs; } if (typeof trust !== "function") { trust = compile3(trust); } for (var i = 0; i < addrs.length - 1; i++) { if (trust(addrs[i], i)) continue; addrs.length = i + 1; } return addrs; } function compile3(val) { if (!val) { throw new TypeError("argument is required"); } var trust; if (typeof val === "string") { trust = [val]; } else if (Array.isArray(val)) { trust = val.slice(); } else { throw new TypeError("unsupported trust argument"); } for (var i = 0; i < trust.length; i++) { val = trust[i]; if (!Object.prototype.hasOwnProperty.call(IP_RANGES, val)) { continue; } val = IP_RANGES[val]; trust.splice.apply(trust, [i, 1].concat(val)); i += val.length - 1; } return compileTrust(compileRangeSubnets(trust)); } function compileRangeSubnets(arr) { var rangeSubnets = new Array(arr.length); for (var i = 0; i < arr.length; i++) { rangeSubnets[i] = parseipNotation(arr[i]); } return rangeSubnets; } function compileTrust(rangeSubnets) { var len = rangeSubnets.length; return len === 0 ? trustNone : len === 1 ? trustSingle(rangeSubnets[0]) : trustMulti(rangeSubnets); } function parseipNotation(note) { var pos = note.lastIndexOf("/"); var str = pos !== -1 ? note.substring(0, pos) : note; if (!isip(str)) { throw new TypeError("invalid IP address: " + str); } var ip = parseip(str); if (pos === -1 && ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { ip = ip.toIPv4Address(); } var max = ip.kind() === "ipv6" ? 128 : 32; var range = pos !== -1 ? note.substring(pos + 1, note.length) : null; if (range === null) { range = max; } else if (DIGIT_REGEXP.test(range)) { range = parseInt(range, 10); } else if (ip.kind() === "ipv4" && isip(range)) { range = parseNetmask(range); } else { range = null; } if (range <= 0 || range > max) { throw new TypeError("invalid range on address: " + note); } return [ip, range]; } function parseNetmask(netmask) { var ip = parseip(netmask); var kind = ip.kind(); return kind === "ipv4" ? ip.prefixLengthFromSubnetMask() : null; } function proxyaddr(req, trust) { if (!req) { throw new TypeError("req argument is required"); } if (!trust) { throw new TypeError("trust argument is required"); } var addrs = alladdrs(req, trust); var addr = addrs[addrs.length - 1]; return addr; } function trustNone() { return false; } function trustMulti(subnets) { return function trust(addr) { if (!isip(addr)) return false; var ip = parseip(addr); if (ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { ip = ip.toIPv4Address(); } var ipconv; var kind = ip.kind(); for (var i = 0; i < subnets.length; i++) { var subnet = subnets[i]; var subnetip = subnet[0]; var subnetkind = subnetip.kind(); var subnetrange = subnet[1]; var trusted = ip; if (kind !== subnetkind) { if (subnetkind === "ipv4" && !ip.isIPv4MappedAddress()) { continue; } if (subnetkind !== "ipv4" && !(subnetrange >= 96 && subnetip.isIPv4MappedAddress())) { continue; } if (!ipconv) { ipconv = subnetkind === "ipv4" ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); } trusted = ipconv; } else if (kind === "ipv6" && subnetip.isIPv4MappedAddress()) { continue; } if (trusted.match(subnetip, subnetrange)) { return true; } } return false; }; } function trustSingle(subnet) { var subnetip = subnet[0]; var subnetkind = subnetip.kind(); var subnetisipv4 = subnetkind === "ipv4"; var subnetrange = subnet[1]; return function trust(addr) { if (!isip(addr)) return false; var ip = parseip(addr); if (ip.kind() === "ipv6" && ip.isIPv4MappedAddress()) { ip = ip.toIPv4Address(); } var kind = ip.kind(); if (kind !== subnetkind) { if (subnetisipv4 && !ip.isIPv4MappedAddress()) { return false; } if (!subnetisipv4 && !(subnetrange >= 96 && subnetip.isIPv4MappedAddress())) { return false; } ip = subnetisipv4 ? ip.toIPv4Address() : ip.toIPv4MappedAddress(); } else if (kind === "ipv6" && subnetip.isIPv4MappedAddress()) { return false; } return ip.match(subnetip, subnetrange); }; } } }); // ../backend/node_modules/express/lib/utils.js var require_utils3 = __commonJS({ "../backend/node_modules/express/lib/utils.js"(exports2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safe_buffer().Buffer; var contentDisposition = require_content_disposition(); var contentType = require_content_type(); var deprecate = require_depd()("express"); var flatten = require_array_flatten(); var mime = require_send().mime; var etag = require_etag(); var proxyaddr = require_proxy_addr(); var qs = require_lib4(); var querystring = require("querystring"); exports2.etag = createETagGenerator({ weak: false }); exports2.wetag = createETagGenerator({ weak: true }); exports2.isAbsolute = function(path2) { if ("/" === path2[0]) return true; if (":" === path2[1] && ("\\" === path2[2] || "/" === path2[2])) return true; if ("\\\\" === path2.substring(0, 2)) return true; }; exports2.flatten = deprecate.function( flatten, "utils.flatten: use array-flatten npm module instead" ); exports2.normalizeType = function(type) { return ~type.indexOf("/") ? acceptParams(type) : { value: mime.lookup(type), params: {} }; }; exports2.normalizeTypes = function(types) { var ret = []; for (var i = 0; i < types.length; ++i) { ret.push(exports2.normalizeType(types[i])); } return ret; }; exports2.contentDisposition = deprecate.function( contentDisposition, "utils.contentDisposition: use content-disposition npm module instead" ); function acceptParams(str) { var parts = str.split(/ *; */); var ret = { value: parts[0], quality: 1, params: {} }; for (var i = 1; i < parts.length; ++i) { var pms = parts[i].split(/ *= */); if ("q" === pms[0]) { ret.quality = parseFloat(pms[1]); } else { ret.params[pms[0]] = pms[1]; } } return ret; } exports2.compileETag = function(val) { var fn; if (typeof val === "function") { return val; } switch (val) { case true: case "weak": fn = exports2.wetag; break; case false: break; case "strong": fn = exports2.etag; break; default: throw new TypeError("unknown value for etag function: " + val); } return fn; }; exports2.compileQueryParser = function compileQueryParser(val) { var fn; if (typeof val === "function") { return val; } switch (val) { case true: case "simple": fn = querystring.parse; break; case false: fn = newObject; break; case "extended": fn = parseExtendedQueryString; break; default: throw new TypeError("unknown value for query parser function: " + val); } return fn; }; exports2.compileTrust = function(val) { if (typeof val === "function") return val; if (val === true) { return function() { return true; }; } if (typeof val === "number") { return function(a, i) { return i < val; }; } if (typeof val === "string") { val = val.split(",").map(function(v) { return v.trim(); }); } return proxyaddr.compile(val || []); }; exports2.setCharset = function setCharset(type, charset) { if (!type || !charset) { return type; } var parsed = contentType.parse(type); parsed.parameters.charset = charset; return contentType.format(parsed); }; function createETagGenerator(options) { return function generateETag(body, encoding) { var buf = !Buffer2.isBuffer(body) ? Buffer2.from(body, encoding) : body; return etag(buf, options); }; } function parseExtendedQueryString(str) { return qs.parse(str, { allowPrototypes: true }); } function newObject() { return {}; } } }); // ../backend/node_modules/express/lib/application.js var require_application = __commonJS({ "../backend/node_modules/express/lib/application.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var finalhandler = require_finalhandler(); var Router = require_router(); var methods = require_methods(); var middleware = require_init(); var query = require_query(); var debug = require_src()("express:application"); var View = require_view(); var http = require("http"); var compileETag = require_utils3().compileETag; var compileQueryParser = require_utils3().compileQueryParser; var compileTrust = require_utils3().compileTrust; var deprecate = require_depd()("express"); var flatten = require_array_flatten(); var merge = require_utils_merge(); var resolve = require("path").resolve; var setPrototypeOf = require_setprototypeof(); var hasOwnProperty = Object.prototype.hasOwnProperty; var slice = Array.prototype.slice; var app2 = exports2 = module2.exports = {}; var trustProxyDefaultSymbol = "@@symbol:trust_proxy_default"; app2.init = function init() { this.cache = {}; this.engines = {}; this.settings = {}; this.defaultConfiguration(); }; app2.defaultConfiguration = function defaultConfiguration() { var env2 = process.env.NODE_ENV || "development"; this.enable("x-powered-by"); this.set("etag", "weak"); this.set("env", env2); this.set("query parser", "extended"); this.set("subdomain offset", 2); this.set("trust proxy", false); Object.defineProperty(this.settings, trustProxyDefaultSymbol, { configurable: true, value: true }); debug("booting in %s mode", env2); this.on("mount", function onmount(parent) { if (this.settings[trustProxyDefaultSymbol] === true && typeof parent.settings["trust proxy fn"] === "function") { delete this.settings["trust proxy"]; delete this.settings["trust proxy fn"]; } setPrototypeOf(this.request, parent.request); setPrototypeOf(this.response, parent.response); setPrototypeOf(this.engines, parent.engines); setPrototypeOf(this.settings, parent.settings); }); this.locals = /* @__PURE__ */ Object.create(null); this.mountpath = "/"; this.locals.settings = this.settings; this.set("view", View); this.set("views", resolve("views")); this.set("jsonp callback name", "callback"); if (env2 === "production") { this.enable("view cache"); } Object.defineProperty(this, "router", { get: function() { throw new Error("'app.router' is deprecated!\nPlease see the 3.x to 4.x migration guide for details on how to update your app."); } }); }; app2.lazyrouter = function lazyrouter() { if (!this._router) { this._router = new Router({ caseSensitive: this.enabled("case sensitive routing"), strict: this.enabled("strict routing") }); this._router.use(query(this.get("query parser fn"))); this._router.use(middleware.init(this)); } }; app2.handle = function handle2(req, res, callback) { var router = this._router; var done = callback || finalhandler(req, res, { env: this.get("env"), onerror: logerror.bind(this) }); if (!router) { debug("no routes defined on app"); done(); return; } router.handle(req, res, done); }; app2.use = function use(fn) { var offset = 0; var path2 = "/"; if (typeof fn !== "function") { var arg = fn; while (Array.isArray(arg) && arg.length !== 0) { arg = arg[0]; } if (typeof arg !== "function") { offset = 1; path2 = fn; } } var fns = flatten(slice.call(arguments, offset)); if (fns.length === 0) { throw new TypeError("app.use() requires a middleware function"); } this.lazyrouter(); var router = this._router; fns.forEach(function(fn2) { if (!fn2 || !fn2.handle || !fn2.set) { return router.use(path2, fn2); } debug(".use app under %s", path2); fn2.mountpath = path2; fn2.parent = this; router.use(path2, function mounted_app(req, res, next) { var orig = req.app; fn2.handle(req, res, function(err) { setPrototypeOf(req, orig.request); setPrototypeOf(res, orig.response); next(err); }); }); fn2.emit("mount", this); }, this); return this; }; app2.route = function route(path2) { this.lazyrouter(); return this._router.route(path2); }; app2.engine = function engine(ext, fn) { if (typeof fn !== "function") { throw new Error("callback function required"); } var extension = ext[0] !== "." ? "." + ext : ext; this.engines[extension] = fn; return this; }; app2.param = function param(name, fn) { this.lazyrouter(); if (Array.isArray(name)) { for (var i = 0; i < name.length; i++) { this.param(name[i], fn); } return this; } this._router.param(name, fn); return this; }; app2.set = function set(setting, val) { if (arguments.length === 1) { var settings = this.settings; while (settings && settings !== Object.prototype) { if (hasOwnProperty.call(settings, setting)) { return settings[setting]; } settings = Object.getPrototypeOf(settings); } return void 0; } debug('set "%s" to %o', setting, val); this.settings[setting] = val; switch (setting) { case "etag": this.set("etag fn", compileETag(val)); break; case "query parser": this.set("query parser fn", compileQueryParser(val)); break; case "trust proxy": this.set("trust proxy fn", compileTrust(val)); Object.defineProperty(this.settings, trustProxyDefaultSymbol, { configurable: true, value: false }); break; } return this; }; app2.path = function path2() { return this.parent ? this.parent.path() + this.mountpath : ""; }; app2.enabled = function enabled(setting) { return Boolean(this.set(setting)); }; app2.disabled = function disabled(setting) { return !this.set(setting); }; app2.enable = function enable(setting) { return this.set(setting, true); }; app2.disable = function disable(setting) { return this.set(setting, false); }; methods.forEach(function(method) { app2[method] = function(path2) { if (method === "get" && arguments.length === 1) { return this.set(path2); } this.lazyrouter(); var route = this._router.route(path2); route[method].apply(route, slice.call(arguments, 1)); return this; }; }); app2.all = function all(path2) { this.lazyrouter(); var route = this._router.route(path2); var args = slice.call(arguments, 1); for (var i = 0; i < methods.length; i++) { route[methods[i]].apply(route, args); } return this; }; app2.del = deprecate.function(app2.delete, "app.del: Use app.delete instead"); app2.render = function render2(name, options, callback) { var cache = this.cache; var done = callback; var engines = this.engines; var opts = options; var renderOptions = {}; var view; if (typeof options === "function") { done = options; opts = {}; } merge(renderOptions, this.locals); if (opts._locals) { merge(renderOptions, opts._locals); } merge(renderOptions, opts); if (renderOptions.cache == null) { renderOptions.cache = this.enabled("view cache"); } if (renderOptions.cache) { view = cache[name]; } if (!view) { var View2 = this.get("view"); view = new View2(name, { defaultEngine: this.get("view engine"), root: this.get("views"), engines }); if (!view.path) { var dirs = Array.isArray(view.root) && view.root.length > 1 ? 'directories "' + view.root.slice(0, -1).join('", "') + '" or "' + view.root[view.root.length - 1] + '"' : 'directory "' + view.root + '"'; var err = new Error('Failed to lookup view "' + name + '" in views ' + dirs); err.view = view; return done(err); } if (renderOptions.cache) { cache[name] = view; } } tryRender(view, renderOptions, done); }; app2.listen = function listen() { var server = http.createServer(this); return server.listen.apply(server, arguments); }; function logerror(err) { if (this.get("env") !== "test") console.error(err.stack || err.toString()); } function tryRender(view, options, callback) { try { view.render(options, callback); } catch (err) { callback(err); } } } }); // ../backend/node_modules/negotiator/lib/charset.js var require_charset = __commonJS({ "../backend/node_modules/negotiator/lib/charset.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = preferredCharsets; module2.exports.preferredCharsets = preferredCharsets; var simpleCharsetRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; function parseAcceptCharset(accept) { var accepts = accept.split(","); for (var i = 0, j = 0; i < accepts.length; i++) { var charset = parseCharset(accepts[i].trim(), i); if (charset) { accepts[j++] = charset; } } accepts.length = j; return accepts; } function parseCharset(str, i) { var match = simpleCharsetRegExp.exec(str); if (!match) return null; var charset = match[1]; var q = 1; if (match[2]) { var params = match[2].split(";"); for (var j = 0; j < params.length; j++) { var p = params[j].trim().split("="); if (p[0] === "q") { q = parseFloat(p[1]); break; } } } return { charset, q, i }; } function getCharsetPriority(charset, accepted, index2) { var priority = { o: -1, q: 0, s: 0 }; for (var i = 0; i < accepted.length; i++) { var spec = specify(charset, accepted[i], index2); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } function specify(charset, spec, index2) { var s = 0; if (spec.charset.toLowerCase() === charset.toLowerCase()) { s |= 1; } else if (spec.charset !== "*") { return null; } return { i: index2, o: spec.i, q: spec.q, s }; } function preferredCharsets(accept, provided) { var accepts = parseAcceptCharset(accept === void 0 ? "*" : accept || ""); if (!provided) { return accepts.filter(isQuality).sort(compareSpecs).map(getFullCharset); } var priorities = provided.map(function getPriority(type, index2) { return getCharsetPriority(type, accepts, index2); }); return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) { return provided[priorities.indexOf(priority)]; }); } function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } function getFullCharset(spec) { return spec.charset; } function isQuality(spec) { return spec.q > 0; } } }); // ../backend/node_modules/negotiator/lib/encoding.js var require_encoding = __commonJS({ "../backend/node_modules/negotiator/lib/encoding.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = preferredEncodings; module2.exports.preferredEncodings = preferredEncodings; var simpleEncodingRegExp = /^\s*([^\s;]+)\s*(?:;(.*))?$/; function parseAcceptEncoding(accept) { var accepts = accept.split(","); var hasIdentity = false; var minQuality = 1; for (var i = 0, j = 0; i < accepts.length; i++) { var encoding = parseEncoding(accepts[i].trim(), i); if (encoding) { accepts[j++] = encoding; hasIdentity = hasIdentity || specify("identity", encoding); minQuality = Math.min(minQuality, encoding.q || 1); } } if (!hasIdentity) { accepts[j++] = { encoding: "identity", q: minQuality, i }; } accepts.length = j; return accepts; } function parseEncoding(str, i) { var match = simpleEncodingRegExp.exec(str); if (!match) return null; var encoding = match[1]; var q = 1; if (match[2]) { var params = match[2].split(";"); for (var j = 0; j < params.length; j++) { var p = params[j].trim().split("="); if (p[0] === "q") { q = parseFloat(p[1]); break; } } } return { encoding, q, i }; } function getEncodingPriority(encoding, accepted, index2) { var priority = { o: -1, q: 0, s: 0 }; for (var i = 0; i < accepted.length; i++) { var spec = specify(encoding, accepted[i], index2); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } function specify(encoding, spec, index2) { var s = 0; if (spec.encoding.toLowerCase() === encoding.toLowerCase()) { s |= 1; } else if (spec.encoding !== "*") { return null; } return { i: index2, o: spec.i, q: spec.q, s }; } function preferredEncodings(accept, provided) { var accepts = parseAcceptEncoding(accept || ""); if (!provided) { return accepts.filter(isQuality).sort(compareSpecs).map(getFullEncoding); } var priorities = provided.map(function getPriority(type, index2) { return getEncodingPriority(type, accepts, index2); }); return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) { return provided[priorities.indexOf(priority)]; }); } function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } function getFullEncoding(spec) { return spec.encoding; } function isQuality(spec) { return spec.q > 0; } } }); // ../backend/node_modules/negotiator/lib/language.js var require_language = __commonJS({ "../backend/node_modules/negotiator/lib/language.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = preferredLanguages; module2.exports.preferredLanguages = preferredLanguages; var simpleLanguageRegExp = /^\s*([^\s\-;]+)(?:-([^\s;]+))?\s*(?:;(.*))?$/; function parseAcceptLanguage(accept) { var accepts = accept.split(","); for (var i = 0, j = 0; i < accepts.length; i++) { var language = parseLanguage(accepts[i].trim(), i); if (language) { accepts[j++] = language; } } accepts.length = j; return accepts; } function parseLanguage(str, i) { var match = simpleLanguageRegExp.exec(str); if (!match) return null; var prefix = match[1]; var suffix = match[2]; var full = prefix; if (suffix) full += "-" + suffix; var q = 1; if (match[3]) { var params = match[3].split(";"); for (var j = 0; j < params.length; j++) { var p = params[j].split("="); if (p[0] === "q") q = parseFloat(p[1]); } } return { prefix, suffix, q, i, full }; } function getLanguagePriority(language, accepted, index2) { var priority = { o: -1, q: 0, s: 0 }; for (var i = 0; i < accepted.length; i++) { var spec = specify(language, accepted[i], index2); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } function specify(language, spec, index2) { var p = parseLanguage(language); if (!p) return null; var s = 0; if (spec.full.toLowerCase() === p.full.toLowerCase()) { s |= 4; } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) { s |= 2; } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) { s |= 1; } else if (spec.full !== "*") { return null; } return { i: index2, o: spec.i, q: spec.q, s }; } function preferredLanguages(accept, provided) { var accepts = parseAcceptLanguage(accept === void 0 ? "*" : accept || ""); if (!provided) { return accepts.filter(isQuality).sort(compareSpecs).map(getFullLanguage); } var priorities = provided.map(function getPriority(type, index2) { return getLanguagePriority(type, accepts, index2); }); return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) { return provided[priorities.indexOf(priority)]; }); } function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } function getFullLanguage(spec) { return spec.full; } function isQuality(spec) { return spec.q > 0; } } }); // ../backend/node_modules/negotiator/lib/mediaType.js var require_mediaType = __commonJS({ "../backend/node_modules/negotiator/lib/mediaType.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = preferredMediaTypes; module2.exports.preferredMediaTypes = preferredMediaTypes; var simpleMediaTypeRegExp = /^\s*([^\s\/;]+)\/([^;\s]+)\s*(?:;(.*))?$/; function parseAccept(accept) { var accepts = splitMediaTypes(accept); for (var i = 0, j = 0; i < accepts.length; i++) { var mediaType = parseMediaType(accepts[i].trim(), i); if (mediaType) { accepts[j++] = mediaType; } } accepts.length = j; return accepts; } function parseMediaType(str, i) { var match = simpleMediaTypeRegExp.exec(str); if (!match) return null; var params = /* @__PURE__ */ Object.create(null); var q = 1; var subtype = match[2]; var type = match[1]; if (match[3]) { var kvps = splitParameters(match[3]).map(splitKeyValuePair); for (var j = 0; j < kvps.length; j++) { var pair = kvps[j]; var key = pair[0].toLowerCase(); var val = pair[1]; var value = val && val[0] === '"' && val[val.length - 1] === '"' ? val.substr(1, val.length - 2) : val; if (key === "q") { q = parseFloat(value); break; } params[key] = value; } } return { type, subtype, params, q, i }; } function getMediaTypePriority(type, accepted, index2) { var priority = { o: -1, q: 0, s: 0 }; for (var i = 0; i < accepted.length; i++) { var spec = specify(type, accepted[i], index2); if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) { priority = spec; } } return priority; } function specify(type, spec, index2) { var p = parseMediaType(type); var s = 0; if (!p) { return null; } if (spec.type.toLowerCase() == p.type.toLowerCase()) { s |= 4; } else if (spec.type != "*") { return null; } if (spec.subtype.toLowerCase() == p.subtype.toLowerCase()) { s |= 2; } else if (spec.subtype != "*") { return null; } var keys = Object.keys(spec.params); if (keys.length > 0) { if (keys.every(function(k) { return spec.params[k] == "*" || (spec.params[k] || "").toLowerCase() == (p.params[k] || "").toLowerCase(); })) { s |= 1; } else { return null; } } return { i: index2, o: spec.i, q: spec.q, s }; } function preferredMediaTypes(accept, provided) { var accepts = parseAccept(accept === void 0 ? "*/*" : accept || ""); if (!provided) { return accepts.filter(isQuality).sort(compareSpecs).map(getFullType); } var priorities = provided.map(function getPriority(type, index2) { return getMediaTypePriority(type, accepts, index2); }); return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) { return provided[priorities.indexOf(priority)]; }); } function compareSpecs(a, b) { return b.q - a.q || b.s - a.s || a.o - b.o || a.i - b.i || 0; } function getFullType(spec) { return spec.type + "/" + spec.subtype; } function isQuality(spec) { return spec.q > 0; } function quoteCount(string) { var count = 0; var index2 = 0; while ((index2 = string.indexOf('"', index2)) !== -1) { count++; index2++; } return count; } function splitKeyValuePair(str) { var index2 = str.indexOf("="); var key; var val; if (index2 === -1) { key = str; } else { key = str.substr(0, index2); val = str.substr(index2 + 1); } return [key, val]; } function splitMediaTypes(accept) { var accepts = accept.split(","); for (var i = 1, j = 0; i < accepts.length; i++) { if (quoteCount(accepts[j]) % 2 == 0) { accepts[++j] = accepts[i]; } else { accepts[j] += "," + accepts[i]; } } accepts.length = j + 1; return accepts; } function splitParameters(str) { var parameters = str.split(";"); for (var i = 1, j = 0; i < parameters.length; i++) { if (quoteCount(parameters[j]) % 2 == 0) { parameters[++j] = parameters[i]; } else { parameters[j] += ";" + parameters[i]; } } parameters.length = j + 1; for (var i = 0; i < parameters.length; i++) { parameters[i] = parameters[i].trim(); } return parameters; } } }); // ../backend/node_modules/negotiator/index.js var require_negotiator = __commonJS({ "../backend/node_modules/negotiator/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var preferredCharsets = require_charset(); var preferredEncodings = require_encoding(); var preferredLanguages = require_language(); var preferredMediaTypes = require_mediaType(); module2.exports = Negotiator; module2.exports.Negotiator = Negotiator; function Negotiator(request) { if (!(this instanceof Negotiator)) { return new Negotiator(request); } this.request = request; } Negotiator.prototype.charset = function charset(available) { var set = this.charsets(available); return set && set[0]; }; Negotiator.prototype.charsets = function charsets(available) { return preferredCharsets(this.request.headers["accept-charset"], available); }; Negotiator.prototype.encoding = function encoding(available) { var set = this.encodings(available); return set && set[0]; }; Negotiator.prototype.encodings = function encodings(available) { return preferredEncodings(this.request.headers["accept-encoding"], available); }; Negotiator.prototype.language = function language(available) { var set = this.languages(available); return set && set[0]; }; Negotiator.prototype.languages = function languages(available) { return preferredLanguages(this.request.headers["accept-language"], available); }; Negotiator.prototype.mediaType = function mediaType(available) { var set = this.mediaTypes(available); return set && set[0]; }; Negotiator.prototype.mediaTypes = function mediaTypes(available) { return preferredMediaTypes(this.request.headers.accept, available); }; Negotiator.prototype.preferredCharset = Negotiator.prototype.charset; Negotiator.prototype.preferredCharsets = Negotiator.prototype.charsets; Negotiator.prototype.preferredEncoding = Negotiator.prototype.encoding; Negotiator.prototype.preferredEncodings = Negotiator.prototype.encodings; Negotiator.prototype.preferredLanguage = Negotiator.prototype.language; Negotiator.prototype.preferredLanguages = Negotiator.prototype.languages; Negotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType; Negotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes; } }); // ../backend/node_modules/accepts/index.js var require_accepts = __commonJS({ "../backend/node_modules/accepts/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Negotiator = require_negotiator(); var mime = require_mime_types(); module2.exports = Accepts; function Accepts(req) { if (!(this instanceof Accepts)) { return new Accepts(req); } this.headers = req.headers; this.negotiator = new Negotiator(req); } Accepts.prototype.type = Accepts.prototype.types = function(types_) { var types = types_; if (types && !Array.isArray(types)) { types = new Array(arguments.length); for (var i = 0; i < types.length; i++) { types[i] = arguments[i]; } } if (!types || types.length === 0) { return this.negotiator.mediaTypes(); } if (!this.headers.accept) { return types[0]; } var mimes = types.map(extToMime); var accepts = this.negotiator.mediaTypes(mimes.filter(validMime)); var first = accepts[0]; return first ? types[mimes.indexOf(first)] : false; }; Accepts.prototype.encoding = Accepts.prototype.encodings = function(encodings_) { var encodings = encodings_; if (encodings && !Array.isArray(encodings)) { encodings = new Array(arguments.length); for (var i = 0; i < encodings.length; i++) { encodings[i] = arguments[i]; } } if (!encodings || encodings.length === 0) { return this.negotiator.encodings(); } return this.negotiator.encodings(encodings)[0] || false; }; Accepts.prototype.charset = Accepts.prototype.charsets = function(charsets_) { var charsets = charsets_; if (charsets && !Array.isArray(charsets)) { charsets = new Array(arguments.length); for (var i = 0; i < charsets.length; i++) { charsets[i] = arguments[i]; } } if (!charsets || charsets.length === 0) { return this.negotiator.charsets(); } return this.negotiator.charsets(charsets)[0] || false; }; Accepts.prototype.lang = Accepts.prototype.langs = Accepts.prototype.language = Accepts.prototype.languages = function(languages_) { var languages = languages_; if (languages && !Array.isArray(languages)) { languages = new Array(arguments.length); for (var i = 0; i < languages.length; i++) { languages[i] = arguments[i]; } } if (!languages || languages.length === 0) { return this.negotiator.languages(); } return this.negotiator.languages(languages)[0] || false; }; function extToMime(type) { return type.indexOf("/") === -1 ? mime.lookup(type) : type; } function validMime(type) { return typeof type === "string"; } } }); // ../backend/node_modules/express/lib/request.js var require_request = __commonJS({ "../backend/node_modules/express/lib/request.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var accepts = require_accepts(); var deprecate = require_depd()("express"); var isIP = require("net").isIP; var typeis = require_type_is(); var http = require("http"); var fresh = require_fresh(); var parseRange = require_range_parser(); var parse3 = require_parseurl(); var proxyaddr = require_proxy_addr(); var req = Object.create(http.IncomingMessage.prototype); module2.exports = req; req.get = req.header = function header(name) { if (!name) { throw new TypeError("name argument is required to req.get"); } if (typeof name !== "string") { throw new TypeError("name must be a string to req.get"); } var lc = name.toLowerCase(); switch (lc) { case "referer": case "referrer": return this.headers.referrer || this.headers.referer; default: return this.headers[lc]; } }; req.accepts = function() { var accept = accepts(this); return accept.types.apply(accept, arguments); }; req.acceptsEncodings = function() { var accept = accepts(this); return accept.encodings.apply(accept, arguments); }; req.acceptsEncoding = deprecate.function( req.acceptsEncodings, "req.acceptsEncoding: Use acceptsEncodings instead" ); req.acceptsCharsets = function() { var accept = accepts(this); return accept.charsets.apply(accept, arguments); }; req.acceptsCharset = deprecate.function( req.acceptsCharsets, "req.acceptsCharset: Use acceptsCharsets instead" ); req.acceptsLanguages = function() { var accept = accepts(this); return accept.languages.apply(accept, arguments); }; req.acceptsLanguage = deprecate.function( req.acceptsLanguages, "req.acceptsLanguage: Use acceptsLanguages instead" ); req.range = function range(size, options) { var range2 = this.get("Range"); if (!range2) return; return parseRange(size, range2, options); }; req.param = function param(name, defaultValue) { var params = this.params || {}; var body = this.body || {}; var query = this.query || {}; var args = arguments.length === 1 ? "name" : "name, default"; deprecate("req.param(" + args + "): Use req.params, req.body, or req.query instead"); if (null != params[name] && params.hasOwnProperty(name)) return params[name]; if (null != body[name]) return body[name]; if (null != query[name]) return query[name]; return defaultValue; }; req.is = function is3(types) { var arr = types; if (!Array.isArray(types)) { arr = new Array(arguments.length); for (var i = 0; i < arr.length; i++) { arr[i] = arguments[i]; } } return typeis(this, arr); }; defineGetter(req, "protocol", function protocol() { var proto = this.connection.encrypted ? "https" : "http"; var trust = this.app.get("trust proxy fn"); if (!trust(this.connection.remoteAddress, 0)) { return proto; } var header = this.get("X-Forwarded-Proto") || proto; var index2 = header.indexOf(","); return index2 !== -1 ? header.substring(0, index2).trim() : header.trim(); }); defineGetter(req, "secure", function secure() { return this.protocol === "https"; }); defineGetter(req, "ip", function ip() { var trust = this.app.get("trust proxy fn"); return proxyaddr(this, trust); }); defineGetter(req, "ips", function ips() { var trust = this.app.get("trust proxy fn"); var addrs = proxyaddr.all(this, trust); addrs.reverse().pop(); return addrs; }); defineGetter(req, "subdomains", function subdomains() { var hostname = this.hostname; if (!hostname) return []; var offset = this.app.get("subdomain offset"); var subdomains2 = !isIP(hostname) ? hostname.split(".").reverse() : [hostname]; return subdomains2.slice(offset); }); defineGetter(req, "path", function path2() { return parse3(this).pathname; }); defineGetter(req, "hostname", function hostname() { var trust = this.app.get("trust proxy fn"); var host = this.get("X-Forwarded-Host"); if (!host || !trust(this.connection.remoteAddress, 0)) { host = this.get("Host"); } else if (host.indexOf(",") !== -1) { host = host.substring(0, host.indexOf(",")).trimRight(); } if (!host) return; var offset = host[0] === "[" ? host.indexOf("]") + 1 : 0; var index2 = host.indexOf(":", offset); return index2 !== -1 ? host.substring(0, index2) : host; }); defineGetter(req, "host", deprecate.function(function host() { return this.hostname; }, "req.host: Use req.hostname instead")); defineGetter(req, "fresh", function() { var method = this.method; var res = this.res; var status = res.statusCode; if ("GET" !== method && "HEAD" !== method) return false; if (status >= 200 && status < 300 || 304 === status) { return fresh(this.headers, { "etag": res.get("ETag"), "last-modified": res.get("Last-Modified") }); } return false; }); defineGetter(req, "stale", function stale() { return !this.fresh; }); defineGetter(req, "xhr", function xhr() { var val = this.get("X-Requested-With") || ""; return val.toLowerCase() === "xmlhttprequest"; }); function defineGetter(obj, name, getter) { Object.defineProperty(obj, name, { configurable: true, enumerable: true, get: getter }); } } }); // ../backend/node_modules/cookie-signature/index.js var require_cookie_signature = __commonJS({ "../backend/node_modules/cookie-signature/index.js"(exports2) { init_define_import_meta_env(); var crypto4 = require("crypto"); exports2.sign = function(val, secret) { if ("string" !== typeof val) throw new TypeError("Cookie value must be provided as a string."); if (null == secret) throw new TypeError("Secret key must be provided."); return val + "." + crypto4.createHmac("sha256", secret).update(val).digest("base64").replace(/\=+$/, ""); }; exports2.unsign = function(val, secret) { if ("string" !== typeof val) throw new TypeError("Signed cookie string must be provided."); if (null == secret) throw new TypeError("Secret key must be provided."); var str = val.slice(0, val.lastIndexOf(".")), mac = exports2.sign(str, secret); return sha1(mac) == sha1(val) ? str : false; }; function sha1(str) { return crypto4.createHash("sha1").update(str).digest("hex"); } } }); // ../backend/node_modules/cookie/index.js var require_cookie = __commonJS({ "../backend/node_modules/cookie/index.js"(exports2) { "use strict"; init_define_import_meta_env(); exports2.parse = parse3; exports2.serialize = serialize; var __toString = Object.prototype.toString; var __hasOwnProperty = Object.prototype.hasOwnProperty; var cookieNameRegExp = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; var cookieValueRegExp = /^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/; var domainValueRegExp = /^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i; var pathValueRegExp = /^[\u0020-\u003A\u003D-\u007E]*$/; function parse3(str, opt) { if (typeof str !== "string") { throw new TypeError("argument str must be a string"); } var obj = {}; var len = str.length; if (len < 2) return obj; var dec = opt && opt.decode || decode; var index2 = 0; var eqIdx = 0; var endIdx = 0; do { eqIdx = str.indexOf("=", index2); if (eqIdx === -1) break; endIdx = str.indexOf(";", index2); if (endIdx === -1) { endIdx = len; } else if (eqIdx > endIdx) { index2 = str.lastIndexOf(";", eqIdx - 1) + 1; continue; } var keyStartIdx = startIndex(str, index2, eqIdx); var keyEndIdx = endIndex(str, eqIdx, keyStartIdx); var key = str.slice(keyStartIdx, keyEndIdx); if (!__hasOwnProperty.call(obj, key)) { var valStartIdx = startIndex(str, eqIdx + 1, endIdx); var valEndIdx = endIndex(str, endIdx, valStartIdx); if (str.charCodeAt(valStartIdx) === 34 && str.charCodeAt(valEndIdx - 1) === 34) { valStartIdx++; valEndIdx--; } var val = str.slice(valStartIdx, valEndIdx); obj[key] = tryDecode(val, dec); } index2 = endIdx + 1; } while (index2 < len); return obj; } function startIndex(str, index2, max) { do { var code = str.charCodeAt(index2); if (code !== 32 && code !== 9) return index2; } while (++index2 < max); return max; } function endIndex(str, index2, min) { while (index2 > min) { var code = str.charCodeAt(--index2); if (code !== 32 && code !== 9) return index2 + 1; } return min; } function serialize(name, val, opt) { var enc = opt && opt.encode || encodeURIComponent; if (typeof enc !== "function") { throw new TypeError("option encode is invalid"); } if (!cookieNameRegExp.test(name)) { throw new TypeError("argument name is invalid"); } var value = enc(val); if (!cookieValueRegExp.test(value)) { throw new TypeError("argument val is invalid"); } var str = name + "=" + value; if (!opt) return str; if (null != opt.maxAge) { var maxAge = Math.floor(opt.maxAge); if (!isFinite(maxAge)) { throw new TypeError("option maxAge is invalid"); } str += "; Max-Age=" + maxAge; } if (opt.domain) { if (!domainValueRegExp.test(opt.domain)) { throw new TypeError("option domain is invalid"); } str += "; Domain=" + opt.domain; } if (opt.path) { if (!pathValueRegExp.test(opt.path)) { throw new TypeError("option path is invalid"); } str += "; Path=" + opt.path; } if (opt.expires) { var expires = opt.expires; if (!isDate(expires) || isNaN(expires.valueOf())) { throw new TypeError("option expires is invalid"); } str += "; Expires=" + expires.toUTCString(); } if (opt.httpOnly) { str += "; HttpOnly"; } if (opt.secure) { str += "; Secure"; } if (opt.partitioned) { str += "; Partitioned"; } if (opt.priority) { var priority = typeof opt.priority === "string" ? opt.priority.toLowerCase() : opt.priority; switch (priority) { case "low": str += "; Priority=Low"; break; case "medium": str += "; Priority=Medium"; break; case "high": str += "; Priority=High"; break; default: throw new TypeError("option priority is invalid"); } } if (opt.sameSite) { var sameSite = typeof opt.sameSite === "string" ? opt.sameSite.toLowerCase() : opt.sameSite; switch (sameSite) { case true: str += "; SameSite=Strict"; break; case "lax": str += "; SameSite=Lax"; break; case "strict": str += "; SameSite=Strict"; break; case "none": str += "; SameSite=None"; break; default: throw new TypeError("option sameSite is invalid"); } } return str; } function decode(str) { return str.indexOf("%") !== -1 ? decodeURIComponent(str) : str; } function isDate(val) { return __toString.call(val) === "[object Date]"; } function tryDecode(str, decode2) { try { return decode2(str); } catch (e) { return str; } } } }); // ../backend/node_modules/vary/index.js var require_vary = __commonJS({ "../backend/node_modules/vary/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = vary; module2.exports.append = append2; var FIELD_NAME_REGEXP = /^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/; function append2(header, field) { if (typeof header !== "string") { throw new TypeError("header argument is required"); } if (!field) { throw new TypeError("field argument is required"); } var fields = !Array.isArray(field) ? parse3(String(field)) : field; for (var j = 0; j < fields.length; j++) { if (!FIELD_NAME_REGEXP.test(fields[j])) { throw new TypeError("field argument contains an invalid header name"); } } if (header === "*") { return header; } var val = header; var vals = parse3(header.toLowerCase()); if (fields.indexOf("*") !== -1 || vals.indexOf("*") !== -1) { return "*"; } for (var i = 0; i < fields.length; i++) { var fld = fields[i].toLowerCase(); if (vals.indexOf(fld) === -1) { vals.push(fld); val = val ? val + ", " + fields[i] : fields[i]; } } return val; } function parse3(header) { var end = 0; var list = []; var start = 0; for (var i = 0, len = header.length; i < len; i++) { switch (header.charCodeAt(i)) { case 32: if (start === end) { start = end = i + 1; } break; case 44: list.push(header.substring(start, end)); start = end = i + 1; break; default: end = i + 1; break; } } list.push(header.substring(start, end)); return list; } function vary(res, field) { if (!res || !res.getHeader || !res.setHeader) { throw new TypeError("res argument is required"); } var val = res.getHeader("Vary") || ""; var header = Array.isArray(val) ? val.join(", ") : String(val); if (val = append2(header, field)) { res.setHeader("Vary", val); } } } }); // ../backend/node_modules/express/lib/response.js var require_response = __commonJS({ "../backend/node_modules/express/lib/response.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Buffer2 = require_safe_buffer().Buffer; var contentDisposition = require_content_disposition(); var createError2 = require_http_errors(); var deprecate = require_depd()("express"); var encodeUrl = require_encodeurl(); var escapeHtml = require_escape_html(); var http = require("http"); var isAbsolute = require_utils3().isAbsolute; var onFinished = require_on_finished(); var path2 = require("path"); var statuses = require_statuses(); var merge = require_utils_merge(); var sign = require_cookie_signature().sign; var normalizeType = require_utils3().normalizeType; var normalizeTypes = require_utils3().normalizeTypes; var setCharset = require_utils3().setCharset; var cookie = require_cookie(); var send = require_send(); var extname = path2.extname; var mime = send.mime; var resolve = path2.resolve; var vary = require_vary(); var res = Object.create(http.ServerResponse.prototype); module2.exports = res; var charsetRegExp = /;\s*charset\s*=/; res.status = function status(code) { if ((typeof code === "string" || Math.floor(code) !== code) && code > 99 && code < 1e3) { deprecate("res.status(" + JSON.stringify(code) + "): use res.status(" + Math.floor(code) + ") instead"); } this.statusCode = code; return this; }; res.links = function(links) { var link = this.get("Link") || ""; if (link) link += ", "; return this.set("Link", link + Object.keys(links).map(function(rel) { return "<" + links[rel] + '>; rel="' + rel + '"'; }).join(", ")); }; res.send = function send2(body) { var chunk = body; var encoding; var req = this.req; var type; var app2 = this.app; if (arguments.length === 2) { if (typeof arguments[0] !== "number" && typeof arguments[1] === "number") { deprecate("res.send(body, status): Use res.status(status).send(body) instead"); this.statusCode = arguments[1]; } else { deprecate("res.send(status, body): Use res.status(status).send(body) instead"); this.statusCode = arguments[0]; chunk = arguments[1]; } } if (typeof chunk === "number" && arguments.length === 1) { if (!this.get("Content-Type")) { this.type("txt"); } deprecate("res.send(status): Use res.sendStatus(status) instead"); this.statusCode = chunk; chunk = statuses.message[chunk]; } switch (typeof chunk) { // string defaulting to html case "string": if (!this.get("Content-Type")) { this.type("html"); } break; case "boolean": case "number": case "object": if (chunk === null) { chunk = ""; } else if (Buffer2.isBuffer(chunk)) { if (!this.get("Content-Type")) { this.type("bin"); } } else { return this.json(chunk); } break; } if (typeof chunk === "string") { encoding = "utf8"; type = this.get("Content-Type"); if (typeof type === "string") { this.set("Content-Type", setCharset(type, "utf-8")); } } var etagFn = app2.get("etag fn"); var generateETag = !this.get("ETag") && typeof etagFn === "function"; var len; if (chunk !== void 0) { if (Buffer2.isBuffer(chunk)) { len = chunk.length; } else if (!generateETag && chunk.length < 1e3) { len = Buffer2.byteLength(chunk, encoding); } else { chunk = Buffer2.from(chunk, encoding); encoding = void 0; len = chunk.length; } this.set("Content-Length", len); } var etag; if (generateETag && len !== void 0) { if (etag = etagFn(chunk, encoding)) { this.set("ETag", etag); } } if (req.fresh) this.statusCode = 304; if (204 === this.statusCode || 304 === this.statusCode) { this.removeHeader("Content-Type"); this.removeHeader("Content-Length"); this.removeHeader("Transfer-Encoding"); chunk = ""; } if (this.statusCode === 205) { this.set("Content-Length", "0"); this.removeHeader("Transfer-Encoding"); chunk = ""; } if (req.method === "HEAD") { this.end(); } else { this.end(chunk, encoding); } return this; }; res.json = function json2(obj) { var val = obj; if (arguments.length === 2) { if (typeof arguments[1] === "number") { deprecate("res.json(obj, status): Use res.status(status).json(obj) instead"); this.statusCode = arguments[1]; } else { deprecate("res.json(status, obj): Use res.status(status).json(obj) instead"); this.statusCode = arguments[0]; val = arguments[1]; } } var app2 = this.app; var escape3 = app2.get("json escape"); var replacer = app2.get("json replacer"); var spaces = app2.get("json spaces"); var body = stringify(val, replacer, spaces, escape3); if (!this.get("Content-Type")) { this.set("Content-Type", "application/json"); } return this.send(body); }; res.jsonp = function jsonp(obj) { var val = obj; if (arguments.length === 2) { if (typeof arguments[1] === "number") { deprecate("res.jsonp(obj, status): Use res.status(status).jsonp(obj) instead"); this.statusCode = arguments[1]; } else { deprecate("res.jsonp(status, obj): Use res.status(status).jsonp(obj) instead"); this.statusCode = arguments[0]; val = arguments[1]; } } var app2 = this.app; var escape3 = app2.get("json escape"); var replacer = app2.get("json replacer"); var spaces = app2.get("json spaces"); var body = stringify(val, replacer, spaces, escape3); var callback = this.req.query[app2.get("jsonp callback name")]; if (!this.get("Content-Type")) { this.set("X-Content-Type-Options", "nosniff"); this.set("Content-Type", "application/json"); } if (Array.isArray(callback)) { callback = callback[0]; } if (typeof callback === "string" && callback.length !== 0) { this.set("X-Content-Type-Options", "nosniff"); this.set("Content-Type", "text/javascript"); callback = callback.replace(/[^\[\]\w$.]/g, ""); if (body === void 0) { body = ""; } else if (typeof body === "string") { body = body.replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); } body = "/**/ typeof " + callback + " === 'function' && " + callback + "(" + body + ");"; } return this.send(body); }; res.sendStatus = function sendStatus(statusCode) { var body = statuses.message[statusCode] || String(statusCode); this.statusCode = statusCode; this.type("txt"); return this.send(body); }; res.sendFile = function sendFile(path3, options, callback) { var done = callback; var req = this.req; var res2 = this; var next = req.next; var opts = options || {}; if (!path3) { throw new TypeError("path argument is required to res.sendFile"); } if (typeof path3 !== "string") { throw new TypeError("path must be a string to res.sendFile"); } if (typeof options === "function") { done = options; opts = {}; } if (!opts.root && !isAbsolute(path3)) { throw new TypeError("path must be absolute or specify root to res.sendFile"); } var pathname = encodeURI(path3); var file = send(req, pathname, opts); sendfile(res2, file, opts, function(err) { if (done) return done(err); if (err && err.code === "EISDIR") return next(); if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") { next(err); } }); }; res.sendfile = function(path3, options, callback) { var done = callback; var req = this.req; var res2 = this; var next = req.next; var opts = options || {}; if (typeof options === "function") { done = options; opts = {}; } var file = send(req, path3, opts); sendfile(res2, file, opts, function(err) { if (done) return done(err); if (err && err.code === "EISDIR") return next(); if (err && err.code !== "ECONNABORTED" && err.syscall !== "write") { next(err); } }); }; res.sendfile = deprecate.function( res.sendfile, "res.sendfile: Use res.sendFile instead" ); res.download = function download(path3, filename, options, callback) { var done = callback; var name = filename; var opts = options || null; if (typeof filename === "function") { done = filename; name = null; opts = null; } else if (typeof options === "function") { done = options; opts = null; } if (typeof filename === "object" && (typeof options === "function" || options === void 0)) { name = null; opts = filename; } var headers = { "Content-Disposition": contentDisposition(name || path3) }; if (opts && opts.headers) { var keys = Object.keys(opts.headers); for (var i = 0; i < keys.length; i++) { var key = keys[i]; if (key.toLowerCase() !== "content-disposition") { headers[key] = opts.headers[key]; } } } opts = Object.create(opts); opts.headers = headers; var fullPath = !opts.root ? resolve(path3) : path3; return this.sendFile(fullPath, opts, done); }; res.contentType = res.type = function contentType(type) { var ct = type.indexOf("/") === -1 ? mime.lookup(type) : type; return this.set("Content-Type", ct); }; res.format = function(obj) { var req = this.req; var next = req.next; var keys = Object.keys(obj).filter(function(v) { return v !== "default"; }); var key = keys.length > 0 ? req.accepts(keys) : false; this.vary("Accept"); if (key) { this.set("Content-Type", normalizeType(key).value); obj[key](req, this, next); } else if (obj.default) { obj.default(req, this, next); } else { next(createError2(406, { types: normalizeTypes(keys).map(function(o) { return o.value; }) })); } return this; }; res.attachment = function attachment(filename) { if (filename) { this.type(extname(filename)); } this.set("Content-Disposition", contentDisposition(filename)); return this; }; res.append = function append2(field, val) { var prev = this.get(field); var value = val; if (prev) { value = Array.isArray(prev) ? prev.concat(val) : Array.isArray(val) ? [prev].concat(val) : [prev, val]; } return this.set(field, value); }; res.set = res.header = function header(field, val) { if (arguments.length === 2) { var value = Array.isArray(val) ? val.map(String) : String(val); if (field.toLowerCase() === "content-type") { if (Array.isArray(value)) { throw new TypeError("Content-Type cannot be set to an Array"); } if (!charsetRegExp.test(value)) { var charset = mime.charsets.lookup(value.split(";")[0]); if (charset) value += "; charset=" + charset.toLowerCase(); } } this.setHeader(field, value); } else { for (var key in field) { this.set(key, field[key]); } } return this; }; res.get = function(field) { return this.getHeader(field); }; res.clearCookie = function clearCookie(name, options) { if (options) { if (options.maxAge) { deprecate('res.clearCookie: Passing "options.maxAge" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); } if (options.expires) { deprecate('res.clearCookie: Passing "options.expires" is deprecated. In v5.0.0 of Express, this option will be ignored, as res.clearCookie will automatically set cookies to expire immediately. Please update your code to omit this option.'); } } var opts = merge({ expires: /* @__PURE__ */ new Date(1), path: "/" }, options); return this.cookie(name, "", opts); }; res.cookie = function(name, value, options) { var opts = merge({}, options); var secret = this.req.secret; var signed = opts.signed; if (signed && !secret) { throw new Error('cookieParser("secret") required for signed cookies'); } var val = typeof value === "object" ? "j:" + JSON.stringify(value) : String(value); if (signed) { val = "s:" + sign(val, secret); } if (opts.maxAge != null) { var maxAge = opts.maxAge - 0; if (!isNaN(maxAge)) { opts.expires = new Date(Date.now() + maxAge); opts.maxAge = Math.floor(maxAge / 1e3); } } if (opts.path == null) { opts.path = "/"; } this.append("Set-Cookie", cookie.serialize(name, String(val), opts)); return this; }; res.location = function location(url) { var loc; if (url === "back") { deprecate('res.location("back"): use res.location(req.get("Referrer") || "/") and refer to https://dub.sh/security-redirect for best practices'); loc = this.req.get("Referrer") || "/"; } else { loc = String(url); } return this.set("Location", encodeUrl(loc)); }; res.redirect = function redirect(url) { var address = url; var body; var status = 302; if (arguments.length === 2) { if (typeof arguments[0] === "number") { status = arguments[0]; address = arguments[1]; } else { deprecate("res.redirect(url, status): Use res.redirect(status, url) instead"); status = arguments[1]; } } address = this.location(address).get("Location"); this.format({ text: function() { body = statuses.message[status] + ". Redirecting to " + address; }, html: function() { var u = escapeHtml(address); body = "

" + statuses.message[status] + ". Redirecting to " + u + "

"; }, default: function() { body = ""; } }); this.statusCode = status; this.set("Content-Length", Buffer2.byteLength(body)); if (this.req.method === "HEAD") { this.end(); } else { this.end(body); } }; res.vary = function(field) { if (!field || Array.isArray(field) && !field.length) { deprecate("res.vary(): Provide a field name"); return this; } vary(this, field); return this; }; res.render = function render2(view, options, callback) { var app2 = this.req.app; var done = callback; var opts = options || {}; var req = this.req; var self2 = this; if (typeof options === "function") { done = options; opts = {}; } opts._locals = self2.locals; done = done || function(err, str) { if (err) return req.next(err); self2.send(str); }; app2.render(view, opts, done); }; function sendfile(res2, file, options, callback) { var done = false; var streaming; function onaborted() { if (done) return; done = true; var err = new Error("Request aborted"); err.code = "ECONNABORTED"; callback(err); } function ondirectory() { if (done) return; done = true; var err = new Error("EISDIR, read"); err.code = "EISDIR"; callback(err); } function onerror(err) { if (done) return; done = true; callback(err); } function onend() { if (done) return; done = true; callback(); } function onfile() { streaming = false; } function onfinish(err) { if (err && err.code === "ECONNRESET") return onaborted(); if (err) return onerror(err); if (done) return; setImmediate(function() { if (streaming !== false && !done) { onaborted(); return; } if (done) return; done = true; callback(); }); } function onstream() { streaming = true; } file.on("directory", ondirectory); file.on("end", onend); file.on("error", onerror); file.on("file", onfile); file.on("stream", onstream); onFinished(res2, onfinish); if (options.headers) { file.on("headers", function headers(res3) { var obj = options.headers; var keys = Object.keys(obj); for (var i = 0; i < keys.length; i++) { var k = keys[i]; res3.setHeader(k, obj[k]); } }); } file.pipe(res2); } function stringify(value, replacer, spaces, escape3) { var json2 = replacer || spaces ? JSON.stringify(value, replacer, spaces) : JSON.stringify(value); if (escape3 && typeof json2 === "string") { json2 = json2.replace(/[<>&]/g, function(c) { switch (c.charCodeAt(0)) { case 60: return "\\u003c"; case 62: return "\\u003e"; case 38: return "\\u0026"; /* istanbul ignore next: unreachable default */ default: return c; } }); } return json2; } } }); // ../backend/node_modules/serve-static/index.js var require_serve_static = __commonJS({ "../backend/node_modules/serve-static/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var encodeUrl = require_encodeurl(); var escapeHtml = require_escape_html(); var parseUrl = require_parseurl(); var resolve = require("path").resolve; var send = require_send(); var url = require("url"); module2.exports = serveStatic; module2.exports.mime = send.mime; function serveStatic(root, options) { if (!root) { throw new TypeError("root path required"); } if (typeof root !== "string") { throw new TypeError("root path must be a string"); } var opts = Object.create(options || null); var fallthrough = opts.fallthrough !== false; var redirect = opts.redirect !== false; var setHeaders = opts.setHeaders; if (setHeaders && typeof setHeaders !== "function") { throw new TypeError("option setHeaders must be function"); } opts.maxage = opts.maxage || opts.maxAge || 0; opts.root = resolve(root); var onDirectory = redirect ? createRedirectDirectoryListener() : createNotFoundDirectoryListener(); return function serveStatic2(req, res, next) { if (req.method !== "GET" && req.method !== "HEAD") { if (fallthrough) { return next(); } res.statusCode = 405; res.setHeader("Allow", "GET, HEAD"); res.setHeader("Content-Length", "0"); res.end(); return; } var forwardError = !fallthrough; var originalUrl = parseUrl.original(req); var path2 = parseUrl(req).pathname; if (path2 === "/" && originalUrl.pathname.substr(-1) !== "/") { path2 = ""; } var stream = send(req, path2, opts); stream.on("directory", onDirectory); if (setHeaders) { stream.on("headers", setHeaders); } if (fallthrough) { stream.on("file", function onFile() { forwardError = true; }); } stream.on("error", function error(err) { if (forwardError || !(err.statusCode < 500)) { next(err); return; } next(); }); stream.pipe(res); }; } function collapseLeadingSlashes(str) { for (var i = 0; i < str.length; i++) { if (str.charCodeAt(i) !== 47) { break; } } return i > 1 ? "/" + str.substr(i) : str; } function createHtmlDocument(title, body) { return '\n\n\n\n' + title + "\n\n\n
" + body + "
\n\n\n"; } function createNotFoundDirectoryListener() { return function notFound() { this.error(404); }; } function createRedirectDirectoryListener() { return function redirect(res) { if (this.hasTrailingSlash()) { this.error(404); return; } var originalUrl = parseUrl.original(this.req); originalUrl.path = null; originalUrl.pathname = collapseLeadingSlashes(originalUrl.pathname + "/"); var loc = encodeUrl(url.format(originalUrl)); var doc = createHtmlDocument("Redirecting", "Redirecting to " + escapeHtml(loc)); res.statusCode = 301; res.setHeader("Content-Type", "text/html; charset=UTF-8"); res.setHeader("Content-Length", Buffer.byteLength(doc)); res.setHeader("Content-Security-Policy", "default-src 'none'"); res.setHeader("X-Content-Type-Options", "nosniff"); res.setHeader("Location", loc); res.end(doc); }; } } }); // ../backend/node_modules/express/lib/express.js var require_express = __commonJS({ "../backend/node_modules/express/lib/express.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var bodyParser = require_body_parser(); var EventEmitter = require("events").EventEmitter; var mixin = require_merge_descriptors(); var proto = require_application(); var Route = require_route(); var Router = require_router(); var req = require_request(); var res = require_response(); exports2 = module2.exports = createApplication; function createApplication() { var app2 = function(req2, res2, next) { app2.handle(req2, res2, next); }; mixin(app2, EventEmitter.prototype, false); mixin(app2, proto, false); app2.request = Object.create(req, { app: { configurable: true, enumerable: true, writable: true, value: app2 } }); app2.response = Object.create(res, { app: { configurable: true, enumerable: true, writable: true, value: app2 } }); app2.init(); return app2; } exports2.application = proto; exports2.request = req; exports2.response = res; exports2.Route = Route; exports2.Router = Router; exports2.json = bodyParser.json; exports2.query = require_query(); exports2.raw = bodyParser.raw; exports2.static = require_serve_static(); exports2.text = bodyParser.text; exports2.urlencoded = bodyParser.urlencoded; var removedMiddlewares = [ "bodyParser", "compress", "cookieSession", "session", "logger", "cookieParser", "favicon", "responseTime", "errorHandler", "timeout", "methodOverride", "vhost", "csrf", "directory", "limit", "multipart", "staticCache" ]; removedMiddlewares.forEach(function(name) { Object.defineProperty(exports2, name, { get: function() { throw new Error("Most middleware (like " + name + ") is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware."); }, configurable: true }); }); } }); // ../backend/node_modules/express/index.js var require_express2 = __commonJS({ "../backend/node_modules/express/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = require_express(); } }); // node_modules/linkedom/cjs/shared/symbols.js var require_symbols = __commonJS({ "node_modules/linkedom/cjs/shared/symbols.js"(exports2) { "use strict"; init_define_import_meta_env(); var CHANGED = /* @__PURE__ */ Symbol("changed"); exports2.CHANGED = CHANGED; var CLASS_LIST = /* @__PURE__ */ Symbol("classList"); exports2.CLASS_LIST = CLASS_LIST; var CUSTOM_ELEMENTS = /* @__PURE__ */ Symbol("CustomElements"); exports2.CUSTOM_ELEMENTS = CUSTOM_ELEMENTS; var CONTENT = /* @__PURE__ */ Symbol("content"); exports2.CONTENT = CONTENT; var DATASET = /* @__PURE__ */ Symbol("dataset"); exports2.DATASET = DATASET; var DOCTYPE = /* @__PURE__ */ Symbol("doctype"); exports2.DOCTYPE = DOCTYPE; var DOM_PARSER = /* @__PURE__ */ Symbol("DOMParser"); exports2.DOM_PARSER = DOM_PARSER; var END = /* @__PURE__ */ Symbol("end"); exports2.END = END; var EVENT_TARGET = /* @__PURE__ */ Symbol("EventTarget"); exports2.EVENT_TARGET = EVENT_TARGET; var GLOBALS = /* @__PURE__ */ Symbol("globals"); exports2.GLOBALS = GLOBALS; var IMAGE = /* @__PURE__ */ Symbol("image"); exports2.IMAGE = IMAGE; var MIME = /* @__PURE__ */ Symbol("mime"); exports2.MIME = MIME; var MUTATION_OBSERVER = /* @__PURE__ */ Symbol("MutationObserver"); exports2.MUTATION_OBSERVER = MUTATION_OBSERVER; var NEXT = /* @__PURE__ */ Symbol("next"); exports2.NEXT = NEXT; var OWNER_ELEMENT = /* @__PURE__ */ Symbol("ownerElement"); exports2.OWNER_ELEMENT = OWNER_ELEMENT; var PREV = /* @__PURE__ */ Symbol("prev"); exports2.PREV = PREV; var PRIVATE = /* @__PURE__ */ Symbol("private"); exports2.PRIVATE = PRIVATE; var SHEET = /* @__PURE__ */ Symbol("sheet"); exports2.SHEET = SHEET; var START = /* @__PURE__ */ Symbol("start"); exports2.START = START; var STYLE = /* @__PURE__ */ Symbol("style"); exports2.STYLE = STYLE; var UPGRADE = /* @__PURE__ */ Symbol("upgrade"); exports2.UPGRADE = UPGRADE; var VALUE = /* @__PURE__ */ Symbol("value"); exports2.VALUE = VALUE; } }); // node_modules/entities/dist/commonjs/decode-codepoint.js var require_decode_codepoint = __commonJS({ "node_modules/entities/dist/commonjs/decode-codepoint.js"(exports2) { "use strict"; init_define_import_meta_env(); var _a; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.fromCodePoint = void 0; exports2.replaceCodePoint = replaceCodePoint; exports2.decodeCodePoint = decodeCodePoint; var decodeMap = /* @__PURE__ */ new Map([ [0, 65533], // C1 Unicode control character reference replacements [128, 8364], [130, 8218], [131, 402], [132, 8222], [133, 8230], [134, 8224], [135, 8225], [136, 710], [137, 8240], [138, 352], [139, 8249], [140, 338], [142, 381], [145, 8216], [146, 8217], [147, 8220], [148, 8221], [149, 8226], [150, 8211], [151, 8212], [152, 732], [153, 8482], [154, 353], [155, 8250], [156, 339], [158, 382], [159, 376] ]); exports2.fromCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, n/no-unsupported-features/es-builtins (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : ((codePoint) => { let output = ""; if (codePoint > 65535) { codePoint -= 65536; output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); codePoint = 56320 | codePoint & 1023; } output += String.fromCharCode(codePoint); return output; }); function replaceCodePoint(codePoint) { var _a2; if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { return 65533; } return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint; } function decodeCodePoint(codePoint) { return (0, exports2.fromCodePoint)(replaceCodePoint(codePoint)); } } }); // node_modules/entities/dist/commonjs/internal/decode-shared.js var require_decode_shared = __commonJS({ "node_modules/entities/dist/commonjs/internal/decode-shared.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.decodeBase64 = decodeBase64; function decodeBase64(input) { const binary = ( // eslint-disable-next-line n/no-unsupported-features/node-builtins typeof atob === "function" ? ( // Browser (and Node >=16) // eslint-disable-next-line n/no-unsupported-features/node-builtins atob(input) ) : ( // Older Node versions (<16) // eslint-disable-next-line n/no-unsupported-features/node-builtins typeof Buffer.from === "function" ? ( // eslint-disable-next-line n/no-unsupported-features/node-builtins Buffer.from(input, "base64").toString("binary") ) : ( // eslint-disable-next-line unicorn/no-new-buffer, n/no-deprecated-api new Buffer(input, "base64").toString("binary") ) ) ); const evenLength = binary.length & ~1; const out = new Uint16Array(evenLength / 2); for (let index2 = 0, outIndex = 0; index2 < evenLength; index2 += 2) { const lo = binary.charCodeAt(index2); const hi = binary.charCodeAt(index2 + 1); out[outIndex++] = lo | hi << 8; } return out; } } }); // node_modules/entities/dist/commonjs/generated/decode-data-html.js var require_decode_data_html = __commonJS({ "node_modules/entities/dist/commonjs/generated/decode-data-html.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.htmlDecodeTree = void 0; var decode_shared_js_1 = require_decode_shared(); exports2.htmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IAAOA12J/c8iFvaxBhAAhOVGFjZGZnbG1vcHFzdHV4owOlA6kDsAO/A8IDxgPNA9ID8gP9AwEEFAQeBCAEJQRHAEphSAA7gNAA0EBjAHUAdABlADuAyQDJQIABYWl5ALYDuQO+A/Ihb24aYXIAYwA7gMoAykAtZG8AdAAWYXIAAOA12AjdcgBhAHYAZQA7gMgAyEDlIm1lbnQAoAgiAAFhcNYD2QNjAHIAEmF0AHkAUwLhAwAAAADpA20lYWxsU3F1YXJlAACg+yVlJ3J5U21hbGxTcXVhcmUAAKCrJQABZ3D2A/kDbwBuABhhZgAA4DXYPN3zImlsb26VY3UAAAFhaQYEDgRsAFSgdSppImxkZQAAoEIi7CNpYnJpdW0AoMwhAAFjaRgEGwRyAACgMCFtAACgcyphAJdjbQBsADuAywDLQAABaXApBC0E8yF0cwCgAyLvJG5lbnRpYWxFAKBHIYACY2Zpb3MAPQQ/BEMEXQRyBHkAJGRyAADgNdgJ3WwibGVkAFMCTAQAAAAAVARtJWFsbFNxdWFyZQAAoPwlZSdyeVNtYWxsU3F1YXJlAACgqiVwA2UEAABpBAAAAABtBGYAAOA12D3dwSFsbACgACLyI2llcnRyZgCgMSFjAPIAcQQABkpUYWJjZGZnb3JzdIgEiwSOBJMElwSkBKcEqwStBLIE5QTqBGMAeQADZDuAPgA+QO0hbWFkoJMD3GNyImV2ZQAeYYABZWl5AJ0EoASjBOQhaWwiYXIAYwAcYRNkbwB0ACBhcgAA4DXYCt0AoNkicABmAADgNdg+3eUiYXRlcgADRUZHTFNUvwTIBM8E1QTZBOAEcSJ1YWwATKBlIuUhc3MAoNsidSRsbEVxdWFsAACgZyJyI2VhdGVyAACgoirlIXNzAKB3IuwkYW50RXF1YWwAoH4qaSJsZGUAAKBzImMAcgAA4DXYotwAoGsiAARBYWNmaW9zdfkE/QQFBQgFCwUTBSIFKwVSIkRjeQAqZAABY3QBBQQFZQBrAMdiXmDpIXJjJGFyAACgDCFsJWJlcnRTcGFjZQAAoAsh8AEYBQAAGwVmAACgDSHpJXpvbnRhbExpbmUAoAAlAAFjdCYFKAXyABIF8iFvayZhbQBwAEQBMQU5BW8AdwBuAEgAdQBtAPAAAAFxInVhbAAAoE8iAAdFSk9hY2RmZ21ub3N0dVMFVgVZBVwFYwVtBXAFcwV6BZAFtgXFBckFzQVjAHkAFWTsIWlnMmFjAHkAAWRjAHUAdABlADuAzQDNQAABaXlnBWwFcgBjADuAzgDOQBhkbwB0ADBhcgAAoBEhcgBhAHYAZQA7gMwAzEAAoREhYXB/BYsFAAFjZ4MFhQVyACphaSNuYXJ5SQAAoEghbABpAGUA8wD6AvQBlQUAAKUFZaAsIgABZ3KaBZ4F8iFhbACgKyLzI2VjdGlvbgCgwiJpI3NpYmxlAAABQ1SsBbEFbyJtbWEAAKBjIGkibWVzAACgYiCAAWdwdAC8Bb8FwwVvAG4ALmFmAADgNdhA3WEAmWNjAHIAAKAQIWkibGRlAChh6wHSBQAA1QVjAHkABmRsADuAzwDPQIACY2Zvc3UA4QXpBe0F8gX9BQABaXnlBegFcgBjADRhGWRyAADgNdgN3XAAZgAA4DXYQd3jAfcFAAD7BXIAAOA12KXc8iFjeQhk6yFjeQRkgANISmFjZm9zAAwGDwYSBhUGHQYhBiYGYwB5ACVkYwB5AAxk8CFwYZpjAAFleRkGHAbkIWlsNmEaZHIAAOA12A7dcABmAADgNdhC3WMAcgAA4DXYptyABUpUYWNlZmxtb3N0AD0GQAZDBl4GawZkB2gHcAd0B80H2gdjAHkACWQ7gDwAPECAAmNtbnByAEwGTwZSBlUGWwb1IXRlOWHiIWRhm2NnAACg6ifsI2FjZXRyZgCgEiFyAACgniGAAWFleQBkBmcGagbyIW9uPWHkIWlsO2EbZAABZnNvBjQHdAAABUFDREZSVFVWYXKABp4GpAbGBssG3AYDByEHwQIqBwABbnKEBowGZyVsZUJyYWNrZXQAAKDoJ/Ihb3cAoZAhQlKTBpcGYQByAACg5CHpJGdodEFycm93AKDGIWUjaWxpbmcAAKAII28A9QGqBgAAsgZiJWxlQnJhY2tldAAAoOYnbgDUAbcGAAC+BmUkZVZlY3RvcgAAoGEp5SJjdG9yQqDDIWEAcgAAoFkpbCJvb3IAAKAKI2kiZ2h0AAABQVbSBtcGciJyb3cAAKCUIeUiY3RvcgCgTikAAWVy4AbwBmUAAKGjIkFW5gbrBnIicm93AACgpCHlImN0b3IAoFopaSNhbmdsZQBCorIi+wYAAAAA/wZhAHIAAKDPKXEidWFsAACgtCJwAIABRFRWAAoHEQcYB+8kd25WZWN0b3IAoFEpZSRlVmVjdG9yAACgYCnlImN0b3JCoL8hYQByAACgWCnlImN0b3JCoLwhYQByAACgUilpAGcAaAB0AGEAcgByAG8A9wDMAnMAAANFRkdMU1Q/B0cHTgdUB1gHXwfxJXVhbEdyZWF0ZXIAoNoidSRsbEVxdWFsAACgZiJyI2VhdGVyAACgdiLlIXNzAKChKuwkYW50RXF1YWwAoH0qaSJsZGUAAKByInIAAOA12A/dZaDYIuYjdGFycm93AKDaIWkiZG90AD9hgAFucHcAege1B7kHZwAAAkxSbHKCB5QHmwerB+UhZnQAAUFSiAeNB3Iicm93AACg9SfpJGdodEFycm93AKD3J+kkZ2h0QXJyb3cAoPYn5SFmdAABYXLcAqEHaQBnAGgAdABhAHIAcgBvAPcA5wJpAGcAaAB0AGEAcgByAG8A9wDuAmYAAOA12EPdZQByAAABTFK/B8YHZSRmdEFycm93AACgmSHpJGdodEFycm93AKCYIYABY2h0ANMH1QfXB/IAWgYAoLAh8iFva0FhAKBqIgAEYWNlZmlvc3XpB+wH7gf/BwMICQgOCBEIcAAAoAUpeQAcZAABZGzyB/kHaSR1bVNwYWNlAACgXyBsI2ludHJmAACgMyFyAADgNdgQ3e4jdXNQbHVzAKATInAAZgAA4DXYRN1jAPIA/gecY4AESmFjZWZvc3R1ACEIJAgoCDUIgQiFCDsKQApHCmMAeQAKZGMidXRlAENhgAFhZXkALggxCDQI8iFvbkdh5CFpbEVhHWSAAWdzdwA7CGEIfQjhInRpdmWAAU1UVgBECEwIWQhlJWRpdW1TcGFjZQAAoAsgaABpAAABY25SCFMIawBTAHAAYQBjAOUASwhlAHIAeQBUAGgAaQDuAFQI9CFlZAABR0xnCHUIcgBlAGEAdABlAHIARwByAGUAYQB0AGUA8gDrBGUAcwBzAEwAZQBzAPMA2wdMImluZQAKYHIAAOA12BHdAAJCbnB0jAiRCJkInAhyImVhawAAoGAgwiZyZWFraW5nU3BhY2WgYGYAAKAVIUOq7CqzCMIIzQgAAOcIGwkAAAAAAAAtCQAAbwkAAIcJAACdCcAJGQoAADQKAAFvdbYIvAjuI2dydWVudACgYiJwIkNhcAAAoG0ibyh1YmxlVmVydGljYWxCYXIAAKAmIoABbHF4ANII1wjhCOUibWVudACgCSL1IWFsVKBgImkibGRlAADgQiI4A2kic3RzAACgBCJyI2VhdGVyAACjbyJFRkdMU1T1CPoIAgkJCQ0JFQlxInVhbAAAoHEidSRsbEVxdWFsAADgZyI4A3IjZWF0ZXIAAOBrIjgD5SFzcwCgeSLsJGFudEVxdWFsAOB+KjgDaSJsZGUAAKB1IvUhbXBEASAJJwnvI3duSHVtcADgTiI4A3EidWFsAADgTyI4A2UAAAFmczEJRgn0JFRyaWFuZ2xlQqLqIj0JAAAAAEIJYQByAADgzyk4A3EidWFsAACg7CJzAICibiJFR0xTVABRCVYJXAlhCWkJcSJ1YWwAAKBwInIjZWF0ZXIAAKB4IuUhc3MA4GoiOAPsJGFudEVxdWFsAOB9KjgDaSJsZGUAAKB0IuUic3RlZAABR0x1CX8J8iZlYXRlckdyZWF0ZXIA4KIqOAPlI3NzTGVzcwDgoSo4A/IjZWNlZGVzAKGAIkVTjwmVCXEidWFsAADgryo4A+wkYW50RXF1YWwAoOAiAAFlaaAJqQl2JmVyc2VFbGVtZW50AACgDCLnJWh0VHJpYW5nbGVCousitgkAAAAAuwlhAHIAAODQKTgDcSJ1YWwAAKDtIgABcXXDCeAJdSNhcmVTdQAAAWJwywnVCfMhZXRF4I8iOANxInVhbAAAoOIi5SJyc2V0ReCQIjgDcSJ1YWwAAKDjIoABYmNwAOYJ8AkNCvMhZXRF4IIi0iBxInVhbAAAoIgi4yJlZWRzgKGBIkVTVAD6CQAKBwpxInVhbAAA4LAqOAPsJGFudEVxdWFsAKDhImkibGRlAADgfyI4A+UicnNldEXggyLSIHEidWFsAACgiSJpImxkZQCAoUEiRUZUACIKJwouCnEidWFsAACgRCJ1JGxsRXF1YWwAAKBHImkibGRlAACgSSJlJXJ0aWNhbEJhcgAAoCQiYwByAADgNdip3GkAbABkAGUAO4DRANFAnWMAB0VhY2RmZ21vcHJzdHV2XgphCmgKcgp2CnoKgQqRCpYKqwqtCrsKyArNCuwhaWdSYWMAdQB0AGUAO4DTANNAAAFpeWwKcQpyAGMAO4DUANRAHmRiImxhYwBQYXIAAOA12BLdcgBhAHYAZQA7gNIA0kCAAWFlaQCHCooKjQpjAHIATGFnAGEAqWNjInJvbgCfY3AAZgAA4DXYRt3lI25DdXJseQABRFGeCqYKbyV1YmxlUXVvdGUAAKAcIHUib3RlAACgGCAAoFQqAAFjbLEKtQpyAADgNdiq3GEAcwBoADuA2ADYQGkAbAHACsUKZABlADuA1QDVQGUAcwAAoDcqbQBsADuA1gDWQGUAcgAAAUJQ0wrmCgABYXLXCtoKcgAAoD4gYQBjAAABZWvgCuIKAKDeI2UAdAAAoLQjYSVyZW50aGVzaXMAAKDcI4AEYWNmaGlsb3JzAP0KAwsFCwkLCwsMCxELIwtaC3IjdGlhbEQAAKACInkAH2RyAADgNdgT3WkApmOgY/Ujc01pbnVzsWAAAWlwFQsgC24AYwBhAHIAZQBwAGwAYQBuAOUACgVmAACgGSGAobsqZWlvACoLRQtJC+MiZWRlc4CheiJFU1QANAs5C0ALcSJ1YWwAAKCvKuwkYW50RXF1YWwAoHwiaSJsZGUAAKB+Im0AZQAAoDMgAAFkcE0LUQv1IWN0AKAPIm8jcnRpb24AYaA3ImwAAKAdIgABY2leC2ILcgAA4DXYq9yoYwACVWZvc2oLbwtzC3cLTwBUADuAIgAiQHIAAOA12BTdcABmAACgGiFjAHIAAOA12KzcAAZCRWFjZWZoaW9yc3WPC5MLlwupC7YL2AvbC90LhQyTDJoMowzhIXJyAKAQKUcAO4CuAK5AgAFjbnIAnQugC6ML9SF0ZVRhZwAAoOsncgB0oKAhbAAAoBYpgAFhZXkArwuyC7UL8iFvblhh5CFpbFZhIGR2oBwhZSJyc2UAAAFFVb8LzwsAAWxxwwvIC+UibWVudACgCyL1JGlsaWJyaXVtAKDLIXAmRXF1aWxpYnJpdW0AAKBvKXIAAKAcIW8AoWPnIWh0AARBQ0RGVFVWYewLCgwQDDIMNwxeDHwM9gIAAW5y8Av4C2clbGVCcmFja2V0AACg6SfyIW93AKGSIUJM/wsDDGEAcgAAoOUhZSRmdEFycm93AACgxCFlI2lsaW5nAACgCSNvAPUBFgwAAB4MYiVsZUJyYWNrZXQAAKDnJ24A1AEjDAAAKgxlJGVWZWN0b3IAAKBdKeUiY3RvckKgwiFhAHIAAKBVKWwib29yAACgCyMAAWVyOwxLDGUAAKGiIkFWQQxGDHIicm93AACgpiHlImN0b3IAoFspaSNhbmdsZQBCorMiVgwAAAAAWgxhAHIAAKDQKXEidWFsAACgtSJwAIABRFRWAGUMbAxzDO8kd25WZWN0b3IAoE8pZSRlVmVjdG9yAACgXCnlImN0b3JCoL4hYQByAACgVCnlImN0b3JCoMAhYQByAACgUykAAXB1iQyMDGYAAKAdIe4kZEltcGxpZXMAoHAp6SRnaHRhcnJvdwCg2yEAAWNongyhDHIAAKAbIQCgsSHsJGVEZWxheWVkAKD0KYAGSE9hY2ZoaW1vcXN0dQC/DMgMzAzQDOIM5gwKDQ0NFA0ZDU8NVA1YDQABQ2PDDMYMyCFjeSlkeQAoZEYiVGN5ACxkYyJ1dGUAWmEAorwqYWVpedgM2wzeDOEM8iFvbmBh5CFpbF5hcgBjAFxhIWRyAADgNdgW3e8hcnQAAkRMUlXvDPYM/QwEDW8kd25BcnJvdwAAoJMhZSRmdEFycm93AACgkCHpJGdodEFycm93AKCSIXAjQXJyb3cAAKCRIechbWGjY+EkbGxDaXJjbGUAoBgicABmAADgNdhK3XICHw0AAAAAIg10AACgGiLhIXJlgKGhJUlTVQAqDTINSg3uJXRlcnNlY3Rpb24AoJMidQAAAWJwNw1ADfMhZXRFoI8icSJ1YWwAAKCRIuUicnNldEWgkCJxInVhbAAAoJIibiJpb24AAKCUImMAcgAA4DXYrtxhAHIAAKDGIgACYmNtcF8Nag2ODZANc6DQImUAdABFoNAicSJ1YWwAAKCGIgABY2huDYkNZSJlZHMAgKF7IkVTVAB4DX0NhA1xInVhbAAAoLAq7CRhbnRFcXVhbACgfSJpImxkZQAAoH8iVABoAGEA9ADHCwCgESIAodEiZXOVDZ8NciJzZXQARaCDInEidWFsAACghyJlAHQAAKDRIoAFSFJTYWNmaGlvcnMAtQ27Db8NyA3ODdsN3w3+DRgOHQ4jDk8AUgBOADuA3gDeQMEhREUAoCIhAAFIY8MNxg1jAHkAC2R5ACZkAAFidcwNzQ0JYKRjgAFhZXkA1A3XDdoN8iFvbmRh5CFpbGJhImRyAADgNdgX3QABZWnjDe4N8gHoDQAA7Q3lImZvcmUAoDQiYQCYYwABY27yDfkNayNTcGFjZQAA4F8gCiDTInBhY2UAoAkg7CFkZYChPCJFRlQABw4MDhMOcSJ1YWwAAKBDInUkbGxFcXVhbAAAoEUiaSJsZGUAAKBIInAAZgAA4DXYS93pI3BsZURvdACg2yAAAWN0Jw4rDnIAAOA12K/c8iFva2Zh4QpFDlYOYA5qDgAAbg5yDgAAAAAAAAAAAAB5DnwOqA6zDgAADg8RDxYPGg8AAWNySA5ODnUAdABlADuA2gDaQHIAb6CfIeMhaXIAoEkpcgDjAVsOAABdDnkADmR2AGUAbGEAAWl5Yw5oDnIAYwA7gNsA20AjZGIibGFjAHBhcgAA4DXYGN1yAGEAdgBlADuA2QDZQOEhY3JqYQABZGl/Dp8OZQByAAABQlCFDpcOAAFhcokOiw5yAF9gYQBjAAABZWuRDpMOAKDfI2UAdAAAoLUjYSVyZW50aGVzaXMAAKDdI28AbgBQoMMi7CF1cwCgjiIAAWdwqw6uDm8AbgByYWYAAOA12EzdAARBREVUYWRwc78O0g7ZDuEOBQPqDvMOBw9yInJvdwDCoZEhyA4AAMwOYQByAACgEilvJHduQXJyb3cAAKDFIW8kd25BcnJvdwAAoJUhcSV1aWxpYnJpdW0AAKBuKWUAZQBBoKUiciJyb3cAAKClIW8AdwBuAGEAcgByAG8A9wAQA2UAcgAAAUxS+Q4AD2UkZnRBcnJvdwAAoJYh6SRnaHRBcnJvdwCglyFpAGyg0gNvAG4ApWPpIW5nbmFjAHIAAOA12LDcaSJsZGUAaGFtAGwAO4DcANxAgAREYmNkZWZvc3YALQ8xDzUPNw89D3IPdg97D4AP4SFzaACgqyJhAHIAAKDrKnkAEmThIXNobKCpIgCg5ioAAWVyQQ9DDwCgwSKAAWJ0eQBJD00Paw9hAHIAAKAWIGmgFiDjIWFsAAJCTFNUWA9cD18PZg9hAHIAAKAjIukhbmV8YGUkcGFyYXRvcgAAoFgnaSJsZGUAAKBAItQkaGluU3BhY2UAoAogcgAA4DXYGd1wAGYAAOA12E3dYwByAADgNdix3GQiYXNoAACgqiKAAmNlZm9zAI4PkQ+VD5kPng/pIXJjdGHkIWdlAKDAInIAAOA12BrdcABmAADgNdhO3WMAcgAA4DXYstwAAmZpb3OqD64Prw+0D3IAAOA12BvdnmNwAGYAAOA12E/dYwByAADgNdiz3IAEQUlVYWNmb3N1AMgPyw/OD9EP2A/gD+QP6Q/uD2MAeQAvZGMAeQAHZGMAeQAuZGMAdQB0AGUAO4DdAN1AAAFpedwP3w9yAGMAdmErZHIAAOA12BzdcABmAADgNdhQ3WMAcgAA4DXYtNxtAGwAeGEABEhhY2RlZm9z/g8BEAUQDRAQEB0QIBAkEGMAeQAWZGMidXRlAHlhAAFheQkQDBDyIW9ufWEXZG8AdAB7YfIBFRAAABwQbwBXAGkAZAB0AOgAVAhhAJZjcgAAoCghcABmAACgJCFjAHIAAOA12LXc4QtCEEkQTRAAAGcQbRByEAAAAAAAAAAAeRCKEJcQ8hD9EAAAGxEhETIROREAAD4RYwB1AHQAZQA7gOEA4UByImV2ZQADYYCiPiJFZGl1eQBWEFkQWxBgEGUQAOA+IjMDAKA/InIAYwA7gOIA4kB0AGUAO4C0ALRAMGRsAGkAZwA7gOYA5kByoGEgAOA12B7dcgBhAHYAZQA7gOAA4EAAAWVwfBCGEAABZnCAEIQQ8yF5bQCgNSHoAIMQaABhALFjAAFhcI0QWwAAAWNskRCTEHIAAWFnAACgPypkApwQAAAAALEQAKInImFkc3ajEKcQqRCuEG4AZAAAoFUqAKBcKmwib3BlAACgWCoAoFoqAKMgImVsbXJzersQvRDAEN0Q5RDtEACgpCllAACgICJzAGQAYaAhImEEzhDQENIQ1BDWENgQ2hDcEACgqCkAoKkpAKCqKQCgqykAoKwpAKCtKQCgrikAoK8pdAB2oB8iYgBkoL4iAKCdKQABcHTpEOwQaAAAoCIixWDhIXJyAKB8IwABZ3D1EPgQbwBuAAVhZgAA4DXYUt0Ao0giRWFlaW9wBxEJEQ0RDxESERQRAKBwKuMhaXIAoG8qAKBKImQAAKBLInMAJ2DyIW94ZaBIIvEADhFpAG4AZwA7gOUA5UCAAWN0eQAmESoRKxFyAADgNdi23CpgbQBwAGWgSCLxAPgBaQBsAGQAZQA7gOMA40BtAGwAO4DkAORAAAFjaUERRxFvAG4AaQBuAPQA6AFuAHQAAKARKgAITmFiY2RlZmlrbG5vcHJzdWQRaBGXEZ8RpxGrEdIR1hErEjASexKKEn0RThNbE3oTbwB0AACg7SoAAWNybBGJEWsAAAJjZXBzdBF4EX0RghHvIW5nAKBMInAjc2lsb24A9mNyImltZQAAoDUgaQBtAGWgPSJxAACgzSJ2AY0RkRFlAGUAAKC9ImUAZABnoAUjZQAAoAUjcgBrAHSgtSPiIXJrAKC2IwABb3mjEaYRbgDnAHcRMWTxIXVvAKAeIIACY21wcnQAtBG5Eb4RwRHFEeEhdXPloDUi5ABwInR5dgAAoLApcwDpAH0RbgBvAPUA6gCAAWFodwDLEcwRzhGyYwCgNiHlIWVuAKBsInIAAOA12B/dZwCAA2Nvc3R1dncA4xHyEQUSEhIhEiYSKRKAAWFpdQDpEesR7xHwAKMFcgBjAACg7yVwAACgwyKAAWRwdAD4EfwRABJvAHQAAKAAKuwhdXMAoAEqaSJtZXMAAKACKnECCxIAAAAADxLjIXVwAKAGKmEAcgAAoAUm8iNpYW5nbGUAAWR1GhIeEu8hd24AoL0lcAAAoLMlcCJsdXMAAKAEKmUA5QBCD+UAkg9hInJvdwAAoA0pgAFha28ANhJoEncSAAFjbjoSZRJrAIABbHN0AEESRxJNEm8jemVuZ2UAAKDrKXEAdQBhAHIA5QBcBPIjaWFuZ2xlgKG0JWRscgBYElwSYBLvIXduAKC+JeUhZnQAoMIlaSJnaHQAAKC4JWsAAKAjJLEBbRIAAHUSsgFxEgAAcxIAoJIlAKCRJTQAAKCTJWMAawAAoIglAAFlb38ShxJx4D0A5SD1IWl2AOBhIuUgdAAAoBAjAAJwdHd4kRKVEpsSnxJmAADgNdhT3XSgpSJvAG0AAKClIvQhaWUAoMgiAAZESFVWYmRobXB0dXayEsES0RLgEvcS+xIKExoTHxMjEygTNxMAAkxSbHK5ErsSvRK/EgCgVyUAoFQlAKBWJQCgUyUAolAlRFVkdckSyxLNEs8SAKBmJQCgaSUAoGQlAKBnJQACTFJsctgS2hLcEt4SAKBdJQCgWiUAoFwlAKBZJQCjUSVITFJobHLrEu0S7xLxEvMS9RIAoGwlAKBjJQCgYCUAoGslAKBiJQCgXyVvAHgAAKDJKQACTFJscgITBBMGEwgTAKBVJQCgUiUAoBAlAKAMJQCiACVEVWR1EhMUExYTGBMAoGUlAKBoJQCgLCUAoDQlaSJudXMAAKCfIuwhdXMAoJ4iaSJtZXMAAKCgIgACTFJsci8TMRMzEzUTAKBbJQCgWCUAoBglAKAUJQCjAiVITFJobHJCE0QTRhNIE0oTTBMAoGolAKBhJQCgXiUAoDwlAKAkJQCgHCUAAWV2UhNVE3YA5QD5AGIAYQByADuApgCmQAACY2Vpb2ITZhNqE24TcgAA4DXYt9xtAGkAAKBPIG0A5aA9IogRbAAAoVwAYmh0E3YTAKDFKfMhdWIAoMgnbAF+E4QTbABloCIgdAAAoCIgcAAAoU4iRWWJE4sTAKCuKvGgTyI8BeEMqRMAAN8TABQDFB8UAAAjFDQUAAAAAIUUAAAAAI0UAAAAANcU4xT3FPsUAACIFQAAlhWAAWNwcgCuE7ET1RP1IXRlB2GAoikiYWJjZHMAuxO/E8QTzhPSE24AZAAAoEQqciJjdXAAAKBJKgABYXXIE8sTcAAAoEsqcAAAoEcqbwB0AACgQCoA4CkiAP4AAWVv2RPcE3QAAKBBIO4ABAUAAmFlaXXlE+8T9RP4E/AB6hMAAO0TcwAAoE0qbwBuAA1hZABpAGwAO4DnAOdAcgBjAAlhcABzAHOgTCptAACgUCpvAHQAC2GAAWRtbgAIFA0UEhRpAGwAO4C4ALhAcCJ0eXYAAKCyKXQAAIGiADtlGBQZFKJAcgBkAG8A9ABiAXIAAOA12CDdgAFjZWkAKBQqFDIUeQBHZGMAawBtoBMn4SFyawCgEyfHY3IAAKPLJUVjZWZtcz8UQRRHFHcUfBSAFACgwykAocYCZWxGFEkUcQAAoFciZQBhAlAUAAAAAGAUciJyb3cAAAFsclYUWhTlIWZ0AKC6IWkiZ2h0AACguyGAAlJTYWNkAGgUaRRrFG8UcxSuYACgyCRzAHQAAKCbIukhcmMAoJoi4SFzaACgnSJuImludAAAoBAqaQBkAACg7yrjIWlyAKDCKfUhYnN1oGMmaQB0AACgYybsApMUmhS2FAAAwxRvAG4AZaA6APGgVCKrAG0CnxQAAAAAoxRhAHSgLABAYAChASJmbKcUqRTuABMNZQAAAW14rhSyFOUhbnQAoAEiZQDzANIB5wG6FAAAwBRkoEUibwB0AACgbSpuAPQAzAGAAWZyeQDIFMsUzhQA4DXYVN1vAOQA1wEAgakAO3MeAdMUcgAAoBchAAFhb9oU3hRyAHIAAKC1IXMAcwAAoBcnAAFjdeYU6hRyAADgNdi43AABYnDuFPIUZaDPKgCg0SploNAqAKDSKuQhb3QAoO8igANkZWxwcnZ3AAYVEBUbFSEVRBVlFYQV4SFycgABbHIMFQ4VAKA4KQCgNSlwAhYVAAAAABkVcgAAoN4iYwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWlsN2E6ZHIAAOA12CjdciJlZW4AOGFjAHkARWRjAHkAXGRwAGYAAOA12FzdYwByAADgNdjA3IALQUJFSGFiY2RlZmdoamxtbm9wcnN0dXYAXhxtHHEcdRx5HN8cBx0dHTwd3B3tHfEdAR4EHh0eLB5FHrwewx7hHgkfPR9LH4ABYXJ0AGQcZxxpHHIA8gBvB/IAxQLhIWlsAKAbKeEhcnIAoA4pZ6BmIgCgiyphAHIAAKBiKWMJjRwAAJAcAACVHAAAAAAAAAAAAACZHJwcAACmHKgcrRwAANIc9SF0ZTph7SJwdHl2AKC0KXIAYQDuAFoG4iFkYbtjZwAAoegnZGyhHKMcAKCRKeUAiwYAoIUqdQBvADuAqwCrQHIAgKOQIWJmaGxwc3QAuhy/HMIcxBzHHMoczhxmoOQhcwAAoB8pcwAAoB0p6wCyGnAAAKCrIWwAAKA5KWkAbQAAoHMpbAAAoKIhAKGrKmFl1hzaHGkAbAAAoBkpc6CtKgDgrSoA/oABYWJyAOUc6RztHHIAcgAAoAwpcgBrAACgcicAAWFr8Rz4HGMAAAFla/Yc9xx7YFtgAAFlc/wc/hwAoIspbAAAAWR1Ax0FHQCgjykAoI0pAAJhZXV5Dh0RHRodHB3yIW9uPmEAAWRpFR0YHWkAbAA8YewAowbiAPccO2QAAmNxcnMkHScdLB05HWEAAKA2KXUAbwDyoBwgqhEAAWR1MB00HeghYXIAoGcpcyJoYXIAAKBLKWgAAKCyIQCiZCJmZ3FzRB1FB5Qdnh10AIACYWhscnQATh1WHWUdbB2NHXIicm93AHSgkCFhAOkAzxxhI3Jwb29uAAABZHVeHWId7yF3bgCgvSFwAACgvCHlJGZ0YXJyb3dzAKDHIWkiZ2h0AIABYWhzAHUdex2DHXIicm93APOglCGdBmEAcgBwAG8AbwBuAPMAzgtxAHUAaQBnAGEAcgByAG8A9wBlGugkcmVldGltZXMAoMsi8aFkIk0HAACaHWwAYQBuAPQAXgcAon0qY2Rnc6YdqR2xHbcdYwAAoKgqbwB0AG+gfypyoIEqAKCDKmXg2iIA/nMAAKCTKoACYWRlZ3MAwB3GHcod1h3ZHXAAcAByAG8A+ACmHG8AdAAAoNYicQAAAWdxzx3SHXQA8gBGB2cAdADyAHQcdADyAFMHaQDtAGMHgAFpbHIA4h3mHeod8yFodACgfClvAG8A8gDKBgDgNdgp3UWgdiIAoJEqYQH1Hf4dcgAAAWR1YB35HWygvCEAoGopbABrAACghCVjAHkAWWQAomoiYWNodAweDx4VHhkecgDyAGsdbwByAG4AZQDyAGAW4SFyZACgaylyAGkAAKD6JQABaW8hHiQe5CFvdEBh9SFzdGGgsCPjIWhlAKCwIwACRWFlczMeNR48HkEeAKBoInAAcKCJKvIhb3gAoIkqcaCHKvGghyo0HmkAbQAAoOYiAARhYm5vcHR3elIeXB5fHoUelh6mHqsetB4AAW5yVh5ZHmcAAKDsJ3IAAKD9IXIA6wCwBmcAgAFsbXIAZh52Hnse5SFmdAABYXKIB2weaQBnAGgAdABhAHIAcgBvAPcAkwfhInBzdG8AoPwnaQBnAGgAdABhAHIAcgBvAPcAmgdwI2Fycm93AAABbHKNHpEeZQBmAPQAxhxpImdodAAAoKwhgAFhZmwAnB6fHqIecgAAoIUpAOA12F3ddQBzAACgLSppIm1lcwAAoDQqYQGvHrMecwB0AACgFyLhAIoOZaHKJbkeRhLuIWdlAKDKJWEAcgBsoCgAdAAAoJMpgAJhY2htdADMHs8e1R7bHt0ecgDyAJ0GbwByAG4AZQDyANYWYQByAGSgyyEAoG0pAKAOIHIAaQAAoL8iAANhY2hpcXTrHu8e1QfzHv0eBh/xIXVvAKA5IHIAAOA12MHcbQDloXIi+h4AAPweAKCNKgCgjyoAAWJ19xwBH28AcqAYIACgGiDyIW9rQmEAhDwAO2NkaGlscXJCBhcfxh0gHyQfKB8sHzEfAAFjaRsfHR8AoKYqcgAAoHkqcgBlAOUAkx3tIWVzAKDJIuEhcnIAoHYpdSJlc3QAAKB7KgABUGk1HzkfYQByAACglillocMlAgdfEnIAAAFkdUIfRx9zImhhcgAAoEop6CFhcgCgZikAAWVuTx9WH3IjdG5lcXEAAOBoIgD+xQBUHwAHRGFjZGVmaGlsbm9wc3VuH3Ifoh+rH68ftx+7H74f5h/uH/MfBwj/HwsgxCFvdACgOiIAAmNscHJ5H30fiR+eH3IAO4CvAK9AAAFldIEfgx8AoEImZaAgJ3MAZQAAoCAnc6CmIXQAbwCAoaYhZGx1AJQfmB+cH28AdwDuAHkDZQBmAPQA6gbwAOkO6yFlcgCgriUAAW95ph+qH+0hbWEAoCkqPGThIXNoAKAUIOElc3VyZWRhbmdsZQCgISJyAADgNdgq3W8AAKAnIYABY2RuAMQfyR/bH3IAbwA7gLUAtUBhoiMi0B8AANMf1x9zAPQAKxFpAHIAAKDwKm8AdAA7gLcAt0B1AHMA4qESIh4TAADjH3WgOCIAoCoqYwHqH+0fcAAAoNsq8gB+GnAAbAB1APMACAgAAWRw9x/7H+UhbHMAoKciZgAA4DXYXt0AAWN0AyAHIHIAAOA12MLc8CFvcwCgPiJsobwDECAVIPQiaW1hcACguCJhAPAAEyAADEdMUlZhYmNkZWZnaGlqbG1vcHJzdHV2dzwgRyBmIG0geSCqILgg2iDeIBEhFSEyIUMhTSFQIZwhnyHSIQAiIyKLIrEivyIUIwABZ3RAIEMgAODZIjgD9uBrItIgBwmAAWVsdABNIF8gYiBmAHQAAAFhclMgWCByInJvdwAAoM0h6SRnaHRhcnJvdwCgziEA4NgiOAP24Goi0iBfCekkZ2h0YXJyb3cAoM8hAAFEZHEgdSDhIXNoAKCvIuEhc2gAoK4igAJiY25wdACCIIYgiSCNIKIgbABhAACgByL1IXRlRGFnAADgICLSIACiSSJFaW9wlSCYIJwgniAA4HAqOANkAADgSyI4A3MASWFyAG8A+AAyCnUAcgBhoG4mbADzoG4mmwjzAa8gAACzIHAAO4CgAKBAbQBwAOXgTiI4AyoJgAJhZW91eQDBIMogzSDWINkg8AHGIAAAyCAAoEMqbwBuAEhh5CFpbEZhbgBnAGSgRyJvAHQAAOBtKjgDcAAAoEIqPWThIXNoAKATIACjYCJBYWRxc3jpIO0g+SD+IAIhDCFyAHIAAKDXIXIAAAFocvIg9SBrAACgJClvoJch9wAGD28AdAAA4FAiOAN1AGkA9gC7CAABZWkGIQohYQByAACgKCntAN8I6SFzdPOgBCLlCHIAAOA12CvdAAJFZXN0/wgcISshLiHxoXEiIiEAABMJ8aFxIgAJAAAnIWwAYQBuAPQAEwlpAO0AGQlyoG8iAKBvIoABQWFwADghOyE/IXIA8gBeIHIAcgAAoK4hYQByAACg8ipzogsiSiEAAAAAxwtkoPwiAKD6ImMAeQBaZIADQUVhZGVzdABcIV8hYiFmIWkhkyGWIXIA8gBXIADgZiI4A3IAcgAAoJohcgAAoCUggKFwImZxcwBwIYQhjiF0AAABYXJ1IXohcgByAG8A9wBlIWkAZwBoAHQAYQByAHIAbwD3AD4h8aFwImAhAACKIWwAYQBuAPQAZwlz4H0qOAMAoG4iaQDtAG0JcqBuImkA5aDqIkUJaQDkADoKAAFwdKMhpyFmAADgNdhf3YCBrAA7aW4AriGvIcchrEBuAIChCSJFZHYAtyG6Ib8hAOD5IjgDbwB0AADg9SI4A+EB1gjEIcYhAKD3IgCg9iJpAHagDCLhAagJzyHRIQCg/iIAoP0igAFhb3IA2CHsIfEhcgCAoSYiYXN0AOAh5SHpIWwAbABlAOwAywhsAADg/SrlIADgAiI4A2wiaW50AACgFCrjoYAi9yEAAPohdQDlAJsJY+CvKjgDZaCAIvEAkwkAAkFhaXQHIgoiFyIeInIA8gBsIHIAcgAAoZshY3cRIhQiAOAzKTgDAOCdITgDZyRodGFycm93AACgmyFyAGkA5aDrIr4JgANjaGltcHF1AC8iPCJHIpwhTSJQIloigKGBImNlcgA2Iv0JOSJ1AOUABgoA4DXYw9zvIXJ0bQKdIQAAAABEImEAcgDhAOEhbQBloEEi8aBEIiYKYQDyAMsIcwB1AAABYnBWIlgi5QDUCeUA3wmAAWJjcABgInMieCKAoYQiRWVzAGci7glqIgDgxSo4A2UAdABl4IIi0iBxAPGgiCJoImMAZaCBIvEA/gmAoYUiRWVzAH8iFgqCIgDgxio4A2UAdABl4IMi0iBxAPGgiSKAIgACZ2lscpIilCKaIpwi7AAMCWwAZABlADuA8QDxQOcAWwlpI2FuZ2xlAAABbHKkIqoi5SFmdGWg6iLxAEUJaSJnaHQAZaDrIvEAvgltoL0DAKEjAGVzuCK8InIAbwAAoBYhcAAAoAcggARESGFkZ2lscnMAziLSItYi2iLeIugi7SICIw8j4SFzaACgrSLhIXJyAKAEKXAAAOBNItIg4SFzaACgrCIAAWV04iLlIgDgZSLSIADgPgDSIG4iZmluAACg3imAAUFldADzIvci+iJyAHIAAKACKQDgZCLSIHLgPADSIGkAZQAA4LQi0iAAAUF0BiMKI3IAcgAAoAMp8iFpZQDgtSLSIGkAbQAA4Dwi0iCAAUFhbgAaIx4jKiNyAHIAAKDWIXIAAAFociMjJiNrAACgIylvoJYh9wD/DuUhYXIAoCcpUxJqFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVCMAAF4jaSN/I4IjjSOeI8AUAAAAAKYjwCMAANoj3yMAAO8jHiQvJD8kRCQAAWNzVyNsFHUAdABlADuA8wDzQAABaXlhI2cjcgBjoJoiO4D0APRAPmSAAmFiaW9zAHEjdCN3I3EBeiNzAOgAdhTsIWFjUWF2AACgOCrvIWxkAKC8KewhaWdTYQABY3KFI4kjaQByAACgvykA4DXYLN1vA5QjAAAAAJYjAACcI24A22JhAHYAZQA7gPIA8kAAoMEpAAFibaEjjAphAHIAAKC1KQACYWNpdKwjryO6I70jcgDyAFkUAAFpcrMjtiNyAACgvinvIXNzAKC7KW4A5QDZCgCgwCmAAWFlaQDFI8gjyyNjAHIATWFnAGEAyWOAAWNkbgDRI9Qj1iPyIW9uv2MAoLYpdQDzAHgBcABmAADgNdhg3YABYWVsAOQj5yPrI3IAAKC3KXIAcAAAoLkpdQDzAHwBAKMoImFkaW9zdvkj/CMPJBMkFiQbJHIA8gBeFIChXSplZm0AAyQJJAwkcgBvoDQhZgAAoDQhO4CqAKpAO4C6ALpA5yFvZgCgtiJyAACgVipsIm9wZQAAoFcqAKBbKoABY2xvACMkJSQrJPIACCRhAHMAaAA7gPgA+EBsAACgmCJpAGwBMyQ4JGQAZQA7gPUA9UBlAHMAYaCXInMAAKA2Km0AbAA7gPYA9kDiIWFyAKA9I+EKXiQAAHokAAB8JJQkAACYJKkkAAAAALUkEQsAAPAkAAAAAAQleiUAAIMlcgCAoSUiYXN0AGUkbyQBCwCBtgA7bGokayS2QGwAZQDsABgDaQJ1JAAAAAB4JG0AAKDzKgCg/Sp5AD9kcgCAAmNpbXB0AIUkiCSLJJkSjyRuAHQAJWBvAGQALmBpAGwAAKAwIOUhbmsAoDEgcgAA4DXYLd2AAWltbwCdJKAkpCR2oMYD1WNtAGEA9AD+B24AZQAAoA4m9KHAA64kAAC0JGMjaGZvcmsAAKDUItZjAAFhdbgkxCRuAAABY2u9JMIkawBooA8hAKAOIfYAaRpzAACkKwBhYmNkZW1zdNMkIRPXJNsk4STjJOck6yTjIWlyAKAjKmkAcgAAoCIqAAFvdYsW3yQAoCUqAKByKm4AO4CxALFAaQBtAACgJip3AG8AAKAnKoABaXB1APUk+iT+JO4idGludACgFSpmAADgNdhh3W4AZAA7gKMAo0CApHoiRWFjZWlub3N1ABMlFSUYJRslTCVRJVklSSV1JQCgsypwAACgtyp1AOUAPwtjoK8qgKJ6ImFjZW5zACclLSU0JTYlSSVwAHAAcgBvAPgAFyV1AHIAbAB5AGUA8QA/C/EAOAuAAWFlcwA8JUElRSXwInByb3gAoLkqcQBxAACgtSppAG0AAKDoImkA7QBEC20AZQDzoDIgIguAAUVhcwBDJVclRSXwAEAlgAFkZnAATwtfJXElgAFhbHMAZSVpJW0l7CFhcgCgLiPpIW5lAKASI/UhcmYAoBMjdKAdIu8AWQvyIWVsAKCwIgABY2l9JYElcgAA4DXYxdzIY24iY3NwAACgCCAAA2Zpb3BzdZElKxuVJZolnyWkJXIAAOA12C7dcABmAADgNdhi3XIiaW1lAACgVyBjAHIAAOA12MbcgAFhZW8AqiW6JcAldAAAAWVpryW2JXIAbgBpAG8AbgDzABkFbgB0AACgFipzAHQAZaA/APEACRj0AG0LgApBQkhhYmNkZWZoaWxtbm9wcnN0dXgA4yXyJfYl+iVpJpAmpia9JtUm5ib4JlonaCdxJ3UnnietJ7EnyCfiJ+cngAFhcnQA6SXsJe4lcgDyAJkM8gD6AuEhaWwAoBwpYQByAPIA3BVhAHIAAKBkKYADY2RlbnFydAAGJhAmEyYYJiYmKyZaJgABZXUKJg0mAOA9IjEDdABlAFVhaQDjACAN7SJwdHl2AKCzKWcAgKHpJ2RlbAAgJiImJCYAoJIpAKClKeUA9wt1AG8AO4C7ALtAcgAApZIhYWJjZmhscHN0dz0mQCZFJkcmSiZMJk4mUSZVJlgmcAAAoHUpZqDlIXMAAKAgKQCgMylzAACgHinrALka8ACVHmwAAKBFKWkAbQAAoHQpbAAAoKMhAKCdIQABYWleJmImaQBsAACgGilvAG6gNiJhAGwA8wB2C4ABYWJyAG8mciZ2JnIA8gAvEnIAawAAoHMnAAFha3omgSZjAAABZWt/JoAmfWBdYAABZXOFJocmAKCMKWwAAAFkdYwmjiYAoI4pAKCQKQACYWV1eZcmmiajJqUm8iFvbllhAAFkaZ4moSZpAGwAV2HsAA8M4gCAJkBkAAJjbHFzrSawJrUmuiZhAACgNylkImhhcgAAoGkpdQBvAPKgHSCjAWgAAKCzIYABYWNnAMMm0iaUC2wAgKEcIWlwcwDLJs4migxuAOUAoAxhAHIA9ADaC3QAAKCtJYABaWxyANsm3ybjJvMhaHQAoH0pbwBvAPIANgwA4DXYL90AAWFv6ib1JnIAAAFkde8m8SYAoMEhbKDAIQCgbCl2oMED8WOAAWducwD+Jk4nUCdoAHQAAANhaGxyc3QKJxInISc1Jz0nRydyInJvdwB0oJIhYQDpAFYmYSNycG9vbgAAAWR1GiceJ28AdwDuAPAmcAAAoMAh5SFmdAABYWgnJy0ncgByAG8AdwDzAAkMYQByAHAAbwBvAG4A8wATBGklZ2h0YXJyb3dzAACgySFxAHUAaQBnAGEAcgByAG8A9wBZJugkcmVldGltZXMAoMwiZwDaYmkAbgBnAGQAbwB0AHMAZQDxABwYgAFhaG0AYCdjJ2YncgDyAAkMYQDyABMEAKAPIG8idXN0AGGgsSPjIWhlAKCxI+0haWQAoO4qAAJhYnB0fCeGJ4knmScAAW5ygCeDJ2cAAKDtJ3IAAKD+IXIA6wAcDIABYWZsAI8nkieVJ3IAAKCGKQDgNdhj3XUAcwAAoC4qaSJtZXMAAKA1KgABYXCiJ6gncgBnoCkAdAAAoJQp7yJsaW50AKASKmEAcgDyADwnAAJhY2hxuCe8J6EMwCfxIXVvAKA6IHIAAOA12MfcAAFidYAmxCdvAPKgGSCoAYABaGlyAM4n0ifWJ3IAZQDlAE0n7SFlcwCgyiJpAIChuSVlZmwAXAxjEt4n9CFyaQCgzinsInVoYXIAoGgpAKAeIWENBSgJKA0oSyhVKIYoAACLKLAoAAAAAOMo5ygAABApJCkxKW0pcSmHKaYpAACYKgAAAACxKmMidXRlAFthcQB1AO8ABR+ApHsiRWFjZWlucHN5ABwoHignKCooLygyKEEoRihJKACgtCrwASMoAAAlKACguCpvAG4AYWF1AOUAgw1koLAqaQBsAF9hcgBjAF1hgAFFYXMAOCg6KD0oAKC2KnAAAKC6KmkAbQAAoOki7yJsaW50AKATKmkA7QCIDUFkbwB0AGKixSKRFgAAAABTKACgZiqAA0FhY21zdHgAYChkKG8ocyh1KHkogihyAHIAAKDYIXIAAAFocmkoayjrAJAab6CYIfcAzAd0ADuApwCnQGkAO2D3IWFyAKApKW0AAAFpbn4ozQBuAHUA8wDOAHQAAKA2J3IA7+A12DDdIxkAAmFjb3mRKJUonSisKHIAcAAAoG8mAAFoeZkonChjAHkASWRIZHIAdABtAqUoAAAAAKgoaQDkAFsPYQByAGEA7ABsJDuArQCtQAABZ22zKLsobQBhAAChwwNmdroouijCY4CjPCJkZWdsbnByAMgozCjPKNMo1yjaKN4obwB0AACgairxoEMiCw5FoJ4qAKCgKkWgnSoAoJ8qZQAAoEYi7CF1cwCgJCrhIXJyAKByKWEAcgDyAPwMAAJhZWl07Sj8KAEpCCkAAWxz8Sj4KGwAcwBlAHQAbQDpAH8oaABwAACgMyrwImFyc2wAoOQpAAFkbFoPBSllAACgIyNloKoqc6CsKgDgrCoA/oABZmxwABUpGCkfKfQhY3lMZGKgLwBhoMQpcgAAoD8jZgAA4DXYZN1hAAABZHIoKRcDZQBzAHWgYCZpAHQAAKBgJoABY3N1ADYpRilhKQABYXU6KUApcABzoJMiAOCTIgD+cABzoJQiAOCUIgD+dQAAAWJwSylWKQChjyJlcz4NUCllAHQAZaCPIvEAPw0AoZAiZXNIDVspZQB0AGWgkCLxAEkNAKGhJWFmZilbBHIAZQFrKVwEAKChJWEAcgDyAAMNAAJjZW10dyl7KX8pgilyAADgNdjI3HQAbQDuAM4AaQDsAAYpYQByAOYAVw0AAWFyiimOKXIA5qAGJhESAAFhbpIpoylpImdodAAAAWVwmSmgKXAAcwBpAGwAbwDuANkXaADpAKAkcwCvYIACYmNtbnAArin8KY4NJSooKgCkgiJFZGVtbnByc7wpvinCKcgpzCnUKdgp3CkAoMUqbwB0AACgvSpkoIYibwB0AACgwyr1IWx0AKDBKgABRWXQKdIpAKDLKgCgiiLsIXVzAKC/KuEhcnIAoHkpgAFlaXUA4inxKfQpdAAAoYIiZW7oKewpcQDxoIYivSllAHEA8aCKItEpbQAAoMcqAAFicPgp+ikAoNUqAKDTKmMAgKJ7ImFjZW5zAAcqDSoUKhYqRihwAHAAcgBvAPgAIyh1AHIAbAB5AGUA8QCDDfEAfA2AAWFlcwAcKiIqPShwAHAAcgBvAPgAPChxAPEAOShnAACgaiYApoMiMTIzRWRlaGxtbnBzPCo/KkIqRSpHKlIqWCpjKmcqaypzKncqO4C5ALlAO4CyALJAO4CzALNAAKDGKgABb3NLKk4qdAAAoL4qdQBiAACg2CpkoIcibwB0AACgxCpzAAABb3VdKmAqbAAAoMknYgAAoNcq4SFycgCgeyn1IWx0AKDCKgABRWVvKnEqAKDMKgCgiyLsIXVzAKDAKoABZWl1AH0qjCqPKnQAAKGDImVugyqHKnEA8aCHIkYqZQBxAPGgiyJwKm0AAKDIKgABYnCTKpUqAKDUKgCg1iqAAUFhbgCdKqEqrCpyAHIAAKDZIXIAAAFocqYqqCrrAJUab6CZIfcAxQf3IWFyAKAqKWwAaQBnADuA3wDfQOELzyrZKtwq6SrsKvEqAAD1KjQrAAAAAAAAAAAAAEwrbCsAAHErvSsAAAAAAADRK3IC1CoAAAAA2CrnIWV0AKAWI8RjcgDrAOUKgAFhZXkA4SrkKucq8iFvbmVh5CFpbGNhQmRvAPQAIg5sInJlYwAAoBUjcgAA4DXYMd0AAmVpa2/7KhIrKCsuK/IBACsAAAkrZQAAATRm6g0EK28AcgDlAOsNYQBzorgDECsAAAAAEit5AG0A0WMAAWNuFislK2sAAAFhcxsrIStwAHAAcgBvAPgAFw5pAG0AAKA8InMA8AD9DQABYXMsKyEr8AAXDnIAbgA7gP4A/kDsATgrOyswG2QA5QBnAmUAcwCAgdcAO2JkAEMrRCtJK9dAYaCgInIAAKAxKgCgMCqAAWVwcwBRK1MraSvhAAkh4qKkIlsrXysAAAAAYytvAHQAAKA2I2kAcgAAoPEqb+A12GXdcgBrAACg2irhAHgociJpbWUAAKA0IIABYWlwAHYreSu3K2QA5QC+DYADYWRlbXBzdACFK6MrmiunK6wrsCuzK24iZ2xlAACitSVkbHFykCuUK5ornCvvIXduAKC/JeUhZnRloMMl8QACBwCgXCJpImdodABloLkl8QBdDG8AdAAAoOwlaSJudXMAAKA6KuwhdXMAoDkqYgAAoM0p6SFtZQCgOyrlInppdW0AoOIjgAFjaHQAwivKK80rAAFyecYrySsA4DXYydxGZGMAeQBbZPIhb2tnYQABaW/UK9creAD0ANERaCJlYWQAAAFsct4r5ytlAGYAdABhAHIAcgBvAPcAXQbpJGdodGFycm93AKCgIQAJQUhhYmNkZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg"); } }); // node_modules/entities/dist/commonjs/generated/decode-data-xml.js var require_decode_data_xml = __commonJS({ "node_modules/entities/dist/commonjs/generated/decode-data-xml.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.xmlDecodeTree = void 0; var decode_shared_js_1 = require_decode_shared(); exports2.xmlDecodeTree = (0, decode_shared_js_1.decodeBase64)("AAJhZ2xxBwARABMAFQBtAg0AAAAAAA8AcAAmYG8AcwAnYHQAPmB0ADxg9SFvdCJg"); } }); // node_modules/entities/dist/commonjs/internal/bin-trie-flags.js var require_bin_trie_flags = __commonJS({ "node_modules/entities/dist/commonjs/internal/bin-trie-flags.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.BinTrieFlags = void 0; var BinTrieFlags; (function(BinTrieFlags2) { BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; BinTrieFlags2[BinTrieFlags2["FLAG13"] = 8192] = "FLAG13"; BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 8064] = "BRANCH_LENGTH"; BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE"; })(BinTrieFlags || (exports2.BinTrieFlags = BinTrieFlags = {})); } }); // node_modules/entities/dist/commonjs/decode.js var require_decode = __commonJS({ "node_modules/entities/dist/commonjs/decode.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.xmlDecodeTree = exports2.htmlDecodeTree = exports2.replaceCodePoint = exports2.fromCodePoint = exports2.decodeCodePoint = exports2.EntityDecoder = exports2.DecodingMode = void 0; exports2.determineBranch = determineBranch; exports2.decodeHTML = decodeHTML; exports2.decodeHTMLAttribute = decodeHTMLAttribute; exports2.decodeHTMLStrict = decodeHTMLStrict; exports2.decodeXML = decodeXML; var decode_codepoint_js_1 = require_decode_codepoint(); var decode_data_html_js_1 = require_decode_data_html(); var decode_data_xml_js_1 = require_decode_data_xml(); var bin_trie_flags_js_1 = require_bin_trie_flags(); var CharCodes; (function(CharCodes2) { CharCodes2[CharCodes2["NUM"] = 35] = "NUM"; CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI"; CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS"; CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO"; CharCodes2[CharCodes2["NINE"] = 57] = "NINE"; CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A"; CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F"; CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X"; CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z"; CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A"; CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F"; CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z"; })(CharCodes || (CharCodes = {})); var TO_LOWER_BIT = 32; function isNumber(code) { return code >= CharCodes.ZERO && code <= CharCodes.NINE; } function isHexadecimalCharacter(code) { return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; } function isAsciiAlphaNumeric(code) { return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); } function isEntityInAttributeInvalidEnd(code) { return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); } var EntityDecoderState; (function(EntityDecoderState2) { EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart"; EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart"; EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal"; EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex"; EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity"; })(EntityDecoderState || (EntityDecoderState = {})); var DecodingMode; (function(DecodingMode2) { DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy"; DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict"; DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute"; })(DecodingMode || (exports2.DecodingMode = DecodingMode = {})); var EntityDecoder = class { constructor(decodeTree, emitCodePoint, errors) { this.decodeTree = decodeTree; this.emitCodePoint = emitCodePoint; this.errors = errors; this.state = EntityDecoderState.EntityStart; this.consumed = 1; this.result = 0; this.treeIndex = 0; this.excess = 1; this.decodeMode = DecodingMode.Strict; this.runConsumed = 0; } /** Resets the instance to make it reusable. */ startEntity(decodeMode) { this.decodeMode = decodeMode; this.state = EntityDecoderState.EntityStart; this.result = 0; this.treeIndex = 0; this.excess = 1; this.consumed = 1; this.runConsumed = 0; } /** * Write an entity to the decoder. This can be called multiple times with partial entities. * If the entity is incomplete, the decoder will return -1. * * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the * entity is incomplete, and resume when the next string is written. * * @param input The string containing the entity (or a continuation of the entity). * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. * @returns The number of characters that were consumed, or -1 if the entity is incomplete. */ write(input, offset) { switch (this.state) { case EntityDecoderState.EntityStart: { if (input.charCodeAt(offset) === CharCodes.NUM) { this.state = EntityDecoderState.NumericStart; this.consumed += 1; return this.stateNumericStart(input, offset + 1); } this.state = EntityDecoderState.NamedEntity; return this.stateNamedEntity(input, offset); } case EntityDecoderState.NumericStart: { return this.stateNumericStart(input, offset); } case EntityDecoderState.NumericDecimal: { return this.stateNumericDecimal(input, offset); } case EntityDecoderState.NumericHex: { return this.stateNumericHex(input, offset); } case EntityDecoderState.NamedEntity: { return this.stateNamedEntity(input, offset); } } } /** * Switches between the numeric decimal and hexadecimal states. * * Equivalent to the `Numeric character reference state` in the HTML spec. * * @param input The string containing the entity (or a continuation of the entity). * @param offset The current offset. * @returns The number of characters that were consumed, or -1 if the entity is incomplete. */ stateNumericStart(input, offset) { if (offset >= input.length) { return -1; } if ((input.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { this.state = EntityDecoderState.NumericHex; this.consumed += 1; return this.stateNumericHex(input, offset + 1); } this.state = EntityDecoderState.NumericDecimal; return this.stateNumericDecimal(input, offset); } /** * Parses a hexadecimal numeric entity. * * Equivalent to the `Hexademical character reference state` in the HTML spec. * * @param input The string containing the entity (or a continuation of the entity). * @param offset The current offset. * @returns The number of characters that were consumed, or -1 if the entity is incomplete. */ stateNumericHex(input, offset) { while (offset < input.length) { const char = input.charCodeAt(offset); if (isNumber(char) || isHexadecimalCharacter(char)) { const digit = char <= CharCodes.NINE ? char - CharCodes.ZERO : (char | TO_LOWER_BIT) - CharCodes.LOWER_A + 10; this.result = this.result * 16 + digit; this.consumed++; offset++; } else { return this.emitNumericEntity(char, 3); } } return -1; } /** * Parses a decimal numeric entity. * * Equivalent to the `Decimal character reference state` in the HTML spec. * * @param input The string containing the entity (or a continuation of the entity). * @param offset The current offset. * @returns The number of characters that were consumed, or -1 if the entity is incomplete. */ stateNumericDecimal(input, offset) { while (offset < input.length) { const char = input.charCodeAt(offset); if (isNumber(char)) { this.result = this.result * 10 + (char - CharCodes.ZERO); this.consumed++; offset++; } else { return this.emitNumericEntity(char, 2); } } return -1; } /** * Validate and emit a numeric entity. * * Implements the logic from the `Hexademical character reference start * state` and `Numeric character reference end state` in the HTML spec. * * @param lastCp The last code point of the entity. Used to see if the * entity was terminated with a semicolon. * @param expectedLength The minimum number of characters that should be * consumed. Used to validate that at least one digit * was consumed. * @returns The number of characters that were consumed. */ emitNumericEntity(lastCp, expectedLength) { var _a; if (this.consumed <= expectedLength) { (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); return 0; } if (lastCp === CharCodes.SEMI) { this.consumed += 1; } else if (this.decodeMode === DecodingMode.Strict) { return 0; } this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); if (this.errors) { if (lastCp !== CharCodes.SEMI) { this.errors.missingSemicolonAfterCharacterReference(); } this.errors.validateNumericCharacterReference(this.result); } return this.consumed; } /** * Parses a named entity. * * Equivalent to the `Named character reference state` in the HTML spec. * * @param input The string containing the entity (or a continuation of the entity). * @param offset The current offset. * @returns The number of characters that were consumed, or -1 if the entity is incomplete. */ stateNamedEntity(input, offset) { const { decodeTree } = this; let current = decodeTree[this.treeIndex]; let valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; while (offset < input.length) { if (valueLength === 0 && (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) { const runLength = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7; if (this.runConsumed === 0) { const firstChar = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE; if (input.charCodeAt(offset) !== firstChar) { return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity(); } offset++; this.excess++; this.runConsumed++; } while (this.runConsumed < runLength) { if (offset >= input.length) { return -1; } const charIndexInPacked = this.runConsumed - 1; const packedWord = decodeTree[this.treeIndex + 1 + (charIndexInPacked >> 1)]; const expectedChar = charIndexInPacked % 2 === 0 ? packedWord & 255 : packedWord >> 8 & 255; if (input.charCodeAt(offset) !== expectedChar) { this.runConsumed = 0; return this.result === 0 ? 0 : this.emitNotTerminatedNamedEntity(); } offset++; this.excess++; this.runConsumed++; } this.runConsumed = 0; this.treeIndex += 1 + (runLength >> 1); current = decodeTree[this.treeIndex]; valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; } if (offset >= input.length) break; const char = input.charCodeAt(offset); if (char === CharCodes.SEMI && valueLength !== 0 && (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) !== 0) { return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); } this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); if (this.treeIndex < 0) { return this.result === 0 || // If we are parsing an attribute this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, (valueLength === 0 || // And there should be no invalid characters. isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); } current = decodeTree[this.treeIndex]; valueLength = (current & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; if (valueLength !== 0) { if (char === CharCodes.SEMI) { return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); } if (this.decodeMode !== DecodingMode.Strict && (current & bin_trie_flags_js_1.BinTrieFlags.FLAG13) === 0) { this.result = this.treeIndex; this.consumed += this.excess; this.excess = 0; } } offset++; this.excess++; } return -1; } /** * Emit a named entity that was not terminated with a semicolon. * * @returns The number of characters consumed. */ emitNotTerminatedNamedEntity() { var _a; const { result, decodeTree } = this; const valueLength = (decodeTree[result] & bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH) >> 14; this.emitNamedEntityData(result, valueLength, this.consumed); (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); return this.consumed; } /** * Emit a named entity. * * @param result The index of the entity in the decode tree. * @param valueLength The number of bytes in the entity. * @param consumed The number of characters consumed. * * @returns The number of characters consumed. */ emitNamedEntityData(result, valueLength, consumed) { const { decodeTree } = this; this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~(bin_trie_flags_js_1.BinTrieFlags.VALUE_LENGTH | bin_trie_flags_js_1.BinTrieFlags.FLAG13) : decodeTree[result + 1], consumed); if (valueLength === 3) { this.emitCodePoint(decodeTree[result + 2], consumed); } return consumed; } /** * Signal to the parser that the end of the input was reached. * * Remaining data will be emitted and relevant errors will be produced. * * @returns The number of characters consumed. */ end() { var _a; switch (this.state) { case EntityDecoderState.NamedEntity: { return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; } // Otherwise, emit a numeric entity if we have one. case EntityDecoderState.NumericDecimal: { return this.emitNumericEntity(0, 2); } case EntityDecoderState.NumericHex: { return this.emitNumericEntity(0, 3); } case EntityDecoderState.NumericStart: { (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); return 0; } case EntityDecoderState.EntityStart: { return 0; } } } }; exports2.EntityDecoder = EntityDecoder; function getDecoder(decodeTree) { let returnValue = ""; const decoder = new EntityDecoder(decodeTree, (data) => returnValue += (0, decode_codepoint_js_1.fromCodePoint)(data)); return function decodeWithTrie(input, decodeMode) { let lastIndex = 0; let offset = 0; while ((offset = input.indexOf("&", offset)) >= 0) { returnValue += input.slice(lastIndex, offset); decoder.startEntity(decodeMode); const length = decoder.write( input, // Skip the "&" offset + 1 ); if (length < 0) { lastIndex = offset + decoder.end(); break; } lastIndex = offset + length; offset = length === 0 ? lastIndex + 1 : lastIndex; } const result = returnValue + input.slice(lastIndex); returnValue = ""; return result; }; } function determineBranch(decodeTree, current, nodeIndex, char) { const branchCount = (current & bin_trie_flags_js_1.BinTrieFlags.BRANCH_LENGTH) >> 7; const jumpOffset = current & bin_trie_flags_js_1.BinTrieFlags.JUMP_TABLE; if (branchCount === 0) { return jumpOffset !== 0 && char === jumpOffset ? nodeIndex : -1; } if (jumpOffset) { const value = char - jumpOffset; return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIndex + value] - 1; } const packedKeySlots = branchCount + 1 >> 1; let lo = 0; let hi = branchCount - 1; while (lo <= hi) { const mid = lo + hi >>> 1; const slot = mid >> 1; const packed = decodeTree[nodeIndex + slot]; const midKey = packed >> (mid & 1) * 8 & 255; if (midKey < char) { lo = mid + 1; } else if (midKey > char) { hi = mid - 1; } else { return decodeTree[nodeIndex + packedKeySlots + mid]; } } return -1; } var htmlDecoder = /* @__PURE__ */ getDecoder(decode_data_html_js_1.htmlDecodeTree); var xmlDecoder = /* @__PURE__ */ getDecoder(decode_data_xml_js_1.xmlDecodeTree); function decodeHTML(htmlString, mode = DecodingMode.Legacy) { return htmlDecoder(htmlString, mode); } function decodeHTMLAttribute(htmlAttribute) { return htmlDecoder(htmlAttribute, DecodingMode.Attribute); } function decodeHTMLStrict(htmlString) { return htmlDecoder(htmlString, DecodingMode.Strict); } function decodeXML(xmlString) { return xmlDecoder(xmlString, DecodingMode.Strict); } var decode_codepoint_js_2 = require_decode_codepoint(); Object.defineProperty(exports2, "decodeCodePoint", { enumerable: true, get: function() { return decode_codepoint_js_2.decodeCodePoint; } }); Object.defineProperty(exports2, "fromCodePoint", { enumerable: true, get: function() { return decode_codepoint_js_2.fromCodePoint; } }); Object.defineProperty(exports2, "replaceCodePoint", { enumerable: true, get: function() { return decode_codepoint_js_2.replaceCodePoint; } }); var decode_data_html_js_2 = require_decode_data_html(); Object.defineProperty(exports2, "htmlDecodeTree", { enumerable: true, get: function() { return decode_data_html_js_2.htmlDecodeTree; } }); var decode_data_xml_js_2 = require_decode_data_xml(); Object.defineProperty(exports2, "xmlDecodeTree", { enumerable: true, get: function() { return decode_data_xml_js_2.xmlDecodeTree; } }); } }); // node_modules/htmlparser2/dist/commonjs/Tokenizer.js var require_Tokenizer = __commonJS({ "node_modules/htmlparser2/dist/commonjs/Tokenizer.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.QuoteType = void 0; var decode_1 = require_decode(); var CharCodes; (function(CharCodes2) { CharCodes2[CharCodes2["Tab"] = 9] = "Tab"; CharCodes2[CharCodes2["NewLine"] = 10] = "NewLine"; CharCodes2[CharCodes2["FormFeed"] = 12] = "FormFeed"; CharCodes2[CharCodes2["CarriageReturn"] = 13] = "CarriageReturn"; CharCodes2[CharCodes2["Space"] = 32] = "Space"; CharCodes2[CharCodes2["ExclamationMark"] = 33] = "ExclamationMark"; CharCodes2[CharCodes2["Number"] = 35] = "Number"; CharCodes2[CharCodes2["Amp"] = 38] = "Amp"; CharCodes2[CharCodes2["SingleQuote"] = 39] = "SingleQuote"; CharCodes2[CharCodes2["DoubleQuote"] = 34] = "DoubleQuote"; CharCodes2[CharCodes2["Dash"] = 45] = "Dash"; CharCodes2[CharCodes2["Slash"] = 47] = "Slash"; CharCodes2[CharCodes2["Zero"] = 48] = "Zero"; CharCodes2[CharCodes2["Nine"] = 57] = "Nine"; CharCodes2[CharCodes2["Semi"] = 59] = "Semi"; CharCodes2[CharCodes2["Lt"] = 60] = "Lt"; CharCodes2[CharCodes2["Eq"] = 61] = "Eq"; CharCodes2[CharCodes2["Gt"] = 62] = "Gt"; CharCodes2[CharCodes2["Questionmark"] = 63] = "Questionmark"; CharCodes2[CharCodes2["UpperA"] = 65] = "UpperA"; CharCodes2[CharCodes2["LowerA"] = 97] = "LowerA"; CharCodes2[CharCodes2["UpperF"] = 70] = "UpperF"; CharCodes2[CharCodes2["LowerF"] = 102] = "LowerF"; CharCodes2[CharCodes2["UpperZ"] = 90] = "UpperZ"; CharCodes2[CharCodes2["LowerZ"] = 122] = "LowerZ"; CharCodes2[CharCodes2["LowerX"] = 120] = "LowerX"; CharCodes2[CharCodes2["OpeningSquareBracket"] = 91] = "OpeningSquareBracket"; })(CharCodes || (CharCodes = {})); var State; (function(State2) { State2[State2["Text"] = 1] = "Text"; State2[State2["BeforeTagName"] = 2] = "BeforeTagName"; State2[State2["InTagName"] = 3] = "InTagName"; State2[State2["InSelfClosingTag"] = 4] = "InSelfClosingTag"; State2[State2["BeforeClosingTagName"] = 5] = "BeforeClosingTagName"; State2[State2["InClosingTagName"] = 6] = "InClosingTagName"; State2[State2["AfterClosingTagName"] = 7] = "AfterClosingTagName"; State2[State2["BeforeAttributeName"] = 8] = "BeforeAttributeName"; State2[State2["InAttributeName"] = 9] = "InAttributeName"; State2[State2["AfterAttributeName"] = 10] = "AfterAttributeName"; State2[State2["BeforeAttributeValue"] = 11] = "BeforeAttributeValue"; State2[State2["InAttributeValueDq"] = 12] = "InAttributeValueDq"; State2[State2["InAttributeValueSq"] = 13] = "InAttributeValueSq"; State2[State2["InAttributeValueNq"] = 14] = "InAttributeValueNq"; State2[State2["BeforeDeclaration"] = 15] = "BeforeDeclaration"; State2[State2["InDeclaration"] = 16] = "InDeclaration"; State2[State2["InProcessingInstruction"] = 17] = "InProcessingInstruction"; State2[State2["BeforeComment"] = 18] = "BeforeComment"; State2[State2["CDATASequence"] = 19] = "CDATASequence"; State2[State2["InSpecialComment"] = 20] = "InSpecialComment"; State2[State2["InCommentLike"] = 21] = "InCommentLike"; State2[State2["BeforeSpecialS"] = 22] = "BeforeSpecialS"; State2[State2["BeforeSpecialT"] = 23] = "BeforeSpecialT"; State2[State2["SpecialStartSequence"] = 24] = "SpecialStartSequence"; State2[State2["InSpecialTag"] = 25] = "InSpecialTag"; State2[State2["InEntity"] = 26] = "InEntity"; })(State || (State = {})); function isWhitespace2(c) { return c === CharCodes.Space || c === CharCodes.NewLine || c === CharCodes.Tab || c === CharCodes.FormFeed || c === CharCodes.CarriageReturn; } function isEndOfTagSection(c) { return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace2(c); } function isASCIIAlpha(c) { return c >= CharCodes.LowerA && c <= CharCodes.LowerZ || c >= CharCodes.UpperA && c <= CharCodes.UpperZ; } var QuoteType; (function(QuoteType2) { QuoteType2[QuoteType2["NoValue"] = 0] = "NoValue"; QuoteType2[QuoteType2["Unquoted"] = 1] = "Unquoted"; QuoteType2[QuoteType2["Single"] = 2] = "Single"; QuoteType2[QuoteType2["Double"] = 3] = "Double"; })(QuoteType || (exports2.QuoteType = QuoteType = {})); var Sequences = { Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]), // CDATA[ CdataEnd: new Uint8Array([93, 93, 62]), // ]]> CommentEnd: new Uint8Array([45, 45, 62]), // `-->` ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]), // ` this.emitCodePoint(cp, consumed)); } reset() { this.state = State.Text; this.buffer = ""; this.sectionStart = 0; this.index = 0; this.baseState = State.Text; this.currentSequence = void 0; this.running = true; this.offset = 0; } write(chunk) { this.offset += this.buffer.length; this.buffer = chunk; this.parse(); } end() { if (this.running) this.finish(); } pause() { this.running = false; } resume() { this.running = true; if (this.index < this.buffer.length + this.offset) { this.parse(); } } stateText(c) { if (c === CharCodes.Lt || !this.decodeEntities && this.fastForwardTo(CharCodes.Lt)) { if (this.index > this.sectionStart) { this.cbs.ontext(this.sectionStart, this.index); } this.state = State.BeforeTagName; this.sectionStart = this.index; } else if (this.decodeEntities && c === CharCodes.Amp) { this.startEntity(); } } stateSpecialStartSequence(c) { const isEnd = this.sequenceIndex === this.currentSequence.length; const isMatch = isEnd ? ( // If we are at the end of the sequence, make sure the tag name has ended isEndOfTagSection(c) ) : ( // Otherwise, do a case-insensitive comparison (c | 32) === this.currentSequence[this.sequenceIndex] ); if (!isMatch) { this.isSpecial = false; } else if (!isEnd) { this.sequenceIndex++; return; } this.sequenceIndex = 0; this.state = State.InTagName; this.stateInTagName(c); } /** Look for an end tag. For tags, also decode entities. */ stateInSpecialTag(c) { if (this.sequenceIndex === this.currentSequence.length) { if (c === CharCodes.Gt || isWhitespace2(c)) { const endOfText = this.index - this.currentSequence.length; if (this.sectionStart < endOfText) { const actualIndex = this.index; this.index = endOfText; this.cbs.ontext(this.sectionStart, endOfText); this.index = actualIndex; } this.isSpecial = false; this.sectionStart = endOfText + 2; this.stateInClosingTagName(c); return; } this.sequenceIndex = 0; } if ((c | 32) === this.currentSequence[this.sequenceIndex]) { this.sequenceIndex += 1; } else if (this.sequenceIndex === 0) { if (this.currentSequence === Sequences.TitleEnd) { if (this.decodeEntities && c === CharCodes.Amp) { this.startEntity(); } } else if (this.fastForwardTo(CharCodes.Lt)) { this.sequenceIndex = 1; } } else { this.sequenceIndex = Number(c === CharCodes.Lt); } } stateCDATASequence(c) { if (c === Sequences.Cdata[this.sequenceIndex]) { if (++this.sequenceIndex === Sequences.Cdata.length) { this.state = State.InCommentLike; this.currentSequence = Sequences.CdataEnd; this.sequenceIndex = 0; this.sectionStart = this.index + 1; } } else { this.sequenceIndex = 0; this.state = State.InDeclaration; this.stateInDeclaration(c); } } /** * When we wait for one specific character, we can speed things up * by skipping through the buffer until we find it. * * @returns Whether the character was found. */ fastForwardTo(c) { while (++this.index < this.buffer.length + this.offset) { if (this.buffer.charCodeAt(this.index - this.offset) === c) { return true; } } this.index = this.buffer.length + this.offset - 1; return false; } /** * Comments and CDATA end with `-->` and `]]>`. * * Their common qualities are: * - Their end sequences have a distinct character they start with. * - That character is then repeated, so we have to check multiple repeats. * - All characters but the start character of the sequence can be skipped. */ stateInCommentLike(c) { if (c === this.currentSequence[this.sequenceIndex]) { if (++this.sequenceIndex === this.currentSequence.length) { if (this.currentSequence === Sequences.CdataEnd) { this.cbs.oncdata(this.sectionStart, this.index, 2); } else { this.cbs.oncomment(this.sectionStart, this.index, 2); } this.sequenceIndex = 0; this.sectionStart = this.index + 1; this.state = State.Text; } } else if (this.sequenceIndex === 0) { if (this.fastForwardTo(this.currentSequence[0])) { this.sequenceIndex = 1; } } else if (c !== this.currentSequence[this.sequenceIndex - 1]) { this.sequenceIndex = 0; } } /** * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name. * * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar). * We allow anything that wouldn't end the tag. */ isTagStartChar(c) { return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c); } startSpecial(sequence, offset) { this.isSpecial = true; this.currentSequence = sequence; this.sequenceIndex = offset; this.state = State.SpecialStartSequence; } stateBeforeTagName(c) { if (c === CharCodes.ExclamationMark) { this.state = State.BeforeDeclaration; this.sectionStart = this.index + 1; } else if (c === CharCodes.Questionmark) { this.state = State.InProcessingInstruction; this.sectionStart = this.index + 1; } else if (this.isTagStartChar(c)) { const lower = c | 32; this.sectionStart = this.index; if (this.xmlMode) { this.state = State.InTagName; } else if (lower === Sequences.ScriptEnd[2]) { this.state = State.BeforeSpecialS; } else if (lower === Sequences.TitleEnd[2] || lower === Sequences.XmpEnd[2]) { this.state = State.BeforeSpecialT; } else { this.state = State.InTagName; } } else if (c === CharCodes.Slash) { this.state = State.BeforeClosingTagName; } else { this.state = State.Text; this.stateText(c); } } stateInTagName(c) { if (isEndOfTagSection(c)) { this.cbs.onopentagname(this.sectionStart, this.index); this.sectionStart = -1; this.state = State.BeforeAttributeName; this.stateBeforeAttributeName(c); } } stateBeforeClosingTagName(c) { if (isWhitespace2(c)) { } else if (c === CharCodes.Gt) { this.state = State.Text; } else { this.state = this.isTagStartChar(c) ? State.InClosingTagName : State.InSpecialComment; this.sectionStart = this.index; } } stateInClosingTagName(c) { if (c === CharCodes.Gt || isWhitespace2(c)) { this.cbs.onclosetag(this.sectionStart, this.index); this.sectionStart = -1; this.state = State.AfterClosingTagName; this.stateAfterClosingTagName(c); } } stateAfterClosingTagName(c) { if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { this.state = State.Text; this.sectionStart = this.index + 1; } } stateBeforeAttributeName(c) { if (c === CharCodes.Gt) { this.cbs.onopentagend(this.index); if (this.isSpecial) { this.state = State.InSpecialTag; this.sequenceIndex = 0; } else { this.state = State.Text; } this.sectionStart = this.index + 1; } else if (c === CharCodes.Slash) { this.state = State.InSelfClosingTag; } else if (!isWhitespace2(c)) { this.state = State.InAttributeName; this.sectionStart = this.index; } } stateInSelfClosingTag(c) { if (c === CharCodes.Gt) { this.cbs.onselfclosingtag(this.index); this.state = State.Text; this.sectionStart = this.index + 1; this.isSpecial = false; } else if (!isWhitespace2(c)) { this.state = State.BeforeAttributeName; this.stateBeforeAttributeName(c); } } stateInAttributeName(c) { if (c === CharCodes.Eq || isEndOfTagSection(c)) { this.cbs.onattribname(this.sectionStart, this.index); this.sectionStart = this.index; this.state = State.AfterAttributeName; this.stateAfterAttributeName(c); } } stateAfterAttributeName(c) { if (c === CharCodes.Eq) { this.state = State.BeforeAttributeValue; } else if (c === CharCodes.Slash || c === CharCodes.Gt) { this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); this.sectionStart = -1; this.state = State.BeforeAttributeName; this.stateBeforeAttributeName(c); } else if (!isWhitespace2(c)) { this.cbs.onattribend(QuoteType.NoValue, this.sectionStart); this.state = State.InAttributeName; this.sectionStart = this.index; } } stateBeforeAttributeValue(c) { if (c === CharCodes.DoubleQuote) { this.state = State.InAttributeValueDq; this.sectionStart = this.index + 1; } else if (c === CharCodes.SingleQuote) { this.state = State.InAttributeValueSq; this.sectionStart = this.index + 1; } else if (!isWhitespace2(c)) { this.sectionStart = this.index; this.state = State.InAttributeValueNq; this.stateInAttributeValueNoQuotes(c); } } handleInAttributeValue(c, quote) { if (c === quote || !this.decodeEntities && this.fastForwardTo(quote)) { this.cbs.onattribdata(this.sectionStart, this.index); this.sectionStart = -1; this.cbs.onattribend(quote === CharCodes.DoubleQuote ? QuoteType.Double : QuoteType.Single, this.index + 1); this.state = State.BeforeAttributeName; } else if (this.decodeEntities && c === CharCodes.Amp) { this.startEntity(); } } stateInAttributeValueDoubleQuotes(c) { this.handleInAttributeValue(c, CharCodes.DoubleQuote); } stateInAttributeValueSingleQuotes(c) { this.handleInAttributeValue(c, CharCodes.SingleQuote); } stateInAttributeValueNoQuotes(c) { if (isWhitespace2(c) || c === CharCodes.Gt) { this.cbs.onattribdata(this.sectionStart, this.index); this.sectionStart = -1; this.cbs.onattribend(QuoteType.Unquoted, this.index); this.state = State.BeforeAttributeName; this.stateBeforeAttributeName(c); } else if (this.decodeEntities && c === CharCodes.Amp) { this.startEntity(); } } stateBeforeDeclaration(c) { if (c === CharCodes.OpeningSquareBracket) { this.state = State.CDATASequence; this.sequenceIndex = 0; } else { this.state = c === CharCodes.Dash ? State.BeforeComment : State.InDeclaration; } } stateInDeclaration(c) { if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { this.cbs.ondeclaration(this.sectionStart, this.index); this.state = State.Text; this.sectionStart = this.index + 1; } } stateInProcessingInstruction(c) { if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { this.cbs.onprocessinginstruction(this.sectionStart, this.index); this.state = State.Text; this.sectionStart = this.index + 1; } } stateBeforeComment(c) { if (c === CharCodes.Dash) { this.state = State.InCommentLike; this.currentSequence = Sequences.CommentEnd; this.sequenceIndex = 2; this.sectionStart = this.index + 1; } else { this.state = State.InDeclaration; } } stateInSpecialComment(c) { if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { this.cbs.oncomment(this.sectionStart, this.index, 0); this.state = State.Text; this.sectionStart = this.index + 1; } } stateBeforeSpecialS(c) { const lower = c | 32; if (lower === Sequences.ScriptEnd[3]) { this.startSpecial(Sequences.ScriptEnd, 4); } else if (lower === Sequences.StyleEnd[3]) { this.startSpecial(Sequences.StyleEnd, 4); } else { this.state = State.InTagName; this.stateInTagName(c); } } stateBeforeSpecialT(c) { const lower = c | 32; switch (lower) { case Sequences.TitleEnd[3]: { this.startSpecial(Sequences.TitleEnd, 4); break; } case Sequences.TextareaEnd[3]: { this.startSpecial(Sequences.TextareaEnd, 4); break; } case Sequences.XmpEnd[3]: { this.startSpecial(Sequences.XmpEnd, 4); break; } default: { this.state = State.InTagName; this.stateInTagName(c); } } } startEntity() { this.baseState = this.state; this.state = State.InEntity; this.entityStart = this.index; this.entityDecoder.startEntity(this.xmlMode ? decode_1.DecodingMode.Strict : this.baseState === State.Text || this.baseState === State.InSpecialTag ? decode_1.DecodingMode.Legacy : decode_1.DecodingMode.Attribute); } stateInEntity() { const indexInBuffer = this.index - this.offset; const length = this.entityDecoder.write(this.buffer, indexInBuffer); if (length >= 0) { this.state = this.baseState; if (length === 0) { this.index -= 1; } } else { if (indexInBuffer < this.buffer.length && this.buffer.charCodeAt(indexInBuffer) === CharCodes.Amp) { this.state = this.baseState; this.index -= 1; return; } this.index = this.offset + this.buffer.length - 1; } } /** * Remove data that has already been consumed from the buffer. */ cleanup() { if (this.running && this.sectionStart !== this.index) { if (this.state === State.Text || this.state === State.InSpecialTag && this.sequenceIndex === 0) { this.cbs.ontext(this.sectionStart, this.index); this.sectionStart = this.index; } else if (this.state === State.InAttributeValueDq || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueNq) { this.cbs.onattribdata(this.sectionStart, this.index); this.sectionStart = this.index; } } } shouldContinue() { return this.index < this.buffer.length + this.offset && this.running; } /** * Iterates through the buffer, calling the function corresponding to the current state. * * States that are more likely to be hit are higher up, as a performance improvement. */ parse() { while (this.shouldContinue()) { const c = this.buffer.charCodeAt(this.index - this.offset); switch (this.state) { case State.Text: { this.stateText(c); break; } case State.SpecialStartSequence: { this.stateSpecialStartSequence(c); break; } case State.InSpecialTag: { this.stateInSpecialTag(c); break; } case State.CDATASequence: { this.stateCDATASequence(c); break; } case State.InAttributeValueDq: { this.stateInAttributeValueDoubleQuotes(c); break; } case State.InAttributeName: { this.stateInAttributeName(c); break; } case State.InCommentLike: { this.stateInCommentLike(c); break; } case State.InSpecialComment: { this.stateInSpecialComment(c); break; } case State.BeforeAttributeName: { this.stateBeforeAttributeName(c); break; } case State.InTagName: { this.stateInTagName(c); break; } case State.InClosingTagName: { this.stateInClosingTagName(c); break; } case State.BeforeTagName: { this.stateBeforeTagName(c); break; } case State.AfterAttributeName: { this.stateAfterAttributeName(c); break; } case State.InAttributeValueSq: { this.stateInAttributeValueSingleQuotes(c); break; } case State.BeforeAttributeValue: { this.stateBeforeAttributeValue(c); break; } case State.BeforeClosingTagName: { this.stateBeforeClosingTagName(c); break; } case State.AfterClosingTagName: { this.stateAfterClosingTagName(c); break; } case State.BeforeSpecialS: { this.stateBeforeSpecialS(c); break; } case State.BeforeSpecialT: { this.stateBeforeSpecialT(c); break; } case State.InAttributeValueNq: { this.stateInAttributeValueNoQuotes(c); break; } case State.InSelfClosingTag: { this.stateInSelfClosingTag(c); break; } case State.InDeclaration: { this.stateInDeclaration(c); break; } case State.BeforeDeclaration: { this.stateBeforeDeclaration(c); break; } case State.BeforeComment: { this.stateBeforeComment(c); break; } case State.InProcessingInstruction: { this.stateInProcessingInstruction(c); break; } case State.InEntity: { this.stateInEntity(); break; } } this.index++; } this.cleanup(); } finish() { if (this.state === State.InEntity) { this.entityDecoder.end(); this.state = this.baseState; } this.handleTrailingData(); this.cbs.onend(); } /** Handle any trailing data. */ handleTrailingData() { const endIndex = this.buffer.length + this.offset; if (this.sectionStart >= endIndex) { return; } if (this.state === State.InCommentLike) { if (this.currentSequence === Sequences.CdataEnd) { this.cbs.oncdata(this.sectionStart, endIndex, 0); } else { this.cbs.oncomment(this.sectionStart, endIndex, 0); } } else if (this.state === State.InTagName || this.state === State.BeforeAttributeName || this.state === State.BeforeAttributeValue || this.state === State.AfterAttributeName || this.state === State.InAttributeName || this.state === State.InAttributeValueSq || this.state === State.InAttributeValueDq || this.state === State.InAttributeValueNq || this.state === State.InClosingTagName) { } else { this.cbs.ontext(this.sectionStart, endIndex); } } emitCodePoint(cp, consumed) { if (this.baseState !== State.Text && this.baseState !== State.InSpecialTag) { if (this.sectionStart < this.entityStart) { this.cbs.onattribdata(this.sectionStart, this.entityStart); } this.sectionStart = this.entityStart + consumed; this.index = this.sectionStart - 1; this.cbs.onattribentity(cp); } else { if (this.sectionStart < this.entityStart) { this.cbs.ontext(this.sectionStart, this.entityStart); } this.sectionStart = this.entityStart + consumed; this.index = this.sectionStart - 1; this.cbs.ontextentity(cp, this.sectionStart); } } }; exports2.default = Tokenizer; } }); // node_modules/htmlparser2/dist/commonjs/Parser.js var require_Parser = __commonJS({ "node_modules/htmlparser2/dist/commonjs/Parser.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || /* @__PURE__ */ (function() { var ownKeys2 = function(o) { ownKeys2 = Object.getOwnPropertyNames || function(o2) { var ar = []; for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; return ar; }; return ownKeys2(o); }; return function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k = ownKeys2(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding2(result, mod, k[i]); } __setModuleDefault2(result, mod); return result; }; })(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Parser = void 0; var Tokenizer_js_1 = __importStar2(require_Tokenizer()); var decode_1 = require_decode(); var formTags = /* @__PURE__ */ new Set([ "input", "option", "optgroup", "select", "button", "datalist", "textarea" ]); var pTag = /* @__PURE__ */ new Set(["p"]); var tableSectionTags = /* @__PURE__ */ new Set(["thead", "tbody"]); var ddtTags = /* @__PURE__ */ new Set(["dd", "dt"]); var rtpTags = /* @__PURE__ */ new Set(["rt", "rp"]); var openImpliesClose = /* @__PURE__ */ new Map([ ["tr", /* @__PURE__ */ new Set(["tr", "th", "td"])], ["th", /* @__PURE__ */ new Set(["th"])], ["td", /* @__PURE__ */ new Set(["thead", "th", "td"])], ["body", /* @__PURE__ */ new Set(["head", "link", "script"])], ["li", /* @__PURE__ */ new Set(["li"])], ["p", pTag], ["h1", pTag], ["h2", pTag], ["h3", pTag], ["h4", pTag], ["h5", pTag], ["h6", pTag], ["select", formTags], ["input", formTags], ["output", formTags], ["button", formTags], ["datalist", formTags], ["textarea", formTags], ["option", /* @__PURE__ */ new Set(["option"])], ["optgroup", /* @__PURE__ */ new Set(["optgroup", "option"])], ["dd", ddtTags], ["dt", ddtTags], ["address", pTag], ["article", pTag], ["aside", pTag], ["blockquote", pTag], ["details", pTag], ["div", pTag], ["dl", pTag], ["fieldset", pTag], ["figcaption", pTag], ["figure", pTag], ["footer", pTag], ["form", pTag], ["header", pTag], ["hr", pTag], ["main", pTag], ["nav", pTag], ["ol", pTag], ["pre", pTag], ["section", pTag], ["table", pTag], ["ul", pTag], ["rt", rtpTags], ["rp", rtpTags], ["tbody", tableSectionTags], ["tfoot", tableSectionTags] ]); var voidElements2 = /* @__PURE__ */ new Set([ "area", "base", "basefont", "br", "col", "command", "embed", "frame", "hr", "img", "input", "isindex", "keygen", "link", "meta", "param", "source", "track", "wbr" ]); var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]); var htmlIntegrationElements = /* @__PURE__ */ new Set([ "mi", "mo", "mn", "ms", "mtext", "annotation-xml", "foreignobject", "desc", "title" ]); var reNameEnd = /\s|\//; var Parser = class { constructor(cbs, options = {}) { var _a, _b, _c, _d, _e, _f; this.options = options; this.startIndex = 0; this.endIndex = 0; this.openTagStart = 0; this.tagname = ""; this.attribname = ""; this.attribvalue = ""; this.attribs = null; this.stack = []; this.buffers = []; this.bufferOffset = 0; this.writeIndex = 0; this.ended = false; this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; this.htmlMode = !this.options.xmlMode; this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : this.htmlMode; this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : this.htmlMode; this.recognizeSelfClosing = (_c = options.recognizeSelfClosing) !== null && _c !== void 0 ? _c : !this.htmlMode; this.tokenizer = new ((_d = options.Tokenizer) !== null && _d !== void 0 ? _d : Tokenizer_js_1.default)(this.options, this); this.foreignContext = [!this.htmlMode]; (_f = (_e = this.cbs).onparserinit) === null || _f === void 0 ? void 0 : _f.call(_e, this); } // Tokenizer event handlers /** @internal */ ontext(start, endIndex) { var _a, _b; const data = this.getSlice(start, endIndex); this.endIndex = endIndex - 1; (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data); this.startIndex = endIndex; } /** @internal */ ontextentity(cp, endIndex) { var _a, _b; this.endIndex = endIndex - 1; (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, (0, decode_1.fromCodePoint)(cp)); this.startIndex = endIndex; } /** * Checks if the current tag is a void element. Override this if you want * to specify your own additional void elements. */ isVoidElement(name) { return this.htmlMode && voidElements2.has(name); } /** @internal */ onopentagname(start, endIndex) { this.endIndex = endIndex; let name = this.getSlice(start, endIndex); if (this.lowerCaseTagNames) { name = name.toLowerCase(); } this.emitOpenTag(name); } emitOpenTag(name) { var _a, _b, _c, _d; this.openTagStart = this.startIndex; this.tagname = name; const impliesClose = this.htmlMode && openImpliesClose.get(name); if (impliesClose) { while (this.stack.length > 0 && impliesClose.has(this.stack[0])) { const element = this.stack.shift(); (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true); } } if (!this.isVoidElement(name)) { this.stack.unshift(name); if (this.htmlMode) { if (foreignContextElements.has(name)) { this.foreignContext.unshift(true); } else if (htmlIntegrationElements.has(name)) { this.foreignContext.unshift(false); } } } (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name); if (this.cbs.onopentag) this.attribs = {}; } endOpenTag(isImplied) { var _a, _b; this.startIndex = this.openTagStart; if (this.attribs) { (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied); this.attribs = null; } if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) { this.cbs.onclosetag(this.tagname, true); } this.tagname = ""; } /** @internal */ onopentagend(endIndex) { this.endIndex = endIndex; this.endOpenTag(false); this.startIndex = endIndex + 1; } /** @internal */ onclosetag(start, endIndex) { var _a, _b, _c, _d, _e, _f, _g, _h; this.endIndex = endIndex; let name = this.getSlice(start, endIndex); if (this.lowerCaseTagNames) { name = name.toLowerCase(); } if (this.htmlMode && (foreignContextElements.has(name) || htmlIntegrationElements.has(name))) { this.foreignContext.shift(); } if (!this.isVoidElement(name)) { const pos = this.stack.indexOf(name); if (pos !== -1) { for (let index2 = 0; index2 <= pos; index2++) { const element = this.stack.shift(); (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, index2 !== pos); } } else if (this.htmlMode && name === "p") { this.emitOpenTag("p"); this.closeCurrentTag(true); } } else if (this.htmlMode && name === "br") { (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, "br"); (_f = (_e = this.cbs).onopentag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", {}, true); (_h = (_g = this.cbs).onclosetag) === null || _h === void 0 ? void 0 : _h.call(_g, "br", false); } this.startIndex = endIndex + 1; } /** @internal */ onselfclosingtag(endIndex) { this.endIndex = endIndex; if (this.recognizeSelfClosing || this.foreignContext[0]) { this.closeCurrentTag(false); this.startIndex = endIndex + 1; } else { this.onopentagend(endIndex); } } closeCurrentTag(isOpenImplied) { var _a, _b; const name = this.tagname; this.endOpenTag(isOpenImplied); if (this.stack[0] === name) { (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied); this.stack.shift(); } } /** @internal */ onattribname(start, endIndex) { this.startIndex = start; const name = this.getSlice(start, endIndex); this.attribname = this.lowerCaseAttributeNames ? name.toLowerCase() : name; } /** @internal */ onattribdata(start, endIndex) { this.attribvalue += this.getSlice(start, endIndex); } /** @internal */ onattribentity(cp) { this.attribvalue += (0, decode_1.fromCodePoint)(cp); } /** @internal */ onattribend(quote, endIndex) { var _a, _b; this.endIndex = endIndex; (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === Tokenizer_js_1.QuoteType.Double ? '"' : quote === Tokenizer_js_1.QuoteType.Single ? "'" : quote === Tokenizer_js_1.QuoteType.NoValue ? void 0 : null); if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { this.attribs[this.attribname] = this.attribvalue; } this.attribvalue = ""; } getInstructionName(value) { const index2 = value.search(reNameEnd); let name = index2 < 0 ? value : value.substr(0, index2); if (this.lowerCaseTagNames) { name = name.toLowerCase(); } return name; } /** @internal */ ondeclaration(start, endIndex) { this.endIndex = endIndex; const value = this.getSlice(start, endIndex); if (this.cbs.onprocessinginstruction) { const name = this.getInstructionName(value); this.cbs.onprocessinginstruction(`!${name}`, `!${value}`); } this.startIndex = endIndex + 1; } /** @internal */ onprocessinginstruction(start, endIndex) { this.endIndex = endIndex; const value = this.getSlice(start, endIndex); if (this.cbs.onprocessinginstruction) { const name = this.getInstructionName(value); this.cbs.onprocessinginstruction(`?${name}`, `?${value}`); } this.startIndex = endIndex + 1; } /** @internal */ oncomment(start, endIndex, offset) { var _a, _b, _c, _d; this.endIndex = endIndex; (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset)); (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); this.startIndex = endIndex + 1; } /** @internal */ oncdata(start, endIndex, offset) { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; this.endIndex = endIndex; const value = this.getSlice(start, endIndex - offset); if (!this.htmlMode || this.options.recognizeCDATA) { (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a); (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); } else { (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, `[CDATA[${value}]]`); (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j); } this.startIndex = endIndex + 1; } /** @internal */ onend() { var _a, _b; if (this.cbs.onclosetag) { this.endIndex = this.startIndex; for (let index2 = 0; index2 < this.stack.length; index2++) { this.cbs.onclosetag(this.stack[index2], true); } } (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a); } /** * Resets the parser to a blank state, ready to parse a new HTML document */ reset() { var _a, _b, _c, _d; (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a); this.tokenizer.reset(); this.tagname = ""; this.attribname = ""; this.attribs = null; this.stack.length = 0; this.startIndex = 0; this.endIndex = 0; (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); this.buffers.length = 0; this.foreignContext.length = 0; this.foreignContext.unshift(!this.htmlMode); this.bufferOffset = 0; this.writeIndex = 0; this.ended = false; } /** * Resets the parser, then parses a complete document and * pushes it to the handler. * * @param data Document to parse. */ parseComplete(data) { this.reset(); this.end(data); } getSlice(start, end) { while (start - this.bufferOffset >= this.buffers[0].length) { this.shiftBuffer(); } let slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset); while (end - this.bufferOffset > this.buffers[0].length) { this.shiftBuffer(); slice += this.buffers[0].slice(0, end - this.bufferOffset); } return slice; } shiftBuffer() { this.bufferOffset += this.buffers[0].length; this.writeIndex--; this.buffers.shift(); } /** * Parses a chunk of data and calls the corresponding callbacks. * * @param chunk Chunk to parse. */ write(chunk) { var _a, _b; if (this.ended) { (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".write() after done!")); return; } this.buffers.push(chunk); if (this.tokenizer.running) { this.tokenizer.write(chunk); this.writeIndex++; } } /** * Parses the end of the buffer and clears the stack, calls onend. * * @param chunk Optional final chunk to parse. */ end(chunk) { var _a, _b; if (this.ended) { (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".end() after done!")); return; } if (chunk) this.write(chunk); this.ended = true; this.tokenizer.end(); } /** * Pauses parsing. The parser won't emit events until `resume` is called. */ pause() { this.tokenizer.pause(); } /** * Resumes parsing after `pause` was called. */ resume() { this.tokenizer.resume(); while (this.tokenizer.running && this.writeIndex < this.buffers.length) { this.tokenizer.write(this.buffers[this.writeIndex++]); } if (this.ended) this.tokenizer.end(); } /** * Alias of `write`, for backwards compatibility. * * @param chunk Chunk to parse. * @deprecated */ parseChunk(chunk) { this.write(chunk); } /** * Alias of `end`, for backwards compatibility. * * @param chunk Optional final chunk to parse. * @deprecated */ done(chunk) { this.end(chunk); } }; exports2.Parser = Parser; } }); // node_modules/domelementtype/lib/index.js var require_lib5 = __commonJS({ "node_modules/domelementtype/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Doctype = exports2.CDATA = exports2.Tag = exports2.Style = exports2.Script = exports2.Comment = exports2.Directive = exports2.Text = exports2.Root = exports2.isTag = exports2.ElementType = void 0; var ElementType4; (function(ElementType5) { ElementType5["Root"] = "root"; ElementType5["Text"] = "text"; ElementType5["Directive"] = "directive"; ElementType5["Comment"] = "comment"; ElementType5["Script"] = "script"; ElementType5["Style"] = "style"; ElementType5["Tag"] = "tag"; ElementType5["CDATA"] = "cdata"; ElementType5["Doctype"] = "doctype"; })(ElementType4 = exports2.ElementType || (exports2.ElementType = {})); function isTag3(elem) { return elem.type === ElementType4.Tag || elem.type === ElementType4.Script || elem.type === ElementType4.Style; } exports2.isTag = isTag3; exports2.Root = ElementType4.Root; exports2.Text = ElementType4.Text; exports2.Directive = ElementType4.Directive; exports2.Comment = ElementType4.Comment; exports2.Script = ElementType4.Script; exports2.Style = ElementType4.Style; exports2.Tag = ElementType4.Tag; exports2.CDATA = ElementType4.CDATA; exports2.Doctype = ElementType4.Doctype; } }); // node_modules/htmlparser2/node_modules/domhandler/lib/node.js var require_node2 = __commonJS({ "node_modules/htmlparser2/node_modules/domhandler/lib/node.js"(exports2) { "use strict"; init_define_import_meta_env(); var __extends2 = exports2 && exports2.__extends || /* @__PURE__ */ (function() { var extendStatics2 = function(d, b) { extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { d2.__proto__ = b2; } || function(d2, b2) { for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; }; return extendStatics2(d, b); }; return function(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics2(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign2 = exports2 && exports2.__assign || function() { __assign2 = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign2.apply(this, arguments); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.cloneNode = exports2.hasChildren = exports2.isDocument = exports2.isDirective = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = exports2.Element = exports2.Document = exports2.CDATA = exports2.NodeWithChildren = exports2.ProcessingInstruction = exports2.Comment = exports2.Text = exports2.DataNode = exports2.Node = void 0; var domelementtype_1 = require_lib5(); var Node = ( /** @class */ (function() { function Node2() { this.parent = null; this.prev = null; this.next = null; this.startIndex = null; this.endIndex = null; } Object.defineProperty(Node2.prototype, "parentNode", { // Read-write aliases for properties /** * Same as {@link parent}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.parent; }, set: function(parent) { this.parent = parent; }, enumerable: false, configurable: true }); Object.defineProperty(Node2.prototype, "previousSibling", { /** * Same as {@link prev}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.prev; }, set: function(prev) { this.prev = prev; }, enumerable: false, configurable: true }); Object.defineProperty(Node2.prototype, "nextSibling", { /** * Same as {@link next}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.next; }, set: function(next) { this.next = next; }, enumerable: false, configurable: true }); Node2.prototype.cloneNode = function(recursive) { if (recursive === void 0) { recursive = false; } return cloneNode(this, recursive); }; return Node2; })() ); exports2.Node = Node; var DataNode = ( /** @class */ (function(_super) { __extends2(DataNode2, _super); function DataNode2(data) { var _this = _super.call(this) || this; _this.data = data; return _this; } Object.defineProperty(DataNode2.prototype, "nodeValue", { /** * Same as {@link data}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.data; }, set: function(data) { this.data = data; }, enumerable: false, configurable: true }); return DataNode2; })(Node) ); exports2.DataNode = DataNode; var Text4 = ( /** @class */ (function(_super) { __extends2(Text5, _super); function Text5() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Text; return _this; } Object.defineProperty(Text5.prototype, "nodeType", { get: function() { return 3; }, enumerable: false, configurable: true }); return Text5; })(DataNode) ); exports2.Text = Text4; var Comment4 = ( /** @class */ (function(_super) { __extends2(Comment5, _super); function Comment5() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Comment; return _this; } Object.defineProperty(Comment5.prototype, "nodeType", { get: function() { return 8; }, enumerable: false, configurable: true }); return Comment5; })(DataNode) ); exports2.Comment = Comment4; var ProcessingInstruction = ( /** @class */ (function(_super) { __extends2(ProcessingInstruction2, _super); function ProcessingInstruction2(name, data) { var _this = _super.call(this, data) || this; _this.name = name; _this.type = domelementtype_1.ElementType.Directive; return _this; } Object.defineProperty(ProcessingInstruction2.prototype, "nodeType", { get: function() { return 1; }, enumerable: false, configurable: true }); return ProcessingInstruction2; })(DataNode) ); exports2.ProcessingInstruction = ProcessingInstruction; var NodeWithChildren = ( /** @class */ (function(_super) { __extends2(NodeWithChildren2, _super); function NodeWithChildren2(children) { var _this = _super.call(this) || this; _this.children = children; return _this; } Object.defineProperty(NodeWithChildren2.prototype, "firstChild", { // Aliases /** First child of the node. */ get: function() { var _a; return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren2.prototype, "lastChild", { /** Last child of the node. */ get: function() { return this.children.length > 0 ? this.children[this.children.length - 1] : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren2.prototype, "childNodes", { /** * Same as {@link children}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.children; }, set: function(children) { this.children = children; }, enumerable: false, configurable: true }); return NodeWithChildren2; })(Node) ); exports2.NodeWithChildren = NodeWithChildren; var CDATA4 = ( /** @class */ (function(_super) { __extends2(CDATA5, _super); function CDATA5() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.CDATA; return _this; } Object.defineProperty(CDATA5.prototype, "nodeType", { get: function() { return 4; }, enumerable: false, configurable: true }); return CDATA5; })(NodeWithChildren) ); exports2.CDATA = CDATA4; var Document = ( /** @class */ (function(_super) { __extends2(Document2, _super); function Document2() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.type = domelementtype_1.ElementType.Root; return _this; } Object.defineProperty(Document2.prototype, "nodeType", { get: function() { return 9; }, enumerable: false, configurable: true }); return Document2; })(NodeWithChildren) ); exports2.Document = Document; var Element = ( /** @class */ (function(_super) { __extends2(Element2, _super); function Element2(name, attribs, children, type) { if (children === void 0) { children = []; } if (type === void 0) { type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag; } var _this = _super.call(this, children) || this; _this.name = name; _this.attribs = attribs; _this.type = type; return _this; } Object.defineProperty(Element2.prototype, "nodeType", { get: function() { return 1; }, enumerable: false, configurable: true }); Object.defineProperty(Element2.prototype, "tagName", { // DOM Level 1 aliases /** * Same as {@link name}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.name; }, set: function(name) { this.name = name; }, enumerable: false, configurable: true }); Object.defineProperty(Element2.prototype, "attributes", { get: function() { var _this = this; return Object.keys(this.attribs).map(function(name) { var _a, _b; return { name, value: _this.attribs[name], namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name], prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name] }; }); }, enumerable: false, configurable: true }); return Element2; })(NodeWithChildren) ); exports2.Element = Element; function isTag3(node) { return (0, domelementtype_1.isTag)(node); } exports2.isTag = isTag3; function isCDATA2(node) { return node.type === domelementtype_1.ElementType.CDATA; } exports2.isCDATA = isCDATA2; function isText2(node) { return node.type === domelementtype_1.ElementType.Text; } exports2.isText = isText2; function isComment2(node) { return node.type === domelementtype_1.ElementType.Comment; } exports2.isComment = isComment2; function isDirective(node) { return node.type === domelementtype_1.ElementType.Directive; } exports2.isDirective = isDirective; function isDocument(node) { return node.type === domelementtype_1.ElementType.Root; } exports2.isDocument = isDocument; function hasChildren2(node) { return Object.prototype.hasOwnProperty.call(node, "children"); } exports2.hasChildren = hasChildren2; function cloneNode(node, recursive) { if (recursive === void 0) { recursive = false; } var result; if (isText2(node)) { result = new Text4(node.data); } else if (isComment2(node)) { result = new Comment4(node.data); } else if (isTag3(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_1 = new Element(node.name, __assign2({}, node.attribs), children); children.forEach(function(child) { return child.parent = clone_1; }); if (node.namespace != null) { clone_1.namespace = node.namespace; } if (node["x-attribsNamespace"]) { clone_1["x-attribsNamespace"] = __assign2({}, node["x-attribsNamespace"]); } if (node["x-attribsPrefix"]) { clone_1["x-attribsPrefix"] = __assign2({}, node["x-attribsPrefix"]); } result = clone_1; } else if (isCDATA2(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_2 = new CDATA4(children); children.forEach(function(child) { return child.parent = clone_2; }); result = clone_2; } else if (isDocument(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_3 = new Document(children); children.forEach(function(child) { return child.parent = clone_3; }); if (node["x-mode"]) { clone_3["x-mode"] = node["x-mode"]; } result = clone_3; } else if (isDirective(node)) { var instruction = new ProcessingInstruction(node.name, node.data); if (node["x-name"] != null) { instruction["x-name"] = node["x-name"]; instruction["x-publicId"] = node["x-publicId"]; instruction["x-systemId"] = node["x-systemId"]; } result = instruction; } else { throw new Error("Not implemented yet: ".concat(node.type)); } result.startIndex = node.startIndex; result.endIndex = node.endIndex; if (node.sourceCodeLocation != null) { result.sourceCodeLocation = node.sourceCodeLocation; } return result; } exports2.cloneNode = cloneNode; function cloneChildren(childs) { var children = childs.map(function(child) { return cloneNode(child, true); }); for (var i = 1; i < children.length; i++) { children[i].prev = children[i - 1]; children[i - 1].next = children[i]; } return children; } } }); // node_modules/htmlparser2/node_modules/domhandler/lib/index.js var require_lib6 = __commonJS({ "node_modules/htmlparser2/node_modules/domhandler/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.DomHandler = void 0; var domelementtype_1 = require_lib5(); var node_js_1 = require_node2(); __exportStar2(require_node2(), exports2); var defaultOpts = { withStartIndices: false, withEndIndices: false, xmlMode: false }; var DomHandler = ( /** @class */ (function() { function DomHandler2(callback, options, elementCB) { this.dom = []; this.root = new node_js_1.Document(this.dom); this.done = false; this.tagStack = [this.root]; this.lastNode = null; this.parser = null; if (typeof options === "function") { elementCB = options; options = defaultOpts; } if (typeof callback === "object") { options = callback; callback = void 0; } this.callback = callback !== null && callback !== void 0 ? callback : null; this.options = options !== null && options !== void 0 ? options : defaultOpts; this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; } DomHandler2.prototype.onparserinit = function(parser) { this.parser = parser; }; DomHandler2.prototype.onreset = function() { this.dom = []; this.root = new node_js_1.Document(this.dom); this.done = false; this.tagStack = [this.root]; this.lastNode = null; this.parser = null; }; DomHandler2.prototype.onend = function() { if (this.done) return; this.done = true; this.parser = null; this.handleCallback(null); }; DomHandler2.prototype.onerror = function(error) { this.handleCallback(error); }; DomHandler2.prototype.onclosetag = function() { this.lastNode = null; var elem = this.tagStack.pop(); if (this.options.withEndIndices) { elem.endIndex = this.parser.endIndex; } if (this.elementCB) this.elementCB(elem); }; DomHandler2.prototype.onopentag = function(name, attribs) { var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : void 0; var element = new node_js_1.Element(name, attribs, void 0, type); this.addNode(element); this.tagStack.push(element); }; DomHandler2.prototype.ontext = function(data) { var lastNode = this.lastNode; if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) { lastNode.data += data; if (this.options.withEndIndices) { lastNode.endIndex = this.parser.endIndex; } } else { var node = new node_js_1.Text(data); this.addNode(node); this.lastNode = node; } }; DomHandler2.prototype.oncomment = function(data) { if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) { this.lastNode.data += data; return; } var node = new node_js_1.Comment(data); this.addNode(node); this.lastNode = node; }; DomHandler2.prototype.oncommentend = function() { this.lastNode = null; }; DomHandler2.prototype.oncdatastart = function() { var text = new node_js_1.Text(""); var node = new node_js_1.CDATA([text]); this.addNode(node); text.parent = node; this.lastNode = text; }; DomHandler2.prototype.oncdataend = function() { this.lastNode = null; }; DomHandler2.prototype.onprocessinginstruction = function(name, data) { var node = new node_js_1.ProcessingInstruction(name, data); this.addNode(node); }; DomHandler2.prototype.handleCallback = function(error) { if (typeof this.callback === "function") { this.callback(error, this.dom); } else if (error) { throw error; } }; DomHandler2.prototype.addNode = function(node) { var parent = this.tagStack[this.tagStack.length - 1]; var previousSibling = parent.children[parent.children.length - 1]; if (this.options.withStartIndices) { node.startIndex = this.parser.startIndex; } if (this.options.withEndIndices) { node.endIndex = this.parser.endIndex; } parent.children.push(node); if (previousSibling) { node.prev = previousSibling; previousSibling.next = node; } node.parent = parent; this.lastNode = null; }; return DomHandler2; })() ); exports2.DomHandler = DomHandler; exports2.default = DomHandler; } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js var require_decode_data_html2 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-html.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.default = new Uint16Array( // prettier-ignore '\u1D41<\xD5\u0131\u028A\u049D\u057B\u05D0\u0675\u06DE\u07A2\u07D6\u080F\u0A4A\u0A91\u0DA1\u0E6D\u0F09\u0F26\u10CA\u1228\u12E1\u1415\u149D\u14C3\u14DF\u1525\0\0\0\0\0\0\u156B\u16CD\u198D\u1C12\u1DDD\u1F7E\u2060\u21B0\u228D\u23C0\u23FB\u2442\u2824\u2912\u2D08\u2E48\u2FCE\u3016\u32BA\u3639\u37AC\u38FE\u3A28\u3A71\u3AE0\u3B2E\u0800EMabcfglmnoprstu\\bfms\x7F\x84\x8B\x90\x95\x98\xA6\xB3\xB9\xC8\xCFlig\u803B\xC6\u40C6P\u803B&\u4026cute\u803B\xC1\u40C1reve;\u4102\u0100iyx}rc\u803B\xC2\u40C2;\u4410r;\uC000\u{1D504}rave\u803B\xC0\u40C0pha;\u4391acr;\u4100d;\u6A53\u0100gp\x9D\xA1on;\u4104f;\uC000\u{1D538}plyFunction;\u6061ing\u803B\xC5\u40C5\u0100cs\xBE\xC3r;\uC000\u{1D49C}ign;\u6254ilde\u803B\xC3\u40C3ml\u803B\xC4\u40C4\u0400aceforsu\xE5\xFB\xFE\u0117\u011C\u0122\u0127\u012A\u0100cr\xEA\xF2kslash;\u6216\u0176\xF6\xF8;\u6AE7ed;\u6306y;\u4411\u0180crt\u0105\u010B\u0114ause;\u6235noullis;\u612Ca;\u4392r;\uC000\u{1D505}pf;\uC000\u{1D539}eve;\u42D8c\xF2\u0113mpeq;\u624E\u0700HOacdefhilorsu\u014D\u0151\u0156\u0180\u019E\u01A2\u01B5\u01B7\u01BA\u01DC\u0215\u0273\u0278\u027Ecy;\u4427PY\u803B\xA9\u40A9\u0180cpy\u015D\u0162\u017Aute;\u4106\u0100;i\u0167\u0168\u62D2talDifferentialD;\u6145leys;\u612D\u0200aeio\u0189\u018E\u0194\u0198ron;\u410Cdil\u803B\xC7\u40C7rc;\u4108nint;\u6230ot;\u410A\u0100dn\u01A7\u01ADilla;\u40B8terDot;\u40B7\xF2\u017Fi;\u43A7rcle\u0200DMPT\u01C7\u01CB\u01D1\u01D6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01E2\u01F8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020FoubleQuote;\u601Duote;\u6019\u0200lnpu\u021E\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6A74\u0180git\u022F\u0236\u023Aruent;\u6261nt;\u622FourIntegral;\u622E\u0100fr\u024C\u024E;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6A2Fcr;\uC000\u{1D49E}p\u0100;C\u0284\u0285\u62D3ap;\u624D\u0580DJSZacefios\u02A0\u02AC\u02B0\u02B4\u02B8\u02CB\u02D7\u02E1\u02E6\u0333\u048D\u0100;o\u0179\u02A5trahd;\u6911cy;\u4402cy;\u4405cy;\u440F\u0180grs\u02BF\u02C4\u02C7ger;\u6021r;\u61A1hv;\u6AE4\u0100ay\u02D0\u02D5ron;\u410E;\u4414l\u0100;t\u02DD\u02DE\u6207a;\u4394r;\uC000\u{1D507}\u0100af\u02EB\u0327\u0100cm\u02F0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031Ccute;\u40B4o\u0174\u030B\u030D;\u42D9bleAcute;\u42DDrave;\u4060ilde;\u42DCond;\u62C4ferentialD;\u6146\u0470\u033D\0\0\0\u0342\u0354\0\u0405f;\uC000\u{1D53B}\u0180;DE\u0348\u0349\u034D\u40A8ot;\u60DCqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03CF\u03E2\u03F8ontourIntegra\xEC\u0239o\u0274\u0379\0\0\u037B\xBB\u0349nArrow;\u61D3\u0100eo\u0387\u03A4ft\u0180ART\u0390\u0396\u03A1rrow;\u61D0ightArrow;\u61D4e\xE5\u02CAng\u0100LR\u03AB\u03C4eft\u0100AR\u03B3\u03B9rrow;\u67F8ightArrow;\u67FAightArrow;\u67F9ight\u0100AT\u03D8\u03DErrow;\u61D2ee;\u62A8p\u0241\u03E9\0\0\u03EFrrow;\u61D1ownArrow;\u61D5erticalBar;\u6225n\u0300ABLRTa\u0412\u042A\u0430\u045E\u047F\u037Crrow\u0180;BU\u041D\u041E\u0422\u6193ar;\u6913pArrow;\u61F5reve;\u4311eft\u02D2\u043A\0\u0446\0\u0450ightVector;\u6950eeVector;\u695Eector\u0100;B\u0459\u045A\u61BDar;\u6956ight\u01D4\u0467\0\u0471eeVector;\u695Fector\u0100;B\u047A\u047B\u61C1ar;\u6957ee\u0100;A\u0486\u0487\u62A4rrow;\u61A7\u0100ct\u0492\u0497r;\uC000\u{1D49F}rok;\u4110\u0800NTacdfglmopqstux\u04BD\u04C0\u04C4\u04CB\u04DE\u04E2\u04E7\u04EE\u04F5\u0521\u052F\u0536\u0552\u055D\u0560\u0565G;\u414AH\u803B\xD0\u40D0cute\u803B\xC9\u40C9\u0180aiy\u04D2\u04D7\u04DCron;\u411Arc\u803B\xCA\u40CA;\u442Dot;\u4116r;\uC000\u{1D508}rave\u803B\xC8\u40C8ement;\u6208\u0100ap\u04FA\u04FEcr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65FBerySmallSquare;\u65AB\u0100gp\u0526\u052Aon;\u4118f;\uC000\u{1D53C}silon;\u4395u\u0100ai\u053C\u0549l\u0100;T\u0542\u0543\u6A75ilde;\u6242librium;\u61CC\u0100ci\u0557\u055Ar;\u6130m;\u6A73a;\u4397ml\u803B\xCB\u40CB\u0100ip\u056A\u056Fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058D\u05B2\u05CCy;\u4424r;\uC000\u{1D509}lled\u0253\u0597\0\0\u05A3mallSquare;\u65FCerySmallSquare;\u65AA\u0370\u05BA\0\u05BF\0\0\u05C4f;\uC000\u{1D53D}All;\u6200riertrf;\u6131c\xF2\u05CB\u0600JTabcdfgorst\u05E8\u05EC\u05EF\u05FA\u0600\u0612\u0616\u061B\u061D\u0623\u066C\u0672cy;\u4403\u803B>\u403Emma\u0100;d\u05F7\u05F8\u4393;\u43DCreve;\u411E\u0180eiy\u0607\u060C\u0610dil;\u4122rc;\u411C;\u4413ot;\u4120r;\uC000\u{1D50A};\u62D9pf;\uC000\u{1D53E}eater\u0300EFGLST\u0635\u0644\u064E\u0656\u065B\u0666qual\u0100;L\u063E\u063F\u6265ess;\u62DBullEqual;\u6267reater;\u6AA2ess;\u6277lantEqual;\u6A7Eilde;\u6273cr;\uC000\u{1D4A2};\u626B\u0400Aacfiosu\u0685\u068B\u0696\u069B\u069E\u06AA\u06BE\u06CARDcy;\u442A\u0100ct\u0690\u0694ek;\u42C7;\u405Eirc;\u4124r;\u610ClbertSpace;\u610B\u01F0\u06AF\0\u06B2f;\u610DizontalLine;\u6500\u0100ct\u06C3\u06C5\xF2\u06A9rok;\u4126mp\u0144\u06D0\u06D8ownHum\xF0\u012Fqual;\u624F\u0700EJOacdfgmnostu\u06FA\u06FE\u0703\u0707\u070E\u071A\u071E\u0721\u0728\u0744\u0778\u078B\u078F\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803B\xCD\u40CD\u0100iy\u0713\u0718rc\u803B\xCE\u40CE;\u4418ot;\u4130r;\u6111rave\u803B\xCC\u40CC\u0180;ap\u0720\u072F\u073F\u0100cg\u0734\u0737r;\u412AinaryI;\u6148lie\xF3\u03DD\u01F4\u0749\0\u0762\u0100;e\u074D\u074E\u622C\u0100gr\u0753\u0758ral;\u622Bsection;\u62C2isible\u0100CT\u076C\u0772omma;\u6063imes;\u6062\u0180gpt\u077F\u0783\u0788on;\u412Ef;\uC000\u{1D540}a;\u4399cr;\u6110ilde;\u4128\u01EB\u079A\0\u079Ecy;\u4406l\u803B\xCF\u40CF\u0280cfosu\u07AC\u07B7\u07BC\u07C2\u07D0\u0100iy\u07B1\u07B5rc;\u4134;\u4419r;\uC000\u{1D50D}pf;\uC000\u{1D541}\u01E3\u07C7\0\u07CCr;\uC000\u{1D4A5}rcy;\u4408kcy;\u4404\u0380HJacfos\u07E4\u07E8\u07EC\u07F1\u07FD\u0802\u0808cy;\u4425cy;\u440Cppa;\u439A\u0100ey\u07F6\u07FBdil;\u4136;\u441Ar;\uC000\u{1D50E}pf;\uC000\u{1D542}cr;\uC000\u{1D4A6}\u0580JTaceflmost\u0825\u0829\u082C\u0850\u0863\u09B3\u09B8\u09C7\u09CD\u0A37\u0A47cy;\u4409\u803B<\u403C\u0280cmnpr\u0837\u083C\u0841\u0844\u084Dute;\u4139bda;\u439Bg;\u67EAlacetrf;\u6112r;\u619E\u0180aey\u0857\u085C\u0861ron;\u413Ddil;\u413B;\u441B\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087E\u08A9\u08B1\u08E0\u08E6\u08FC\u092F\u095B\u0390\u096A\u0100nr\u0883\u088FgleBracket;\u67E8row\u0180;BR\u0899\u089A\u089E\u6190ar;\u61E4ightArrow;\u61C6eiling;\u6308o\u01F5\u08B7\0\u08C3bleBracket;\u67E6n\u01D4\u08C8\0\u08D2eeVector;\u6961ector\u0100;B\u08DB\u08DC\u61C3ar;\u6959loor;\u630Aight\u0100AV\u08EF\u08F5rrow;\u6194ector;\u694E\u0100er\u0901\u0917e\u0180;AV\u0909\u090A\u0910\u62A3rrow;\u61A4ector;\u695Aiangle\u0180;BE\u0924\u0925\u0929\u62B2ar;\u69CFqual;\u62B4p\u0180DTV\u0937\u0942\u094CownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61BFar;\u6958ector\u0100;B\u0965\u0966\u61BCar;\u6952ight\xE1\u039Cs\u0300EFGLST\u097E\u098B\u0995\u099D\u09A2\u09ADqualGreater;\u62DAullEqual;\u6266reater;\u6276ess;\u6AA1lantEqual;\u6A7Dilde;\u6272r;\uC000\u{1D50F}\u0100;e\u09BD\u09BE\u62D8ftarrow;\u61DAidot;\u413F\u0180npw\u09D4\u0A16\u0A1Bg\u0200LRlr\u09DE\u09F7\u0A02\u0A10eft\u0100AR\u09E6\u09ECrrow;\u67F5ightArrow;\u67F7ightArrow;\u67F6eft\u0100ar\u03B3\u0A0Aight\xE1\u03BFight\xE1\u03CAf;\uC000\u{1D543}er\u0100LR\u0A22\u0A2CeftArrow;\u6199ightArrow;\u6198\u0180cht\u0A3E\u0A40\u0A42\xF2\u084C;\u61B0rok;\u4141;\u626A\u0400acefiosu\u0A5A\u0A5D\u0A60\u0A77\u0A7C\u0A85\u0A8B\u0A8Ep;\u6905y;\u441C\u0100dl\u0A65\u0A6FiumSpace;\u605Flintrf;\u6133r;\uC000\u{1D510}nusPlus;\u6213pf;\uC000\u{1D544}c\xF2\u0A76;\u439C\u0480Jacefostu\u0AA3\u0AA7\u0AAD\u0AC0\u0B14\u0B19\u0D91\u0D97\u0D9Ecy;\u440Acute;\u4143\u0180aey\u0AB4\u0AB9\u0ABEron;\u4147dil;\u4145;\u441D\u0180gsw\u0AC7\u0AF0\u0B0Eative\u0180MTV\u0AD3\u0ADF\u0AE8ediumSpace;\u600Bhi\u0100cn\u0AE6\u0AD8\xEB\u0AD9eryThi\xEE\u0AD9ted\u0100GL\u0AF8\u0B06reaterGreate\xF2\u0673essLes\xF3\u0A48Line;\u400Ar;\uC000\u{1D511}\u0200Bnpt\u0B22\u0B28\u0B37\u0B3Areak;\u6060BreakingSpace;\u40A0f;\u6115\u0680;CDEGHLNPRSTV\u0B55\u0B56\u0B6A\u0B7C\u0BA1\u0BEB\u0C04\u0C5E\u0C84\u0CA6\u0CD8\u0D61\u0D85\u6AEC\u0100ou\u0B5B\u0B64ngruent;\u6262pCap;\u626DoubleVerticalBar;\u6226\u0180lqx\u0B83\u0B8A\u0B9Bement;\u6209ual\u0100;T\u0B92\u0B93\u6260ilde;\uC000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0BB6\u0BB7\u0BBD\u0BC9\u0BD3\u0BD8\u0BE5\u626Fqual;\u6271ullEqual;\uC000\u2267\u0338reater;\uC000\u226B\u0338ess;\u6279lantEqual;\uC000\u2A7E\u0338ilde;\u6275ump\u0144\u0BF2\u0BFDownHump;\uC000\u224E\u0338qual;\uC000\u224F\u0338e\u0100fs\u0C0A\u0C27tTriangle\u0180;BE\u0C1A\u0C1B\u0C21\u62EAar;\uC000\u29CF\u0338qual;\u62ECs\u0300;EGLST\u0C35\u0C36\u0C3C\u0C44\u0C4B\u0C58\u626Equal;\u6270reater;\u6278ess;\uC000\u226A\u0338lantEqual;\uC000\u2A7D\u0338ilde;\u6274ested\u0100GL\u0C68\u0C79reaterGreater;\uC000\u2AA2\u0338essLess;\uC000\u2AA1\u0338recedes\u0180;ES\u0C92\u0C93\u0C9B\u6280qual;\uC000\u2AAF\u0338lantEqual;\u62E0\u0100ei\u0CAB\u0CB9verseElement;\u620CghtTriangle\u0180;BE\u0CCB\u0CCC\u0CD2\u62EBar;\uC000\u29D0\u0338qual;\u62ED\u0100qu\u0CDD\u0D0CuareSu\u0100bp\u0CE8\u0CF9set\u0100;E\u0CF0\u0CF3\uC000\u228F\u0338qual;\u62E2erset\u0100;E\u0D03\u0D06\uC000\u2290\u0338qual;\u62E3\u0180bcp\u0D13\u0D24\u0D4Eset\u0100;E\u0D1B\u0D1E\uC000\u2282\u20D2qual;\u6288ceeds\u0200;EST\u0D32\u0D33\u0D3B\u0D46\u6281qual;\uC000\u2AB0\u0338lantEqual;\u62E1ilde;\uC000\u227F\u0338erset\u0100;E\u0D58\u0D5B\uC000\u2283\u20D2qual;\u6289ilde\u0200;EFT\u0D6E\u0D6F\u0D75\u0D7F\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uC000\u{1D4A9}ilde\u803B\xD1\u40D1;\u439D\u0700Eacdfgmoprstuv\u0DBD\u0DC2\u0DC9\u0DD5\u0DDB\u0DE0\u0DE7\u0DFC\u0E02\u0E20\u0E22\u0E32\u0E3F\u0E44lig;\u4152cute\u803B\xD3\u40D3\u0100iy\u0DCE\u0DD3rc\u803B\xD4\u40D4;\u441Eblac;\u4150r;\uC000\u{1D512}rave\u803B\xD2\u40D2\u0180aei\u0DEE\u0DF2\u0DF6cr;\u414Cga;\u43A9cron;\u439Fpf;\uC000\u{1D546}enCurly\u0100DQ\u0E0E\u0E1AoubleQuote;\u601Cuote;\u6018;\u6A54\u0100cl\u0E27\u0E2Cr;\uC000\u{1D4AA}ash\u803B\xD8\u40D8i\u016C\u0E37\u0E3Cde\u803B\xD5\u40D5es;\u6A37ml\u803B\xD6\u40D6er\u0100BP\u0E4B\u0E60\u0100ar\u0E50\u0E53r;\u603Eac\u0100ek\u0E5A\u0E5C;\u63DEet;\u63B4arenthesis;\u63DC\u0480acfhilors\u0E7F\u0E87\u0E8A\u0E8F\u0E92\u0E94\u0E9D\u0EB0\u0EFCrtialD;\u6202y;\u441Fr;\uC000\u{1D513}i;\u43A6;\u43A0usMinus;\u40B1\u0100ip\u0EA2\u0EADncareplan\xE5\u069Df;\u6119\u0200;eio\u0EB9\u0EBA\u0EE0\u0EE4\u6ABBcedes\u0200;EST\u0EC8\u0EC9\u0ECF\u0EDA\u627Aqual;\u6AAFlantEqual;\u627Cilde;\u627Eme;\u6033\u0100dp\u0EE9\u0EEEuct;\u620Fortion\u0100;a\u0225\u0EF9l;\u621D\u0100ci\u0F01\u0F06r;\uC000\u{1D4AB};\u43A8\u0200Ufos\u0F11\u0F16\u0F1B\u0F1FOT\u803B"\u4022r;\uC000\u{1D514}pf;\u611Acr;\uC000\u{1D4AC}\u0600BEacefhiorsu\u0F3E\u0F43\u0F47\u0F60\u0F73\u0FA7\u0FAA\u0FAD\u1096\u10A9\u10B4\u10BEarr;\u6910G\u803B\xAE\u40AE\u0180cnr\u0F4E\u0F53\u0F56ute;\u4154g;\u67EBr\u0100;t\u0F5C\u0F5D\u61A0l;\u6916\u0180aey\u0F67\u0F6C\u0F71ron;\u4158dil;\u4156;\u4420\u0100;v\u0F78\u0F79\u611Cerse\u0100EU\u0F82\u0F99\u0100lq\u0F87\u0F8Eement;\u620Builibrium;\u61CBpEquilibrium;\u696Fr\xBB\u0F79o;\u43A1ght\u0400ACDFTUVa\u0FC1\u0FEB\u0FF3\u1022\u1028\u105B\u1087\u03D8\u0100nr\u0FC6\u0FD2gleBracket;\u67E9row\u0180;BL\u0FDC\u0FDD\u0FE1\u6192ar;\u61E5eftArrow;\u61C4eiling;\u6309o\u01F5\u0FF9\0\u1005bleBracket;\u67E7n\u01D4\u100A\0\u1014eeVector;\u695Dector\u0100;B\u101D\u101E\u61C2ar;\u6955loor;\u630B\u0100er\u102D\u1043e\u0180;AV\u1035\u1036\u103C\u62A2rrow;\u61A6ector;\u695Biangle\u0180;BE\u1050\u1051\u1055\u62B3ar;\u69D0qual;\u62B5p\u0180DTV\u1063\u106E\u1078ownVector;\u694FeeVector;\u695Cector\u0100;B\u1082\u1083\u61BEar;\u6954ector\u0100;B\u1091\u1092\u61C0ar;\u6953\u0100pu\u109B\u109Ef;\u611DndImplies;\u6970ightarrow;\u61DB\u0100ch\u10B9\u10BCr;\u611B;\u61B1leDelayed;\u69F4\u0680HOacfhimoqstu\u10E4\u10F1\u10F7\u10FD\u1119\u111E\u1151\u1156\u1161\u1167\u11B5\u11BB\u11BF\u0100Cc\u10E9\u10EEHcy;\u4429y;\u4428FTcy;\u442Ccute;\u415A\u0280;aeiy\u1108\u1109\u110E\u1113\u1117\u6ABCron;\u4160dil;\u415Erc;\u415C;\u4421r;\uC000\u{1D516}ort\u0200DLRU\u112A\u1134\u113E\u1149ownArrow\xBB\u041EeftArrow\xBB\u089AightArrow\xBB\u0FDDpArrow;\u6191gma;\u43A3allCircle;\u6218pf;\uC000\u{1D54A}\u0272\u116D\0\0\u1170t;\u621Aare\u0200;ISU\u117B\u117C\u1189\u11AF\u65A1ntersection;\u6293u\u0100bp\u118F\u119Eset\u0100;E\u1197\u1198\u628Fqual;\u6291erset\u0100;E\u11A8\u11A9\u6290qual;\u6292nion;\u6294cr;\uC000\u{1D4AE}ar;\u62C6\u0200bcmp\u11C8\u11DB\u1209\u120B\u0100;s\u11CD\u11CE\u62D0et\u0100;E\u11CD\u11D5qual;\u6286\u0100ch\u11E0\u1205eeds\u0200;EST\u11ED\u11EE\u11F4\u11FF\u627Bqual;\u6AB0lantEqual;\u627Dilde;\u627FTh\xE1\u0F8C;\u6211\u0180;es\u1212\u1213\u1223\u62D1rset\u0100;E\u121C\u121D\u6283qual;\u6287et\xBB\u1213\u0580HRSacfhiors\u123E\u1244\u1249\u1255\u125E\u1271\u1276\u129F\u12C2\u12C8\u12D1ORN\u803B\xDE\u40DEADE;\u6122\u0100Hc\u124E\u1252cy;\u440By;\u4426\u0100bu\u125A\u125C;\u4009;\u43A4\u0180aey\u1265\u126A\u126Fron;\u4164dil;\u4162;\u4422r;\uC000\u{1D517}\u0100ei\u127B\u1289\u01F2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128E\u1298kSpace;\uC000\u205F\u200ASpace;\u6009lde\u0200;EFT\u12AB\u12AC\u12B2\u12BC\u623Cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uC000\u{1D54B}ipleDot;\u60DB\u0100ct\u12D6\u12DBr;\uC000\u{1D4AF}rok;\u4166\u0AE1\u12F7\u130E\u131A\u1326\0\u132C\u1331\0\0\0\0\0\u1338\u133D\u1377\u1385\0\u13FF\u1404\u140A\u1410\u0100cr\u12FB\u1301ute\u803B\xDA\u40DAr\u0100;o\u1307\u1308\u619Fcir;\u6949r\u01E3\u1313\0\u1316y;\u440Eve;\u416C\u0100iy\u131E\u1323rc\u803B\xDB\u40DB;\u4423blac;\u4170r;\uC000\u{1D518}rave\u803B\xD9\u40D9acr;\u416A\u0100di\u1341\u1369er\u0100BP\u1348\u135D\u0100ar\u134D\u1350r;\u405Fac\u0100ek\u1357\u1359;\u63DFet;\u63B5arenthesis;\u63DDon\u0100;P\u1370\u1371\u62C3lus;\u628E\u0100gp\u137B\u137Fon;\u4172f;\uC000\u{1D54C}\u0400ADETadps\u1395\u13AE\u13B8\u13C4\u03E8\u13D2\u13D7\u13F3rrow\u0180;BD\u1150\u13A0\u13A4ar;\u6912ownArrow;\u61C5ownArrow;\u6195quilibrium;\u696Eee\u0100;A\u13CB\u13CC\u62A5rrow;\u61A5own\xE1\u03F3er\u0100LR\u13DE\u13E8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13F9\u13FA\u43D2on;\u43A5ing;\u416Ecr;\uC000\u{1D4B0}ilde;\u4168ml\u803B\xDC\u40DC\u0480Dbcdefosv\u1427\u142C\u1430\u1433\u143E\u1485\u148A\u1490\u1496ash;\u62ABar;\u6AEBy;\u4412ash\u0100;l\u143B\u143C\u62A9;\u6AE6\u0100er\u1443\u1445;\u62C1\u0180bty\u144C\u1450\u147Aar;\u6016\u0100;i\u144F\u1455cal\u0200BLST\u1461\u1465\u146A\u1474ar;\u6223ine;\u407Ceparator;\u6758ilde;\u6240ThinSpace;\u600Ar;\uC000\u{1D519}pf;\uC000\u{1D54D}cr;\uC000\u{1D4B1}dash;\u62AA\u0280cefos\u14A7\u14AC\u14B1\u14B6\u14BCirc;\u4174dge;\u62C0r;\uC000\u{1D51A}pf;\uC000\u{1D54E}cr;\uC000\u{1D4B2}\u0200fios\u14CB\u14D0\u14D2\u14D8r;\uC000\u{1D51B};\u439Epf;\uC000\u{1D54F}cr;\uC000\u{1D4B3}\u0480AIUacfosu\u14F1\u14F5\u14F9\u14FD\u1504\u150F\u1514\u151A\u1520cy;\u442Fcy;\u4407cy;\u442Ecute\u803B\xDD\u40DD\u0100iy\u1509\u150Drc;\u4176;\u442Br;\uC000\u{1D51C}pf;\uC000\u{1D550}cr;\uC000\u{1D4B4}ml;\u4178\u0400Hacdefos\u1535\u1539\u153F\u154B\u154F\u155D\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417D;\u4417ot;\u417B\u01F2\u1554\0\u155BoWidt\xE8\u0AD9a;\u4396r;\u6128pf;\u6124cr;\uC000\u{1D4B5}\u0BE1\u1583\u158A\u1590\0\u15B0\u15B6\u15BF\0\0\0\0\u15C6\u15DB\u15EB\u165F\u166D\0\u1695\u169B\u16B2\u16B9\0\u16BEcute\u803B\xE1\u40E1reve;\u4103\u0300;Ediuy\u159C\u159D\u15A1\u15A3\u15A8\u15AD\u623E;\uC000\u223E\u0333;\u623Frc\u803B\xE2\u40E2te\u80BB\xB4\u0306;\u4430lig\u803B\xE6\u40E6\u0100;r\xB2\u15BA;\uC000\u{1D51E}rave\u803B\xE0\u40E0\u0100ep\u15CA\u15D6\u0100fp\u15CF\u15D4sym;\u6135\xE8\u15D3ha;\u43B1\u0100ap\u15DFc\u0100cl\u15E4\u15E7r;\u4101g;\u6A3F\u0264\u15F0\0\0\u160A\u0280;adsv\u15FA\u15FB\u15FF\u1601\u1607\u6227nd;\u6A55;\u6A5Clope;\u6A58;\u6A5A\u0380;elmrsz\u1618\u1619\u161B\u161E\u163F\u164F\u1659\u6220;\u69A4e\xBB\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163A\u163C\u163E;\u69A8;\u69A9;\u69AA;\u69AB;\u69AC;\u69AD;\u69AE;\u69AFt\u0100;v\u1645\u1646\u621Fb\u0100;d\u164C\u164D\u62BE;\u699D\u0100pt\u1654\u1657h;\u6222\xBB\xB9arr;\u637C\u0100gp\u1663\u1667on;\u4105f;\uC000\u{1D552}\u0380;Eaeiop\u12C1\u167B\u167D\u1682\u1684\u1687\u168A;\u6A70cir;\u6A6F;\u624Ad;\u624Bs;\u4027rox\u0100;e\u12C1\u1692\xF1\u1683ing\u803B\xE5\u40E5\u0180cty\u16A1\u16A6\u16A8r;\uC000\u{1D4B6};\u402Amp\u0100;e\u12C1\u16AF\xF1\u0288ilde\u803B\xE3\u40E3ml\u803B\xE4\u40E4\u0100ci\u16C2\u16C8onin\xF4\u0272nt;\u6A11\u0800Nabcdefiklnoprsu\u16ED\u16F1\u1730\u173C\u1743\u1748\u1778\u177D\u17E0\u17E6\u1839\u1850\u170D\u193D\u1948\u1970ot;\u6AED\u0100cr\u16F6\u171Ek\u0200ceps\u1700\u1705\u170D\u1713ong;\u624Cpsilon;\u43F6rime;\u6035im\u0100;e\u171A\u171B\u623Dq;\u62CD\u0176\u1722\u1726ee;\u62BDed\u0100;g\u172C\u172D\u6305e\xBB\u172Drk\u0100;t\u135C\u1737brk;\u63B6\u0100oy\u1701\u1741;\u4431quo;\u601E\u0280cmprt\u1753\u175B\u1761\u1764\u1768aus\u0100;e\u010A\u0109ptyv;\u69B0s\xE9\u170Cno\xF5\u0113\u0180ahw\u176F\u1771\u1773;\u43B2;\u6136een;\u626Cr;\uC000\u{1D51F}g\u0380costuvw\u178D\u179D\u17B3\u17C1\u17D5\u17DB\u17DE\u0180aiu\u1794\u1796\u179A\xF0\u0760rc;\u65EFp\xBB\u1371\u0180dpt\u17A4\u17A8\u17ADot;\u6A00lus;\u6A01imes;\u6A02\u0271\u17B9\0\0\u17BEcup;\u6A06ar;\u6605riangle\u0100du\u17CD\u17D2own;\u65BDp;\u65B3plus;\u6A04e\xE5\u1444\xE5\u14ADarow;\u690D\u0180ako\u17ED\u1826\u1835\u0100cn\u17F2\u1823k\u0180lst\u17FA\u05AB\u1802ozenge;\u69EBriangle\u0200;dlr\u1812\u1813\u1818\u181D\u65B4own;\u65BEeft;\u65C2ight;\u65B8k;\u6423\u01B1\u182B\0\u1833\u01B2\u182F\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183E\u184D\u0100;q\u1843\u1846\uC000=\u20E5uiv;\uC000\u2261\u20E5t;\u6310\u0200ptwx\u1859\u185E\u1867\u186Cf;\uC000\u{1D553}\u0100;t\u13CB\u1863om\xBB\u13CCtie;\u62C8\u0600DHUVbdhmptuv\u1885\u1896\u18AA\u18BB\u18D7\u18DB\u18EC\u18FF\u1905\u190A\u1910\u1921\u0200LRlr\u188E\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18A1\u18A2\u18A4\u18A6\u18A8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18B3\u18B5\u18B7\u18B9;\u655D;\u655A;\u655C;\u6559\u0380;HLRhlr\u18CA\u18CB\u18CD\u18CF\u18D1\u18D3\u18D5\u6551;\u656C;\u6563;\u6560;\u656B;\u6562;\u655Fox;\u69C9\u0200LRlr\u18E4\u18E6\u18E8\u18EA;\u6555;\u6552;\u6510;\u650C\u0280;DUdu\u06BD\u18F7\u18F9\u18FB\u18FD;\u6565;\u6568;\u652C;\u6534inus;\u629Flus;\u629Eimes;\u62A0\u0200LRlr\u1919\u191B\u191D\u191F;\u655B;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193B\u6502;\u656A;\u6561;\u655E;\u653C;\u6524;\u651C\u0100ev\u0123\u1942bar\u803B\xA6\u40A6\u0200ceio\u1951\u1956\u195A\u1960r;\uC000\u{1D4B7}mi;\u604Fm\u0100;e\u171A\u171Cl\u0180;bh\u1968\u1969\u196B\u405C;\u69C5sub;\u67C8\u016C\u1974\u197El\u0100;e\u1979\u197A\u6022t\xBB\u197Ap\u0180;Ee\u012F\u1985\u1987;\u6AAE\u0100;q\u06DC\u06DB\u0CE1\u19A7\0\u19E8\u1A11\u1A15\u1A32\0\u1A37\u1A50\0\0\u1AB4\0\0\u1AC1\0\0\u1B21\u1B2E\u1B4D\u1B52\0\u1BFD\0\u1C0C\u0180cpr\u19AD\u19B2\u19DDute;\u4107\u0300;abcds\u19BF\u19C0\u19C4\u19CA\u19D5\u19D9\u6229nd;\u6A44rcup;\u6A49\u0100au\u19CF\u19D2p;\u6A4Bp;\u6A47ot;\u6A40;\uC000\u2229\uFE00\u0100eo\u19E2\u19E5t;\u6041\xEE\u0693\u0200aeiu\u19F0\u19FB\u1A01\u1A05\u01F0\u19F5\0\u19F8s;\u6A4Don;\u410Ddil\u803B\xE7\u40E7rc;\u4109ps\u0100;s\u1A0C\u1A0D\u6A4Cm;\u6A50ot;\u410B\u0180dmn\u1A1B\u1A20\u1A26il\u80BB\xB8\u01ADptyv;\u69B2t\u8100\xA2;e\u1A2D\u1A2E\u40A2r\xE4\u01B2r;\uC000\u{1D520}\u0180cei\u1A3D\u1A40\u1A4Dy;\u4447ck\u0100;m\u1A47\u1A48\u6713ark\xBB\u1A48;\u43C7r\u0380;Ecefms\u1A5F\u1A60\u1A62\u1A6B\u1AA4\u1AAA\u1AAE\u65CB;\u69C3\u0180;el\u1A69\u1A6A\u1A6D\u42C6q;\u6257e\u0261\u1A74\0\0\u1A88rrow\u0100lr\u1A7C\u1A81eft;\u61BAight;\u61BB\u0280RSacd\u1A92\u1A94\u1A96\u1A9A\u1A9F\xBB\u0F47;\u64C8st;\u629Birc;\u629Aash;\u629Dnint;\u6A10id;\u6AEFcir;\u69C2ubs\u0100;u\u1ABB\u1ABC\u6663it\xBB\u1ABC\u02EC\u1AC7\u1AD4\u1AFA\0\u1B0Aon\u0100;e\u1ACD\u1ACE\u403A\u0100;q\xC7\xC6\u026D\u1AD9\0\0\u1AE2a\u0100;t\u1ADE\u1ADF\u402C;\u4040\u0180;fl\u1AE8\u1AE9\u1AEB\u6201\xEE\u1160e\u0100mx\u1AF1\u1AF6ent\xBB\u1AE9e\xF3\u024D\u01E7\u1AFE\0\u1B07\u0100;d\u12BB\u1B02ot;\u6A6Dn\xF4\u0246\u0180fry\u1B10\u1B14\u1B17;\uC000\u{1D554}o\xE4\u0254\u8100\xA9;s\u0155\u1B1Dr;\u6117\u0100ao\u1B25\u1B29rr;\u61B5ss;\u6717\u0100cu\u1B32\u1B37r;\uC000\u{1D4B8}\u0100bp\u1B3C\u1B44\u0100;e\u1B41\u1B42\u6ACF;\u6AD1\u0100;e\u1B49\u1B4A\u6AD0;\u6AD2dot;\u62EF\u0380delprvw\u1B60\u1B6C\u1B77\u1B82\u1BAC\u1BD4\u1BF9arr\u0100lr\u1B68\u1B6A;\u6938;\u6935\u0270\u1B72\0\0\u1B75r;\u62DEc;\u62DFarr\u0100;p\u1B7F\u1B80\u61B6;\u693D\u0300;bcdos\u1B8F\u1B90\u1B96\u1BA1\u1BA5\u1BA8\u622Arcap;\u6A48\u0100au\u1B9B\u1B9Ep;\u6A46p;\u6A4Aot;\u628Dr;\u6A45;\uC000\u222A\uFE00\u0200alrv\u1BB5\u1BBF\u1BDE\u1BE3rr\u0100;m\u1BBC\u1BBD\u61B7;\u693Cy\u0180evw\u1BC7\u1BD4\u1BD8q\u0270\u1BCE\0\0\u1BD2re\xE3\u1B73u\xE3\u1B75ee;\u62CEedge;\u62CFen\u803B\xA4\u40A4earrow\u0100lr\u1BEE\u1BF3eft\xBB\u1B80ight\xBB\u1BBDe\xE4\u1BDD\u0100ci\u1C01\u1C07onin\xF4\u01F7nt;\u6231lcty;\u632D\u0980AHabcdefhijlorstuwz\u1C38\u1C3B\u1C3F\u1C5D\u1C69\u1C75\u1C8A\u1C9E\u1CAC\u1CB7\u1CFB\u1CFF\u1D0D\u1D7B\u1D91\u1DAB\u1DBB\u1DC6\u1DCDr\xF2\u0381ar;\u6965\u0200glrs\u1C48\u1C4D\u1C52\u1C54ger;\u6020eth;\u6138\xF2\u1133h\u0100;v\u1C5A\u1C5B\u6010\xBB\u090A\u016B\u1C61\u1C67arow;\u690Fa\xE3\u0315\u0100ay\u1C6E\u1C73ron;\u410F;\u4434\u0180;ao\u0332\u1C7C\u1C84\u0100gr\u02BF\u1C81r;\u61CAtseq;\u6A77\u0180glm\u1C91\u1C94\u1C98\u803B\xB0\u40B0ta;\u43B4ptyv;\u69B1\u0100ir\u1CA3\u1CA8sht;\u697F;\uC000\u{1D521}ar\u0100lr\u1CB3\u1CB5\xBB\u08DC\xBB\u101E\u0280aegsv\u1CC2\u0378\u1CD6\u1CDC\u1CE0m\u0180;os\u0326\u1CCA\u1CD4nd\u0100;s\u0326\u1CD1uit;\u6666amma;\u43DDin;\u62F2\u0180;io\u1CE7\u1CE8\u1CF8\u40F7de\u8100\xF7;o\u1CE7\u1CF0ntimes;\u62C7n\xF8\u1CF7cy;\u4452c\u026F\u1D06\0\0\u1D0Arn;\u631Eop;\u630D\u0280lptuw\u1D18\u1D1D\u1D22\u1D49\u1D55lar;\u4024f;\uC000\u{1D555}\u0280;emps\u030B\u1D2D\u1D37\u1D3D\u1D42q\u0100;d\u0352\u1D33ot;\u6251inus;\u6238lus;\u6214quare;\u62A1blebarwedg\xE5\xFAn\u0180adh\u112E\u1D5D\u1D67ownarrow\xF3\u1C83arpoon\u0100lr\u1D72\u1D76ef\xF4\u1CB4igh\xF4\u1CB6\u0162\u1D7F\u1D85karo\xF7\u0F42\u026F\u1D8A\0\0\u1D8Ern;\u631Fop;\u630C\u0180cot\u1D98\u1DA3\u1DA6\u0100ry\u1D9D\u1DA1;\uC000\u{1D4B9};\u4455l;\u69F6rok;\u4111\u0100dr\u1DB0\u1DB4ot;\u62F1i\u0100;f\u1DBA\u1816\u65BF\u0100ah\u1DC0\u1DC3r\xF2\u0429a\xF2\u0FA6angle;\u69A6\u0100ci\u1DD2\u1DD5y;\u445Fgrarr;\u67FF\u0900Dacdefglmnopqrstux\u1E01\u1E09\u1E19\u1E38\u0578\u1E3C\u1E49\u1E61\u1E7E\u1EA5\u1EAF\u1EBD\u1EE1\u1F2A\u1F37\u1F44\u1F4E\u1F5A\u0100Do\u1E06\u1D34o\xF4\u1C89\u0100cs\u1E0E\u1E14ute\u803B\xE9\u40E9ter;\u6A6E\u0200aioy\u1E22\u1E27\u1E31\u1E36ron;\u411Br\u0100;c\u1E2D\u1E2E\u6256\u803B\xEA\u40EAlon;\u6255;\u444Dot;\u4117\u0100Dr\u1E41\u1E45ot;\u6252;\uC000\u{1D522}\u0180;rs\u1E50\u1E51\u1E57\u6A9Aave\u803B\xE8\u40E8\u0100;d\u1E5C\u1E5D\u6A96ot;\u6A98\u0200;ils\u1E6A\u1E6B\u1E72\u1E74\u6A99nters;\u63E7;\u6113\u0100;d\u1E79\u1E7A\u6A95ot;\u6A97\u0180aps\u1E85\u1E89\u1E97cr;\u4113ty\u0180;sv\u1E92\u1E93\u1E95\u6205et\xBB\u1E93p\u01001;\u1E9D\u1EA4\u0133\u1EA1\u1EA3;\u6004;\u6005\u6003\u0100gs\u1EAA\u1EAC;\u414Bp;\u6002\u0100gp\u1EB4\u1EB8on;\u4119f;\uC000\u{1D556}\u0180als\u1EC4\u1ECE\u1ED2r\u0100;s\u1ECA\u1ECB\u62D5l;\u69E3us;\u6A71i\u0180;lv\u1EDA\u1EDB\u1EDF\u43B5on\xBB\u1EDB;\u43F5\u0200csuv\u1EEA\u1EF3\u1F0B\u1F23\u0100io\u1EEF\u1E31rc\xBB\u1E2E\u0269\u1EF9\0\0\u1EFB\xED\u0548ant\u0100gl\u1F02\u1F06tr\xBB\u1E5Dess\xBB\u1E7A\u0180aei\u1F12\u1F16\u1F1Als;\u403Dst;\u625Fv\u0100;D\u0235\u1F20D;\u6A78parsl;\u69E5\u0100Da\u1F2F\u1F33ot;\u6253rr;\u6971\u0180cdi\u1F3E\u1F41\u1EF8r;\u612Fo\xF4\u0352\u0100ah\u1F49\u1F4B;\u43B7\u803B\xF0\u40F0\u0100mr\u1F53\u1F57l\u803B\xEB\u40EBo;\u60AC\u0180cip\u1F61\u1F64\u1F67l;\u4021s\xF4\u056E\u0100eo\u1F6C\u1F74ctatio\xEE\u0559nential\xE5\u0579\u09E1\u1F92\0\u1F9E\0\u1FA1\u1FA7\0\0\u1FC6\u1FCC\0\u1FD3\0\u1FE6\u1FEA\u2000\0\u2008\u205Allingdotse\xF1\u1E44y;\u4444male;\u6640\u0180ilr\u1FAD\u1FB3\u1FC1lig;\u8000\uFB03\u0269\u1FB9\0\0\u1FBDg;\u8000\uFB00ig;\u8000\uFB04;\uC000\u{1D523}lig;\u8000\uFB01lig;\uC000fj\u0180alt\u1FD9\u1FDC\u1FE1t;\u666Dig;\u8000\uFB02ns;\u65B1of;\u4192\u01F0\u1FEE\0\u1FF3f;\uC000\u{1D557}\u0100ak\u05BF\u1FF7\u0100;v\u1FFC\u1FFD\u62D4;\u6AD9artint;\u6A0D\u0100ao\u200C\u2055\u0100cs\u2011\u2052\u03B1\u201A\u2030\u2038\u2045\u2048\0\u2050\u03B2\u2022\u2025\u2027\u202A\u202C\0\u202E\u803B\xBD\u40BD;\u6153\u803B\xBC\u40BC;\u6155;\u6159;\u615B\u01B3\u2034\0\u2036;\u6154;\u6156\u02B4\u203E\u2041\0\0\u2043\u803B\xBE\u40BE;\u6157;\u615C5;\u6158\u01B6\u204C\0\u204E;\u615A;\u615D8;\u615El;\u6044wn;\u6322cr;\uC000\u{1D4BB}\u0880Eabcdefgijlnorstv\u2082\u2089\u209F\u20A5\u20B0\u20B4\u20F0\u20F5\u20FA\u20FF\u2103\u2112\u2138\u0317\u213E\u2152\u219E\u0100;l\u064D\u2087;\u6A8C\u0180cmp\u2090\u2095\u209Dute;\u41F5ma\u0100;d\u209C\u1CDA\u43B3;\u6A86reve;\u411F\u0100iy\u20AA\u20AErc;\u411D;\u4433ot;\u4121\u0200;lqs\u063E\u0642\u20BD\u20C9\u0180;qs\u063E\u064C\u20C4lan\xF4\u0665\u0200;cdl\u0665\u20D2\u20D5\u20E5c;\u6AA9ot\u0100;o\u20DC\u20DD\u6A80\u0100;l\u20E2\u20E3\u6A82;\u6A84\u0100;e\u20EA\u20ED\uC000\u22DB\uFE00s;\u6A94r;\uC000\u{1D524}\u0100;g\u0673\u061Bmel;\u6137cy;\u4453\u0200;Eaj\u065A\u210C\u210E\u2110;\u6A92;\u6AA5;\u6AA4\u0200Eaes\u211B\u211D\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6A8Arox\xBB\u2124\u0100;q\u212E\u212F\u6A88\u0100;q\u212E\u211Bim;\u62E7pf;\uC000\u{1D558}\u0100ci\u2143\u2146r;\u610Am\u0180;el\u066B\u214E\u2150;\u6A8E;\u6A90\u8300>;cdlqr\u05EE\u2160\u216A\u216E\u2173\u2179\u0100ci\u2165\u2167;\u6AA7r;\u6A7Aot;\u62D7Par;\u6995uest;\u6A7C\u0280adels\u2184\u216A\u2190\u0656\u219B\u01F0\u2189\0\u218Epro\xF8\u209Er;\u6978q\u0100lq\u063F\u2196les\xF3\u2088i\xED\u066B\u0100en\u21A3\u21ADrtneqq;\uC000\u2269\uFE00\xC5\u21AA\u0500Aabcefkosy\u21C4\u21C7\u21F1\u21F5\u21FA\u2218\u221D\u222F\u2268\u227Dr\xF2\u03A0\u0200ilmr\u21D0\u21D4\u21D7\u21DBrs\xF0\u1484f\xBB\u2024il\xF4\u06A9\u0100dr\u21E0\u21E4cy;\u444A\u0180;cw\u08F4\u21EB\u21EFir;\u6948;\u61ADar;\u610Firc;\u4125\u0180alr\u2201\u220E\u2213rts\u0100;u\u2209\u220A\u6665it\xBB\u220Alip;\u6026con;\u62B9r;\uC000\u{1D525}s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223A\u223E\u2243\u225E\u2263rr;\u61FFtht;\u623Bk\u0100lr\u2249\u2253eftarrow;\u61A9ightarrow;\u61AAf;\uC000\u{1D559}bar;\u6015\u0180clt\u226F\u2274\u2278r;\uC000\u{1D4BD}as\xE8\u21F4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xBB\u1C5B\u0AE1\u22A3\0\u22AA\0\u22B8\u22C5\u22CE\0\u22D5\u22F3\0\0\u22F8\u2322\u2367\u2362\u237F\0\u2386\u23AA\u23B4cute\u803B\xED\u40ED\u0180;iy\u0771\u22B0\u22B5rc\u803B\xEE\u40EE;\u4438\u0100cx\u22BC\u22BFy;\u4435cl\u803B\xA1\u40A1\u0100fr\u039F\u22C9;\uC000\u{1D526}rave\u803B\xEC\u40EC\u0200;ino\u073E\u22DD\u22E9\u22EE\u0100in\u22E2\u22E6nt;\u6A0Ct;\u622Dfin;\u69DCta;\u6129lig;\u4133\u0180aop\u22FE\u231A\u231D\u0180cgt\u2305\u2308\u2317r;\u412B\u0180elp\u071F\u230F\u2313in\xE5\u078Ear\xF4\u0720h;\u4131f;\u62B7ed;\u41B5\u0280;cfot\u04F4\u232C\u2331\u233D\u2341are;\u6105in\u0100;t\u2338\u2339\u621Eie;\u69DDdo\xF4\u2319\u0280;celp\u0757\u234C\u2350\u235B\u2361al;\u62BA\u0100gr\u2355\u2359er\xF3\u1563\xE3\u234Darhk;\u6A17rod;\u6A3C\u0200cgpt\u236F\u2372\u2376\u237By;\u4451on;\u412Ff;\uC000\u{1D55A}a;\u43B9uest\u803B\xBF\u40BF\u0100ci\u238A\u238Fr;\uC000\u{1D4BE}n\u0280;Edsv\u04F4\u239B\u239D\u23A1\u04F3;\u62F9ot;\u62F5\u0100;v\u23A6\u23A7\u62F4;\u62F3\u0100;i\u0777\u23AElde;\u4129\u01EB\u23B8\0\u23BCcy;\u4456l\u803B\xEF\u40EF\u0300cfmosu\u23CC\u23D7\u23DC\u23E1\u23E7\u23F5\u0100iy\u23D1\u23D5rc;\u4135;\u4439r;\uC000\u{1D527}ath;\u4237pf;\uC000\u{1D55B}\u01E3\u23EC\0\u23F1r;\uC000\u{1D4BF}rcy;\u4458kcy;\u4454\u0400acfghjos\u240B\u2416\u2422\u2427\u242D\u2431\u2435\u243Bppa\u0100;v\u2413\u2414\u43BA;\u43F0\u0100ey\u241B\u2420dil;\u4137;\u443Ar;\uC000\u{1D528}reen;\u4138cy;\u4445cy;\u445Cpf;\uC000\u{1D55C}cr;\uC000\u{1D4C0}\u0B80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248D\u2491\u250E\u253D\u255A\u2580\u264E\u265E\u2665\u2679\u267D\u269A\u26B2\u26D8\u275D\u2768\u278B\u27C0\u2801\u2812\u0180art\u2477\u247A\u247Cr\xF2\u09C6\xF2\u0395ail;\u691Barr;\u690E\u0100;g\u0994\u248B;\u6A8Bar;\u6962\u0963\u24A5\0\u24AA\0\u24B1\0\0\0\0\0\u24B5\u24BA\0\u24C6\u24C8\u24CD\0\u24F9ute;\u413Amptyv;\u69B4ra\xEE\u084Cbda;\u43BBg\u0180;dl\u088E\u24C1\u24C3;\u6991\xE5\u088E;\u6A85uo\u803B\xAB\u40ABr\u0400;bfhlpst\u0899\u24DE\u24E6\u24E9\u24EB\u24EE\u24F1\u24F5\u0100;f\u089D\u24E3s;\u691Fs;\u691D\xEB\u2252p;\u61ABl;\u6939im;\u6973l;\u61A2\u0180;ae\u24FF\u2500\u2504\u6AABil;\u6919\u0100;s\u2509\u250A\u6AAD;\uC000\u2AAD\uFE00\u0180abr\u2515\u2519\u251Drr;\u690Crk;\u6772\u0100ak\u2522\u252Cc\u0100ek\u2528\u252A;\u407B;\u405B\u0100es\u2531\u2533;\u698Bl\u0100du\u2539\u253B;\u698F;\u698D\u0200aeuy\u2546\u254B\u2556\u2558ron;\u413E\u0100di\u2550\u2554il;\u413C\xEC\u08B0\xE2\u2529;\u443B\u0200cqrs\u2563\u2566\u256D\u257Da;\u6936uo\u0100;r\u0E19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694Bh;\u61B2\u0280;fgqs\u258B\u258C\u0989\u25F3\u25FF\u6264t\u0280ahlrt\u2598\u25A4\u25B7\u25C2\u25E8rrow\u0100;t\u0899\u25A1a\xE9\u24F6arpoon\u0100du\u25AF\u25B4own\xBB\u045Ap\xBB\u0966eftarrows;\u61C7ight\u0180ahs\u25CD\u25D6\u25DErrow\u0100;s\u08F4\u08A7arpoon\xF3\u0F98quigarro\xF7\u21F0hreetimes;\u62CB\u0180;qs\u258B\u0993\u25FAlan\xF4\u09AC\u0280;cdgs\u09AC\u260A\u260D\u261D\u2628c;\u6AA8ot\u0100;o\u2614\u2615\u6A7F\u0100;r\u261A\u261B\u6A81;\u6A83\u0100;e\u2622\u2625\uC000\u22DA\uFE00s;\u6A93\u0280adegs\u2633\u2639\u263D\u2649\u264Bppro\xF8\u24C6ot;\u62D6q\u0100gq\u2643\u2645\xF4\u0989gt\xF2\u248C\xF4\u099Bi\xED\u09B2\u0180ilr\u2655\u08E1\u265Asht;\u697C;\uC000\u{1D529}\u0100;E\u099C\u2663;\u6A91\u0161\u2669\u2676r\u0100du\u25B2\u266E\u0100;l\u0965\u2673;\u696Alk;\u6584cy;\u4459\u0280;acht\u0A48\u2688\u268B\u2691\u2696r\xF2\u25C1orne\xF2\u1D08ard;\u696Bri;\u65FA\u0100io\u269F\u26A4dot;\u4140ust\u0100;a\u26AC\u26AD\u63B0che\xBB\u26AD\u0200Eaes\u26BB\u26BD\u26C9\u26D4;\u6268p\u0100;p\u26C3\u26C4\u6A89rox\xBB\u26C4\u0100;q\u26CE\u26CF\u6A87\u0100;q\u26CE\u26BBim;\u62E6\u0400abnoptwz\u26E9\u26F4\u26F7\u271A\u272F\u2741\u2747\u2750\u0100nr\u26EE\u26F1g;\u67ECr;\u61FDr\xEB\u08C1g\u0180lmr\u26FF\u270D\u2714eft\u0100ar\u09E6\u2707ight\xE1\u09F2apsto;\u67FCight\xE1\u09FDparrow\u0100lr\u2725\u2729ef\xF4\u24EDight;\u61AC\u0180afl\u2736\u2739\u273Dr;\u6985;\uC000\u{1D55D}us;\u6A2Dimes;\u6A34\u0161\u274B\u274Fst;\u6217\xE1\u134E\u0180;ef\u2757\u2758\u1800\u65CAnge\xBB\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277C\u2785\u2787r\xF2\u08A8orne\xF2\u1D8Car\u0100;d\u0F98\u2783;\u696D;\u600Eri;\u62BF\u0300achiqt\u2798\u279D\u0A40\u27A2\u27AE\u27BBquo;\u6039r;\uC000\u{1D4C1}m\u0180;eg\u09B2\u27AA\u27AC;\u6A8D;\u6A8F\u0100bu\u252A\u27B3o\u0100;r\u0E1F\u27B9;\u601Arok;\u4142\u8400<;cdhilqr\u082B\u27D2\u2639\u27DC\u27E0\u27E5\u27EA\u27F0\u0100ci\u27D7\u27D9;\u6AA6r;\u6A79re\xE5\u25F2mes;\u62C9arr;\u6976uest;\u6A7B\u0100Pi\u27F5\u27F9ar;\u6996\u0180;ef\u2800\u092D\u181B\u65C3r\u0100du\u2807\u280Dshar;\u694Ahar;\u6966\u0100en\u2817\u2821rtneqq;\uC000\u2268\uFE00\xC5\u281E\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288E\u2893\u28A0\u28A5\u28A8\u28DA\u28E2\u28E4\u0A83\u28F3\u2902Dot;\u623A\u0200clpr\u284E\u2852\u2863\u287Dr\u803B\xAF\u40AF\u0100et\u2857\u2859;\u6642\u0100;e\u285E\u285F\u6720se\xBB\u285F\u0100;s\u103B\u2868to\u0200;dlu\u103B\u2873\u2877\u287Bow\xEE\u048Cef\xF4\u090F\xF0\u13D1ker;\u65AE\u0100oy\u2887\u288Cmma;\u6A29;\u443Cash;\u6014asuredangle\xBB\u1626r;\uC000\u{1D52A}o;\u6127\u0180cdn\u28AF\u28B4\u28C9ro\u803B\xB5\u40B5\u0200;acd\u1464\u28BD\u28C0\u28C4s\xF4\u16A7ir;\u6AF0ot\u80BB\xB7\u01B5us\u0180;bd\u28D2\u1903\u28D3\u6212\u0100;u\u1D3C\u28D8;\u6A2A\u0163\u28DE\u28E1p;\u6ADB\xF2\u2212\xF0\u0A81\u0100dp\u28E9\u28EEels;\u62A7f;\uC000\u{1D55E}\u0100ct\u28F8\u28FDr;\uC000\u{1D4C2}pos\xBB\u159D\u0180;lm\u2909\u290A\u290D\u43BCtimap;\u62B8\u0C00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297E\u2989\u2998\u29DA\u29E9\u2A15\u2A1A\u2A58\u2A5D\u2A83\u2A95\u2AA4\u2AA8\u2B04\u2B07\u2B44\u2B7F\u2BAE\u2C34\u2C67\u2C7C\u2CE9\u0100gt\u2947\u294B;\uC000\u22D9\u0338\u0100;v\u2950\u0BCF\uC000\u226B\u20D2\u0180elt\u295A\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61CDightarrow;\u61CE;\uC000\u22D8\u0338\u0100;v\u297B\u0C47\uC000\u226A\u20D2ightarrow;\u61CF\u0100Dd\u298E\u2993ash;\u62AFash;\u62AE\u0280bcnpt\u29A3\u29A7\u29AC\u29B1\u29CCla\xBB\u02DEute;\u4144g;\uC000\u2220\u20D2\u0280;Eiop\u0D84\u29BC\u29C0\u29C5\u29C8;\uC000\u2A70\u0338d;\uC000\u224B\u0338s;\u4149ro\xF8\u0D84ur\u0100;a\u29D3\u29D4\u666El\u0100;s\u29D3\u0B38\u01F3\u29DF\0\u29E3p\u80BB\xA0\u0B37mp\u0100;e\u0BF9\u0C00\u0280aeouy\u29F4\u29FE\u2A03\u2A10\u2A13\u01F0\u29F9\0\u29FB;\u6A43on;\u4148dil;\u4146ng\u0100;d\u0D7E\u2A0Aot;\uC000\u2A6D\u0338p;\u6A42;\u443Dash;\u6013\u0380;Aadqsx\u0B92\u2A29\u2A2D\u2A3B\u2A41\u2A45\u2A50rr;\u61D7r\u0100hr\u2A33\u2A36k;\u6924\u0100;o\u13F2\u13F0ot;\uC000\u2250\u0338ui\xF6\u0B63\u0100ei\u2A4A\u2A4Ear;\u6928\xED\u0B98ist\u0100;s\u0BA0\u0B9Fr;\uC000\u{1D52B}\u0200Eest\u0BC5\u2A66\u2A79\u2A7C\u0180;qs\u0BBC\u2A6D\u0BE1\u0180;qs\u0BBC\u0BC5\u2A74lan\xF4\u0BE2i\xED\u0BEA\u0100;r\u0BB6\u2A81\xBB\u0BB7\u0180Aap\u2A8A\u2A8D\u2A91r\xF2\u2971rr;\u61AEar;\u6AF2\u0180;sv\u0F8D\u2A9C\u0F8C\u0100;d\u2AA1\u2AA2\u62FC;\u62FAcy;\u445A\u0380AEadest\u2AB7\u2ABA\u2ABE\u2AC2\u2AC5\u2AF6\u2AF9r\xF2\u2966;\uC000\u2266\u0338rr;\u619Ar;\u6025\u0200;fqs\u0C3B\u2ACE\u2AE3\u2AEFt\u0100ar\u2AD4\u2AD9rro\xF7\u2AC1ightarro\xF7\u2A90\u0180;qs\u0C3B\u2ABA\u2AEAlan\xF4\u0C55\u0100;s\u0C55\u2AF4\xBB\u0C36i\xED\u0C5D\u0100;r\u0C35\u2AFEi\u0100;e\u0C1A\u0C25i\xE4\u0D90\u0100pt\u2B0C\u2B11f;\uC000\u{1D55F}\u8180\xAC;in\u2B19\u2B1A\u2B36\u40ACn\u0200;Edv\u0B89\u2B24\u2B28\u2B2E;\uC000\u22F9\u0338ot;\uC000\u22F5\u0338\u01E1\u0B89\u2B33\u2B35;\u62F7;\u62F6i\u0100;v\u0CB8\u2B3C\u01E1\u0CB8\u2B41\u2B43;\u62FE;\u62FD\u0180aor\u2B4B\u2B63\u2B69r\u0200;ast\u0B7B\u2B55\u2B5A\u2B5Flle\xEC\u0B7Bl;\uC000\u2AFD\u20E5;\uC000\u2202\u0338lint;\u6A14\u0180;ce\u0C92\u2B70\u2B73u\xE5\u0CA5\u0100;c\u0C98\u2B78\u0100;e\u0C92\u2B7D\xF1\u0C98\u0200Aait\u2B88\u2B8B\u2B9D\u2BA7r\xF2\u2988rr\u0180;cw\u2B94\u2B95\u2B99\u619B;\uC000\u2933\u0338;\uC000\u219D\u0338ghtarrow\xBB\u2B95ri\u0100;e\u0CCB\u0CD6\u0380chimpqu\u2BBD\u2BCD\u2BD9\u2B04\u0B78\u2BE4\u2BEF\u0200;cer\u0D32\u2BC6\u0D37\u2BC9u\xE5\u0D45;\uC000\u{1D4C3}ort\u026D\u2B05\0\0\u2BD6ar\xE1\u2B56m\u0100;e\u0D6E\u2BDF\u0100;q\u0D74\u0D73su\u0100bp\u2BEB\u2BED\xE5\u0CF8\xE5\u0D0B\u0180bcp\u2BF6\u2C11\u2C19\u0200;Ees\u2BFF\u2C00\u0D22\u2C04\u6284;\uC000\u2AC5\u0338et\u0100;e\u0D1B\u2C0Bq\u0100;q\u0D23\u2C00c\u0100;e\u0D32\u2C17\xF1\u0D38\u0200;Ees\u2C22\u2C23\u0D5F\u2C27\u6285;\uC000\u2AC6\u0338et\u0100;e\u0D58\u2C2Eq\u0100;q\u0D60\u2C23\u0200gilr\u2C3D\u2C3F\u2C45\u2C47\xEC\u0BD7lde\u803B\xF1\u40F1\xE7\u0C43iangle\u0100lr\u2C52\u2C5Ceft\u0100;e\u0C1A\u2C5A\xF1\u0C26ight\u0100;e\u0CCB\u2C65\xF1\u0CD7\u0100;m\u2C6C\u2C6D\u43BD\u0180;es\u2C74\u2C75\u2C79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2C8F\u2C94\u2C99\u2C9E\u2CA3\u2CB0\u2CB6\u2CD3\u2CE3ash;\u62ADarr;\u6904p;\uC000\u224D\u20D2ash;\u62AC\u0100et\u2CA8\u2CAC;\uC000\u2265\u20D2;\uC000>\u20D2nfin;\u69DE\u0180Aet\u2CBD\u2CC1\u2CC5rr;\u6902;\uC000\u2264\u20D2\u0100;r\u2CCA\u2CCD\uC000<\u20D2ie;\uC000\u22B4\u20D2\u0100At\u2CD8\u2CDCrr;\u6903rie;\uC000\u22B5\u20D2im;\uC000\u223C\u20D2\u0180Aan\u2CF0\u2CF4\u2D02rr;\u61D6r\u0100hr\u2CFA\u2CFDk;\u6923\u0100;o\u13E7\u13E5ear;\u6927\u1253\u1A95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2D2D\0\u2D38\u2D48\u2D60\u2D65\u2D72\u2D84\u1B07\0\0\u2D8D\u2DAB\0\u2DC8\u2DCE\0\u2DDC\u2E19\u2E2B\u2E3E\u2E43\u0100cs\u2D31\u1A97ute\u803B\xF3\u40F3\u0100iy\u2D3C\u2D45r\u0100;c\u1A9E\u2D42\u803B\xF4\u40F4;\u443E\u0280abios\u1AA0\u2D52\u2D57\u01C8\u2D5Alac;\u4151v;\u6A38old;\u69BClig;\u4153\u0100cr\u2D69\u2D6Dir;\u69BF;\uC000\u{1D52C}\u036F\u2D79\0\0\u2D7C\0\u2D82n;\u42DBave\u803B\xF2\u40F2;\u69C1\u0100bm\u2D88\u0DF4ar;\u69B5\u0200acit\u2D95\u2D98\u2DA5\u2DA8r\xF2\u1A80\u0100ir\u2D9D\u2DA0r;\u69BEoss;\u69BBn\xE5\u0E52;\u69C0\u0180aei\u2DB1\u2DB5\u2DB9cr;\u414Dga;\u43C9\u0180cdn\u2DC0\u2DC5\u01CDron;\u43BF;\u69B6pf;\uC000\u{1D560}\u0180ael\u2DD4\u2DD7\u01D2r;\u69B7rp;\u69B9\u0380;adiosv\u2DEA\u2DEB\u2DEE\u2E08\u2E0D\u2E10\u2E16\u6228r\xF2\u1A86\u0200;efm\u2DF7\u2DF8\u2E02\u2E05\u6A5Dr\u0100;o\u2DFE\u2DFF\u6134f\xBB\u2DFF\u803B\xAA\u40AA\u803B\xBA\u40BAgof;\u62B6r;\u6A56lope;\u6A57;\u6A5B\u0180clo\u2E1F\u2E21\u2E27\xF2\u2E01ash\u803B\xF8\u40F8l;\u6298i\u016C\u2E2F\u2E34de\u803B\xF5\u40F5es\u0100;a\u01DB\u2E3As;\u6A36ml\u803B\xF6\u40F6bar;\u633D\u0AE1\u2E5E\0\u2E7D\0\u2E80\u2E9D\0\u2EA2\u2EB9\0\0\u2ECB\u0E9C\0\u2F13\0\0\u2F2B\u2FBC\0\u2FC8r\u0200;ast\u0403\u2E67\u2E72\u0E85\u8100\xB6;l\u2E6D\u2E6E\u40B6le\xEC\u0403\u0269\u2E78\0\0\u2E7Bm;\u6AF3;\u6AFDy;\u443Fr\u0280cimpt\u2E8B\u2E8F\u2E93\u1865\u2E97nt;\u4025od;\u402Eil;\u6030enk;\u6031r;\uC000\u{1D52D}\u0180imo\u2EA8\u2EB0\u2EB4\u0100;v\u2EAD\u2EAE\u43C6;\u43D5ma\xF4\u0A76ne;\u660E\u0180;tv\u2EBF\u2EC0\u2EC8\u43C0chfork\xBB\u1FFD;\u43D6\u0100au\u2ECF\u2EDFn\u0100ck\u2ED5\u2EDDk\u0100;h\u21F4\u2EDB;\u610E\xF6\u21F4s\u0480;abcdemst\u2EF3\u2EF4\u1908\u2EF9\u2EFD\u2F04\u2F06\u2F0A\u2F0E\u402Bcir;\u6A23ir;\u6A22\u0100ou\u1D40\u2F02;\u6A25;\u6A72n\u80BB\xB1\u0E9Dim;\u6A26wo;\u6A27\u0180ipu\u2F19\u2F20\u2F25ntint;\u6A15f;\uC000\u{1D561}nd\u803B\xA3\u40A3\u0500;Eaceinosu\u0EC8\u2F3F\u2F41\u2F44\u2F47\u2F81\u2F89\u2F92\u2F7E\u2FB6;\u6AB3p;\u6AB7u\xE5\u0ED9\u0100;c\u0ECE\u2F4C\u0300;acens\u0EC8\u2F59\u2F5F\u2F66\u2F68\u2F7Eppro\xF8\u2F43urlye\xF1\u0ED9\xF1\u0ECE\u0180aes\u2F6F\u2F76\u2F7Approx;\u6AB9qq;\u6AB5im;\u62E8i\xED\u0EDFme\u0100;s\u2F88\u0EAE\u6032\u0180Eas\u2F78\u2F90\u2F7A\xF0\u2F75\u0180dfp\u0EEC\u2F99\u2FAF\u0180als\u2FA0\u2FA5\u2FAAlar;\u632Eine;\u6312urf;\u6313\u0100;t\u0EFB\u2FB4\xEF\u0EFBrel;\u62B0\u0100ci\u2FC0\u2FC5r;\uC000\u{1D4C5};\u43C8ncsp;\u6008\u0300fiopsu\u2FDA\u22E2\u2FDF\u2FE5\u2FEB\u2FF1r;\uC000\u{1D52E}pf;\uC000\u{1D562}rime;\u6057cr;\uC000\u{1D4C6}\u0180aeo\u2FF8\u3009\u3013t\u0100ei\u2FFE\u3005rnion\xF3\u06B0nt;\u6A16st\u0100;e\u3010\u3011\u403F\xF1\u1F19\xF4\u0F14\u0A80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30E0\u310E\u312B\u3147\u3162\u3172\u318E\u3206\u3215\u3224\u3229\u3258\u326E\u3272\u3290\u32B0\u32B7\u0180art\u3047\u304A\u304Cr\xF2\u10B3\xF2\u03DDail;\u691Car\xF2\u1C65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307F\u308F\u3094\u30CC\u0100eu\u306D\u3071;\uC000\u223D\u0331te;\u4155i\xE3\u116Emptyv;\u69B3g\u0200;del\u0FD1\u3089\u308B\u308D;\u6992;\u69A5\xE5\u0FD1uo\u803B\xBB\u40BBr\u0580;abcfhlpstw\u0FDC\u30AC\u30AF\u30B7\u30B9\u30BC\u30BE\u30C0\u30C3\u30C7\u30CAp;\u6975\u0100;f\u0FE0\u30B4s;\u6920;\u6933s;\u691E\xEB\u225D\xF0\u272El;\u6945im;\u6974l;\u61A3;\u619D\u0100ai\u30D1\u30D5il;\u691Ao\u0100;n\u30DB\u30DC\u6236al\xF3\u0F1E\u0180abr\u30E7\u30EA\u30EEr\xF2\u17E5rk;\u6773\u0100ak\u30F3\u30FDc\u0100ek\u30F9\u30FB;\u407D;\u405D\u0100es\u3102\u3104;\u698Cl\u0100du\u310A\u310C;\u698E;\u6990\u0200aeuy\u3117\u311C\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xEC\u0FF2\xE2\u30FA;\u4440\u0200clqs\u3134\u3137\u313D\u3144a;\u6937dhar;\u6969uo\u0100;r\u020E\u020Dh;\u61B3\u0180acg\u314E\u315F\u0F44l\u0200;ips\u0F78\u3158\u315B\u109Cn\xE5\u10BBar\xF4\u0FA9t;\u65AD\u0180ilr\u3169\u1023\u316Esht;\u697D;\uC000\u{1D52F}\u0100ao\u3177\u3186r\u0100du\u317D\u317F\xBB\u047B\u0100;l\u1091\u3184;\u696C\u0100;v\u318B\u318C\u43C1;\u43F1\u0180gns\u3195\u31F9\u31FCht\u0300ahlrst\u31A4\u31B0\u31C2\u31D8\u31E4\u31EErrow\u0100;t\u0FDC\u31ADa\xE9\u30C8arpoon\u0100du\u31BB\u31BFow\xEE\u317Ep\xBB\u1092eft\u0100ah\u31CA\u31D0rrow\xF3\u0FEAarpoon\xF3\u0551ightarrows;\u61C9quigarro\xF7\u30CBhreetimes;\u62CCg;\u42DAingdotse\xF1\u1F32\u0180ahm\u320D\u3210\u3213r\xF2\u0FEAa\xF2\u0551;\u600Foust\u0100;a\u321E\u321F\u63B1che\xBB\u321Fmid;\u6AEE\u0200abpt\u3232\u323D\u3240\u3252\u0100nr\u3237\u323Ag;\u67EDr;\u61FEr\xEB\u1003\u0180afl\u3247\u324A\u324Er;\u6986;\uC000\u{1D563}us;\u6A2Eimes;\u6A35\u0100ap\u325D\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6A12ar\xF2\u31E3\u0200achq\u327B\u3280\u10BC\u3285quo;\u603Ar;\uC000\u{1D4C7}\u0100bu\u30FB\u328Ao\u0100;r\u0214\u0213\u0180hir\u3297\u329B\u32A0re\xE5\u31F8mes;\u62CAi\u0200;efl\u32AA\u1059\u1821\u32AB\u65B9tri;\u69CEluhar;\u6968;\u611E\u0D61\u32D5\u32DB\u32DF\u332C\u3338\u3371\0\u337A\u33A4\0\0\u33EC\u33F0\0\u3428\u3448\u345A\u34AD\u34B1\u34CA\u34F1\0\u3616\0\0\u3633cute;\u415Bqu\xEF\u27BA\u0500;Eaceinpsy\u11ED\u32F3\u32F5\u32FF\u3302\u330B\u330F\u331F\u3326\u3329;\u6AB4\u01F0\u32FA\0\u32FC;\u6AB8on;\u4161u\xE5\u11FE\u0100;d\u11F3\u3307il;\u415Frc;\u415D\u0180Eas\u3316\u3318\u331B;\u6AB6p;\u6ABAim;\u62E9olint;\u6A13i\xED\u1204;\u4441ot\u0180;be\u3334\u1D47\u3335\u62C5;\u6A66\u0380Aacmstx\u3346\u334A\u3357\u335B\u335E\u3363\u336Drr;\u61D8r\u0100hr\u3350\u3352\xEB\u2228\u0100;o\u0A36\u0A34t\u803B\xA7\u40A7i;\u403Bwar;\u6929m\u0100in\u3369\xF0nu\xF3\xF1t;\u6736r\u0100;o\u3376\u2055\uC000\u{1D530}\u0200acoy\u3382\u3386\u3391\u33A0rp;\u666F\u0100hy\u338B\u338Fcy;\u4449;\u4448rt\u026D\u3399\0\0\u339Ci\xE4\u1464ara\xEC\u2E6F\u803B\xAD\u40AD\u0100gm\u33A8\u33B4ma\u0180;fv\u33B1\u33B2\u33B2\u43C3;\u43C2\u0400;deglnpr\u12AB\u33C5\u33C9\u33CE\u33D6\u33DE\u33E1\u33E6ot;\u6A6A\u0100;q\u12B1\u12B0\u0100;E\u33D3\u33D4\u6A9E;\u6AA0\u0100;E\u33DB\u33DC\u6A9D;\u6A9Fe;\u6246lus;\u6A24arr;\u6972ar\xF2\u113D\u0200aeit\u33F8\u3408\u340F\u3417\u0100ls\u33FD\u3404lsetm\xE9\u336Ahp;\u6A33parsl;\u69E4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341C\u341D\u6AAA\u0100;s\u3422\u3423\u6AAC;\uC000\u2AAC\uFE00\u0180flp\u342E\u3433\u3442tcy;\u444C\u0100;b\u3438\u3439\u402F\u0100;a\u343E\u343F\u69C4r;\u633Ff;\uC000\u{1D564}a\u0100dr\u344D\u0402es\u0100;u\u3454\u3455\u6660it\xBB\u3455\u0180csu\u3460\u3479\u349F\u0100au\u3465\u346Fp\u0100;s\u1188\u346B;\uC000\u2293\uFE00p\u0100;s\u11B4\u3475;\uC000\u2294\uFE00u\u0100bp\u347F\u348F\u0180;es\u1197\u119C\u3486et\u0100;e\u1197\u348D\xF1\u119D\u0180;es\u11A8\u11AD\u3496et\u0100;e\u11A8\u349D\xF1\u11AE\u0180;af\u117B\u34A6\u05B0r\u0165\u34AB\u05B1\xBB\u117Car\xF2\u1148\u0200cemt\u34B9\u34BE\u34C2\u34C5r;\uC000\u{1D4C8}tm\xEE\xF1i\xEC\u3415ar\xE6\u11BE\u0100ar\u34CE\u34D5r\u0100;f\u34D4\u17BF\u6606\u0100an\u34DA\u34EDight\u0100ep\u34E3\u34EApsilo\xEE\u1EE0h\xE9\u2EAFs\xBB\u2852\u0280bcmnp\u34FB\u355E\u1209\u358B\u358E\u0480;Edemnprs\u350E\u350F\u3511\u3515\u351E\u3523\u352C\u3531\u3536\u6282;\u6AC5ot;\u6ABD\u0100;d\u11DA\u351Aot;\u6AC3ult;\u6AC1\u0100Ee\u3528\u352A;\u6ACB;\u628Alus;\u6ABFarr;\u6979\u0180eiu\u353D\u3552\u3555t\u0180;en\u350E\u3545\u354Bq\u0100;q\u11DA\u350Feq\u0100;q\u352B\u3528m;\u6AC7\u0100bp\u355A\u355C;\u6AD5;\u6AD3c\u0300;acens\u11ED\u356C\u3572\u3579\u357B\u3326ppro\xF8\u32FAurlye\xF1\u11FE\xF1\u11F3\u0180aes\u3582\u3588\u331Bppro\xF8\u331Aq\xF1\u3317g;\u666A\u0680123;Edehlmnps\u35A9\u35AC\u35AF\u121C\u35B2\u35B4\u35C0\u35C9\u35D5\u35DA\u35DF\u35E8\u35ED\u803B\xB9\u40B9\u803B\xB2\u40B2\u803B\xB3\u40B3;\u6AC6\u0100os\u35B9\u35BCt;\u6ABEub;\u6AD8\u0100;d\u1222\u35C5ot;\u6AC4s\u0100ou\u35CF\u35D2l;\u67C9b;\u6AD7arr;\u697Bult;\u6AC2\u0100Ee\u35E4\u35E6;\u6ACC;\u628Blus;\u6AC0\u0180eiu\u35F4\u3609\u360Ct\u0180;en\u121C\u35FC\u3602q\u0100;q\u1222\u35B2eq\u0100;q\u35E7\u35E4m;\u6AC8\u0100bp\u3611\u3613;\u6AD4;\u6AD6\u0180Aan\u361C\u3620\u362Drr;\u61D9r\u0100hr\u3626\u3628\xEB\u222E\u0100;o\u0A2B\u0A29war;\u692Alig\u803B\xDF\u40DF\u0BE1\u3651\u365D\u3660\u12CE\u3673\u3679\0\u367E\u36C2\0\0\0\0\0\u36DB\u3703\0\u3709\u376C\0\0\0\u3787\u0272\u3656\0\0\u365Bget;\u6316;\u43C4r\xEB\u0E5F\u0180aey\u3666\u366B\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uC000\u{1D531}\u0200eiko\u3686\u369D\u36B5\u36BC\u01F2\u368B\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369B\u43B8ym;\u43D1\u0100cn\u36A2\u36B2k\u0100as\u36A8\u36AEppro\xF8\u12C1im\xBB\u12ACs\xF0\u129E\u0100as\u36BA\u36AE\xF0\u12C1rn\u803B\xFE\u40FE\u01EC\u031F\u36C6\u22E7es\u8180\xD7;bd\u36CF\u36D0\u36D8\u40D7\u0100;a\u190F\u36D5r;\u6A31;\u6A30\u0180eps\u36E1\u36E3\u3700\xE1\u2A4D\u0200;bcf\u0486\u36EC\u36F0\u36F4ot;\u6336ir;\u6AF1\u0100;o\u36F9\u36FC\uC000\u{1D565}rk;\u6ADA\xE1\u3362rime;\u6034\u0180aip\u370F\u3712\u3764d\xE5\u1248\u0380adempst\u3721\u374D\u3740\u3751\u3757\u375C\u375Fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65B5own\xBB\u1DBBeft\u0100;e\u2800\u373E\xF1\u092E;\u625Cight\u0100;e\u32AA\u374B\xF1\u105Aot;\u65ECinus;\u6A3Alus;\u6A39b;\u69CDime;\u6A3Bezium;\u63E2\u0180cht\u3772\u377D\u3781\u0100ry\u3777\u377B;\uC000\u{1D4C9};\u4446cy;\u445Brok;\u4167\u0100io\u378B\u378Ex\xF4\u1777head\u0100lr\u3797\u37A0eftarro\xF7\u084Fightarrow\xBB\u0F5D\u0900AHabcdfghlmoprstuw\u37D0\u37D3\u37D7\u37E4\u37F0\u37FC\u380E\u381C\u3823\u3834\u3851\u385D\u386B\u38A9\u38CC\u38D2\u38EA\u38F6r\xF2\u03EDar;\u6963\u0100cr\u37DC\u37E2ute\u803B\xFA\u40FA\xF2\u1150r\u01E3\u37EA\0\u37EDy;\u445Eve;\u416D\u0100iy\u37F5\u37FArc\u803B\xFB\u40FB;\u4443\u0180abh\u3803\u3806\u380Br\xF2\u13ADlac;\u4171a\xF2\u13C3\u0100ir\u3813\u3818sht;\u697E;\uC000\u{1D532}rave\u803B\xF9\u40F9\u0161\u3827\u3831r\u0100lr\u382C\u382E\xBB\u0957\xBB\u1083lk;\u6580\u0100ct\u3839\u384D\u026F\u383F\0\0\u384Arn\u0100;e\u3845\u3846\u631Cr\xBB\u3846op;\u630Fri;\u65F8\u0100al\u3856\u385Acr;\u416B\u80BB\xA8\u0349\u0100gp\u3862\u3866on;\u4173f;\uC000\u{1D566}\u0300adhlsu\u114B\u3878\u387D\u1372\u3891\u38A0own\xE1\u13B3arpoon\u0100lr\u3888\u388Cef\xF4\u382Digh\xF4\u382Fi\u0180;hl\u3899\u389A\u389C\u43C5\xBB\u13FAon\xBB\u389Aparrows;\u61C8\u0180cit\u38B0\u38C4\u38C8\u026F\u38B6\0\0\u38C1rn\u0100;e\u38BC\u38BD\u631Dr\xBB\u38BDop;\u630Eng;\u416Fri;\u65F9cr;\uC000\u{1D4CA}\u0180dir\u38D9\u38DD\u38E2ot;\u62F0lde;\u4169i\u0100;f\u3730\u38E8\xBB\u1813\u0100am\u38EF\u38F2r\xF2\u38A8l\u803B\xFC\u40FCangle;\u69A7\u0780ABDacdeflnoprsz\u391C\u391F\u3929\u392D\u39B5\u39B8\u39BD\u39DF\u39E4\u39E8\u39F3\u39F9\u39FD\u3A01\u3A20r\xF2\u03F7ar\u0100;v\u3926\u3927\u6AE8;\u6AE9as\xE8\u03E1\u0100nr\u3932\u3937grt;\u699C\u0380eknprst\u34E3\u3946\u394B\u3952\u395D\u3964\u3996app\xE1\u2415othin\xE7\u1E96\u0180hir\u34EB\u2EC8\u3959op\xF4\u2FB5\u0100;h\u13B7\u3962\xEF\u318D\u0100iu\u3969\u396Dgm\xE1\u33B3\u0100bp\u3972\u3984setneq\u0100;q\u397D\u3980\uC000\u228A\uFE00;\uC000\u2ACB\uFE00setneq\u0100;q\u398F\u3992\uC000\u228B\uFE00;\uC000\u2ACC\uFE00\u0100hr\u399B\u399Fet\xE1\u369Ciangle\u0100lr\u39AA\u39AFeft\xBB\u0925ight\xBB\u1051y;\u4432ash\xBB\u1036\u0180elr\u39C4\u39D2\u39D7\u0180;be\u2DEA\u39CB\u39CFar;\u62BBq;\u625Alip;\u62EE\u0100bt\u39DC\u1468a\xF2\u1469r;\uC000\u{1D533}tr\xE9\u39AEsu\u0100bp\u39EF\u39F1\xBB\u0D1C\xBB\u0D59pf;\uC000\u{1D567}ro\xF0\u0EFBtr\xE9\u39B4\u0100cu\u3A06\u3A0Br;\uC000\u{1D4CB}\u0100bp\u3A10\u3A18n\u0100Ee\u3980\u3A16\xBB\u397En\u0100Ee\u3992\u3A1E\xBB\u3990igzag;\u699A\u0380cefoprs\u3A36\u3A3B\u3A56\u3A5B\u3A54\u3A61\u3A6Airc;\u4175\u0100di\u3A40\u3A51\u0100bg\u3A45\u3A49ar;\u6A5Fe\u0100;q\u15FA\u3A4F;\u6259erp;\u6118r;\uC000\u{1D534}pf;\uC000\u{1D568}\u0100;e\u1479\u3A66at\xE8\u1479cr;\uC000\u{1D4CC}\u0AE3\u178E\u3A87\0\u3A8B\0\u3A90\u3A9B\0\0\u3A9D\u3AA8\u3AAB\u3AAF\0\0\u3AC3\u3ACE\0\u3AD8\u17DC\u17DFtr\xE9\u17D1r;\uC000\u{1D535}\u0100Aa\u3A94\u3A97r\xF2\u03C3r\xF2\u09F6;\u43BE\u0100Aa\u3AA1\u3AA4r\xF2\u03B8r\xF2\u09EBa\xF0\u2713is;\u62FB\u0180dpt\u17A4\u3AB5\u3ABE\u0100fl\u3ABA\u17A9;\uC000\u{1D569}im\xE5\u17B2\u0100Aa\u3AC7\u3ACAr\xF2\u03CEr\xF2\u0A01\u0100cq\u3AD2\u17B8r;\uC000\u{1D4CD}\u0100pt\u17D6\u3ADCr\xE9\u17D4\u0400acefiosu\u3AF0\u3AFD\u3B08\u3B0C\u3B11\u3B15\u3B1B\u3B21c\u0100uy\u3AF6\u3AFBte\u803B\xFD\u40FD;\u444F\u0100iy\u3B02\u3B06rc;\u4177;\u444Bn\u803B\xA5\u40A5r;\uC000\u{1D536}cy;\u4457pf;\uC000\u{1D56A}cr;\uC000\u{1D4CE}\u0100cm\u3B26\u3B29y;\u444El\u803B\xFF\u40FF\u0500acdefhiosw\u3B42\u3B48\u3B54\u3B58\u3B64\u3B69\u3B6D\u3B74\u3B7A\u3B80cute;\u417A\u0100ay\u3B4D\u3B52ron;\u417E;\u4437ot;\u417C\u0100et\u3B5D\u3B61tr\xE6\u155Fa;\u43B6r;\uC000\u{1D537}cy;\u4436grarr;\u61DDpf;\uC000\u{1D56B}cr;\uC000\u{1D4CF}\u0100jn\u3B85\u3B87;\u600Dj;\u600C'.split("").map(function(c) { return c.charCodeAt(0); }) ); } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js var require_decode_data_xml2 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/generated/decode-data-xml.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.default = new Uint16Array( // prettier-ignore "\u0200aglq \x1B\u026D\0\0p;\u4026os;\u4027t;\u403Et;\u403Cuot;\u4022".split("").map(function(c) { return c.charCodeAt(0); }) ); } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js var require_decode_codepoint2 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/decode_codepoint.js"(exports2) { "use strict"; init_define_import_meta_env(); var _a; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.replaceCodePoint = exports2.fromCodePoint = void 0; var decodeMap = /* @__PURE__ */ new Map([ [0, 65533], // C1 Unicode control character reference replacements [128, 8364], [130, 8218], [131, 402], [132, 8222], [133, 8230], [134, 8224], [135, 8225], [136, 710], [137, 8240], [138, 352], [139, 8249], [140, 338], [142, 381], [145, 8216], [146, 8217], [147, 8220], [148, 8221], [149, 8226], [150, 8211], [151, 8212], [152, 732], [153, 8482], [154, 353], [155, 8250], [156, 339], [158, 382], [159, 376] ]); exports2.fromCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins (_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function(codePoint) { var output = ""; if (codePoint > 65535) { codePoint -= 65536; output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); codePoint = 56320 | codePoint & 1023; } output += String.fromCharCode(codePoint); return output; }; function replaceCodePoint(codePoint) { var _a2; if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { return 65533; } return (_a2 = decodeMap.get(codePoint)) !== null && _a2 !== void 0 ? _a2 : codePoint; } exports2.replaceCodePoint = replaceCodePoint; function decodeCodePoint(codePoint) { return (0, exports2.fromCodePoint)(replaceCodePoint(codePoint)); } exports2.default = decodeCodePoint; } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/decode.js var require_decode2 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/decode.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.decodeXML = exports2.decodeHTMLStrict = exports2.decodeHTMLAttribute = exports2.decodeHTML = exports2.determineBranch = exports2.EntityDecoder = exports2.DecodingMode = exports2.BinTrieFlags = exports2.fromCodePoint = exports2.replaceCodePoint = exports2.decodeCodePoint = exports2.xmlDecodeTree = exports2.htmlDecodeTree = void 0; var decode_data_html_js_1 = __importDefault2(require_decode_data_html2()); exports2.htmlDecodeTree = decode_data_html_js_1.default; var decode_data_xml_js_1 = __importDefault2(require_decode_data_xml2()); exports2.xmlDecodeTree = decode_data_xml_js_1.default; var decode_codepoint_js_1 = __importStar2(require_decode_codepoint2()); exports2.decodeCodePoint = decode_codepoint_js_1.default; var decode_codepoint_js_2 = require_decode_codepoint2(); Object.defineProperty(exports2, "replaceCodePoint", { enumerable: true, get: function() { return decode_codepoint_js_2.replaceCodePoint; } }); Object.defineProperty(exports2, "fromCodePoint", { enumerable: true, get: function() { return decode_codepoint_js_2.fromCodePoint; } }); var CharCodes; (function(CharCodes2) { CharCodes2[CharCodes2["NUM"] = 35] = "NUM"; CharCodes2[CharCodes2["SEMI"] = 59] = "SEMI"; CharCodes2[CharCodes2["EQUALS"] = 61] = "EQUALS"; CharCodes2[CharCodes2["ZERO"] = 48] = "ZERO"; CharCodes2[CharCodes2["NINE"] = 57] = "NINE"; CharCodes2[CharCodes2["LOWER_A"] = 97] = "LOWER_A"; CharCodes2[CharCodes2["LOWER_F"] = 102] = "LOWER_F"; CharCodes2[CharCodes2["LOWER_X"] = 120] = "LOWER_X"; CharCodes2[CharCodes2["LOWER_Z"] = 122] = "LOWER_Z"; CharCodes2[CharCodes2["UPPER_A"] = 65] = "UPPER_A"; CharCodes2[CharCodes2["UPPER_F"] = 70] = "UPPER_F"; CharCodes2[CharCodes2["UPPER_Z"] = 90] = "UPPER_Z"; })(CharCodes || (CharCodes = {})); var TO_LOWER_BIT = 32; var BinTrieFlags; (function(BinTrieFlags2) { BinTrieFlags2[BinTrieFlags2["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; BinTrieFlags2[BinTrieFlags2["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; BinTrieFlags2[BinTrieFlags2["JUMP_TABLE"] = 127] = "JUMP_TABLE"; })(BinTrieFlags = exports2.BinTrieFlags || (exports2.BinTrieFlags = {})); function isNumber(code) { return code >= CharCodes.ZERO && code <= CharCodes.NINE; } function isHexadecimalCharacter(code) { return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F; } function isAsciiAlphaNumeric(code) { return code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z || code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z || isNumber(code); } function isEntityInAttributeInvalidEnd(code) { return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); } var EntityDecoderState; (function(EntityDecoderState2) { EntityDecoderState2[EntityDecoderState2["EntityStart"] = 0] = "EntityStart"; EntityDecoderState2[EntityDecoderState2["NumericStart"] = 1] = "NumericStart"; EntityDecoderState2[EntityDecoderState2["NumericDecimal"] = 2] = "NumericDecimal"; EntityDecoderState2[EntityDecoderState2["NumericHex"] = 3] = "NumericHex"; EntityDecoderState2[EntityDecoderState2["NamedEntity"] = 4] = "NamedEntity"; })(EntityDecoderState || (EntityDecoderState = {})); var DecodingMode; (function(DecodingMode2) { DecodingMode2[DecodingMode2["Legacy"] = 0] = "Legacy"; DecodingMode2[DecodingMode2["Strict"] = 1] = "Strict"; DecodingMode2[DecodingMode2["Attribute"] = 2] = "Attribute"; })(DecodingMode = exports2.DecodingMode || (exports2.DecodingMode = {})); var EntityDecoder = ( /** @class */ (function() { function EntityDecoder2(decodeTree, emitCodePoint, errors) { this.decodeTree = decodeTree; this.emitCodePoint = emitCodePoint; this.errors = errors; this.state = EntityDecoderState.EntityStart; this.consumed = 1; this.result = 0; this.treeIndex = 0; this.excess = 1; this.decodeMode = DecodingMode.Strict; } EntityDecoder2.prototype.startEntity = function(decodeMode) { this.decodeMode = decodeMode; this.state = EntityDecoderState.EntityStart; this.result = 0; this.treeIndex = 0; this.excess = 1; this.consumed = 1; }; EntityDecoder2.prototype.write = function(str, offset) { switch (this.state) { case EntityDecoderState.EntityStart: { if (str.charCodeAt(offset) === CharCodes.NUM) { this.state = EntityDecoderState.NumericStart; this.consumed += 1; return this.stateNumericStart(str, offset + 1); } this.state = EntityDecoderState.NamedEntity; return this.stateNamedEntity(str, offset); } case EntityDecoderState.NumericStart: { return this.stateNumericStart(str, offset); } case EntityDecoderState.NumericDecimal: { return this.stateNumericDecimal(str, offset); } case EntityDecoderState.NumericHex: { return this.stateNumericHex(str, offset); } case EntityDecoderState.NamedEntity: { return this.stateNamedEntity(str, offset); } } }; EntityDecoder2.prototype.stateNumericStart = function(str, offset) { if (offset >= str.length) { return -1; } if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { this.state = EntityDecoderState.NumericHex; this.consumed += 1; return this.stateNumericHex(str, offset + 1); } this.state = EntityDecoderState.NumericDecimal; return this.stateNumericDecimal(str, offset); }; EntityDecoder2.prototype.addToNumericResult = function(str, start, end, base) { if (start !== end) { var digitCount = end - start; this.result = this.result * Math.pow(base, digitCount) + parseInt(str.substr(start, digitCount), base); this.consumed += digitCount; } }; EntityDecoder2.prototype.stateNumericHex = function(str, offset) { var startIdx = offset; while (offset < str.length) { var char = str.charCodeAt(offset); if (isNumber(char) || isHexadecimalCharacter(char)) { offset += 1; } else { this.addToNumericResult(str, startIdx, offset, 16); return this.emitNumericEntity(char, 3); } } this.addToNumericResult(str, startIdx, offset, 16); return -1; }; EntityDecoder2.prototype.stateNumericDecimal = function(str, offset) { var startIdx = offset; while (offset < str.length) { var char = str.charCodeAt(offset); if (isNumber(char)) { offset += 1; } else { this.addToNumericResult(str, startIdx, offset, 10); return this.emitNumericEntity(char, 2); } } this.addToNumericResult(str, startIdx, offset, 10); return -1; }; EntityDecoder2.prototype.emitNumericEntity = function(lastCp, expectedLength) { var _a; if (this.consumed <= expectedLength) { (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); return 0; } if (lastCp === CharCodes.SEMI) { this.consumed += 1; } else if (this.decodeMode === DecodingMode.Strict) { return 0; } this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); if (this.errors) { if (lastCp !== CharCodes.SEMI) { this.errors.missingSemicolonAfterCharacterReference(); } this.errors.validateNumericCharacterReference(this.result); } return this.consumed; }; EntityDecoder2.prototype.stateNamedEntity = function(str, offset) { var decodeTree = this.decodeTree; var current = decodeTree[this.treeIndex]; var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; for (; offset < str.length; offset++, this.excess++) { var char = str.charCodeAt(offset); this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); if (this.treeIndex < 0) { return this.result === 0 || // If we are parsing an attribute this.decodeMode === DecodingMode.Attribute && // We shouldn't have consumed any characters after the entity, (valueLength === 0 || // And there should be no invalid characters. isEntityInAttributeInvalidEnd(char)) ? 0 : this.emitNotTerminatedNamedEntity(); } current = decodeTree[this.treeIndex]; valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; if (valueLength !== 0) { if (char === CharCodes.SEMI) { return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); } if (this.decodeMode !== DecodingMode.Strict) { this.result = this.treeIndex; this.consumed += this.excess; this.excess = 0; } } } return -1; }; EntityDecoder2.prototype.emitNotTerminatedNamedEntity = function() { var _a; var _b = this, result = _b.result, decodeTree = _b.decodeTree; var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; this.emitNamedEntityData(result, valueLength, this.consumed); (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); return this.consumed; }; EntityDecoder2.prototype.emitNamedEntityData = function(result, valueLength, consumed) { var decodeTree = this.decodeTree; this.emitCodePoint(valueLength === 1 ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH : decodeTree[result + 1], consumed); if (valueLength === 3) { this.emitCodePoint(decodeTree[result + 2], consumed); } return consumed; }; EntityDecoder2.prototype.end = function() { var _a; switch (this.state) { case EntityDecoderState.NamedEntity: { return this.result !== 0 && (this.decodeMode !== DecodingMode.Attribute || this.result === this.treeIndex) ? this.emitNotTerminatedNamedEntity() : 0; } // Otherwise, emit a numeric entity if we have one. case EntityDecoderState.NumericDecimal: { return this.emitNumericEntity(0, 2); } case EntityDecoderState.NumericHex: { return this.emitNumericEntity(0, 3); } case EntityDecoderState.NumericStart: { (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); return 0; } case EntityDecoderState.EntityStart: { return 0; } } }; return EntityDecoder2; })() ); exports2.EntityDecoder = EntityDecoder; function getDecoder(decodeTree) { var ret = ""; var decoder = new EntityDecoder(decodeTree, function(str) { return ret += (0, decode_codepoint_js_1.fromCodePoint)(str); }); return function decodeWithTrie(str, decodeMode) { var lastIndex = 0; var offset = 0; while ((offset = str.indexOf("&", offset)) >= 0) { ret += str.slice(lastIndex, offset); decoder.startEntity(decodeMode); var len = decoder.write( str, // Skip the "&" offset + 1 ); if (len < 0) { lastIndex = offset + decoder.end(); break; } lastIndex = offset + len; offset = len === 0 ? lastIndex + 1 : lastIndex; } var result = ret + str.slice(lastIndex); ret = ""; return result; }; } function determineBranch(decodeTree, current, nodeIdx, char) { var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; var jumpOffset = current & BinTrieFlags.JUMP_TABLE; if (branchCount === 0) { return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; } if (jumpOffset) { var value = char - jumpOffset; return value < 0 || value >= branchCount ? -1 : decodeTree[nodeIdx + value] - 1; } var lo = nodeIdx; var hi = lo + branchCount - 1; while (lo <= hi) { var mid = lo + hi >>> 1; var midVal = decodeTree[mid]; if (midVal < char) { lo = mid + 1; } else if (midVal > char) { hi = mid - 1; } else { return decodeTree[mid + branchCount]; } } return -1; } exports2.determineBranch = determineBranch; var htmlDecoder = getDecoder(decode_data_html_js_1.default); var xmlDecoder = getDecoder(decode_data_xml_js_1.default); function decodeHTML(str, mode) { if (mode === void 0) { mode = DecodingMode.Legacy; } return htmlDecoder(str, mode); } exports2.decodeHTML = decodeHTML; function decodeHTMLAttribute(str) { return htmlDecoder(str, DecodingMode.Attribute); } exports2.decodeHTMLAttribute = decodeHTMLAttribute; function decodeHTMLStrict(str) { return htmlDecoder(str, DecodingMode.Strict); } exports2.decodeHTMLStrict = decodeHTMLStrict; function decodeXML(str) { return xmlDecoder(str, DecodingMode.Strict); } exports2.decodeXML = decodeXML; } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js var require_encode_html = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/generated/encode-html.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); function restoreDiff(arr) { for (var i = 1; i < arr.length; i++) { arr[i][0] += arr[i - 1][0] + 1; } return arr; } exports2.default = new Map(/* @__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* @__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* @__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/escape.js var require_escape = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/escape.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.escapeText = exports2.escapeAttribute = exports2.escapeUTF8 = exports2.escape = exports2.encodeXML = exports2.getCodePoint = exports2.xmlReplacer = void 0; exports2.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; var xmlCodeMap = /* @__PURE__ */ new Map([ [34, """], [38, "&"], [39, "'"], [60, "<"], [62, ">"] ]); exports2.getCodePoint = // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition String.prototype.codePointAt != null ? function(str, index2) { return str.codePointAt(index2); } : ( // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae function(c, index2) { return (c.charCodeAt(index2) & 64512) === 55296 ? (c.charCodeAt(index2) - 55296) * 1024 + c.charCodeAt(index2 + 1) - 56320 + 65536 : c.charCodeAt(index2); } ); function encodeXML2(str) { var ret = ""; var lastIdx = 0; var match; while ((match = exports2.xmlReplacer.exec(str)) !== null) { var i = match.index; var char = str.charCodeAt(i); var next = xmlCodeMap.get(char); if (next !== void 0) { ret += str.substring(lastIdx, i) + next; lastIdx = i + 1; } else { ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports2.getCodePoint)(str, i).toString(16), ";"); lastIdx = exports2.xmlReplacer.lastIndex += Number((char & 64512) === 55296); } } return ret + str.substr(lastIdx); } exports2.encodeXML = encodeXML2; exports2.escape = encodeXML2; function getEscaper(regex, map) { return function escape3(data) { var match; var lastIdx = 0; var result = ""; while (match = regex.exec(data)) { if (lastIdx !== match.index) { result += data.substring(lastIdx, match.index); } result += map.get(match[0].charCodeAt(0)); lastIdx = match.index + 1; } return result + data.substring(lastIdx); }; } exports2.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); exports2.escapeAttribute = getEscaper(/["&\u00A0]/g, /* @__PURE__ */ new Map([ [34, """], [38, "&"], [160, " "] ])); exports2.escapeText = getEscaper(/[&<>\u00A0]/g, /* @__PURE__ */ new Map([ [38, "&"], [60, "<"], [62, ">"], [160, " "] ])); } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/encode.js var require_encode = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/encode.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.encodeNonAsciiHTML = exports2.encodeHTML = void 0; var encode_html_js_1 = __importDefault2(require_encode_html()); var escape_js_1 = require_escape(); var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g; function encodeHTML(data) { return encodeHTMLTrieRe(htmlReplacer, data); } exports2.encodeHTML = encodeHTML; function encodeNonAsciiHTML(data) { return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data); } exports2.encodeNonAsciiHTML = encodeNonAsciiHTML; function encodeHTMLTrieRe(regExp, str) { var ret = ""; var lastIdx = 0; var match; while ((match = regExp.exec(str)) !== null) { var i = match.index; ret += str.substring(lastIdx, i); var char = str.charCodeAt(i); var next = encode_html_js_1.default.get(char); if (typeof next === "object") { if (i + 1 < str.length) { var nextChar = str.charCodeAt(i + 1); var value = typeof next.n === "number" ? next.n === nextChar ? next.o : void 0 : next.n.get(nextChar); if (value !== void 0) { ret += value; lastIdx = regExp.lastIndex += 1; continue; } } next = next.v; } if (next !== void 0) { ret += next; lastIdx = i + 1; } else { var cp = (0, escape_js_1.getCodePoint)(str, i); ret += "&#x".concat(cp.toString(16), ";"); lastIdx = regExp.lastIndex += Number(cp !== char); } } return ret + str.substr(lastIdx); } } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/index.js var require_lib7 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/node_modules/entities/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.decodeXMLStrict = exports2.decodeHTML5Strict = exports2.decodeHTML4Strict = exports2.decodeHTML5 = exports2.decodeHTML4 = exports2.decodeHTMLAttribute = exports2.decodeHTMLStrict = exports2.decodeHTML = exports2.decodeXML = exports2.DecodingMode = exports2.EntityDecoder = exports2.encodeHTML5 = exports2.encodeHTML4 = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.escapeText = exports2.escapeAttribute = exports2.escapeUTF8 = exports2.escape = exports2.encodeXML = exports2.encode = exports2.decodeStrict = exports2.decode = exports2.EncodingMode = exports2.EntityLevel = void 0; var decode_js_1 = require_decode2(); var encode_js_1 = require_encode(); var escape_js_1 = require_escape(); var EntityLevel2; (function(EntityLevel3) { EntityLevel3[EntityLevel3["XML"] = 0] = "XML"; EntityLevel3[EntityLevel3["HTML"] = 1] = "HTML"; })(EntityLevel2 = exports2.EntityLevel || (exports2.EntityLevel = {})); var EncodingMode2; (function(EncodingMode3) { EncodingMode3[EncodingMode3["UTF8"] = 0] = "UTF8"; EncodingMode3[EncodingMode3["ASCII"] = 1] = "ASCII"; EncodingMode3[EncodingMode3["Extensive"] = 2] = "Extensive"; EncodingMode3[EncodingMode3["Attribute"] = 3] = "Attribute"; EncodingMode3[EncodingMode3["Text"] = 4] = "Text"; })(EncodingMode2 = exports2.EncodingMode || (exports2.EncodingMode = {})); function decode(data, options) { if (options === void 0) { options = EntityLevel2.XML; } var level = typeof options === "number" ? options : options.level; if (level === EntityLevel2.HTML) { var mode = typeof options === "object" ? options.mode : void 0; return (0, decode_js_1.decodeHTML)(data, mode); } return (0, decode_js_1.decodeXML)(data); } exports2.decode = decode; function decodeStrict(data, options) { var _a; if (options === void 0) { options = EntityLevel2.XML; } var opts = typeof options === "number" ? { level: options } : options; (_a = opts.mode) !== null && _a !== void 0 ? _a : opts.mode = decode_js_1.DecodingMode.Strict; return decode(data, opts); } exports2.decodeStrict = decodeStrict; function encode(data, options) { if (options === void 0) { options = EntityLevel2.XML; } var opts = typeof options === "number" ? { level: options } : options; if (opts.mode === EncodingMode2.UTF8) return (0, escape_js_1.escapeUTF8)(data); if (opts.mode === EncodingMode2.Attribute) return (0, escape_js_1.escapeAttribute)(data); if (opts.mode === EncodingMode2.Text) return (0, escape_js_1.escapeText)(data); if (opts.level === EntityLevel2.HTML) { if (opts.mode === EncodingMode2.ASCII) { return (0, encode_js_1.encodeNonAsciiHTML)(data); } return (0, encode_js_1.encodeHTML)(data); } return (0, escape_js_1.encodeXML)(data); } exports2.encode = encode; var escape_js_2 = require_escape(); Object.defineProperty(exports2, "encodeXML", { enumerable: true, get: function() { return escape_js_2.encodeXML; } }); Object.defineProperty(exports2, "escape", { enumerable: true, get: function() { return escape_js_2.escape; } }); Object.defineProperty(exports2, "escapeUTF8", { enumerable: true, get: function() { return escape_js_2.escapeUTF8; } }); Object.defineProperty(exports2, "escapeAttribute", { enumerable: true, get: function() { return escape_js_2.escapeAttribute; } }); Object.defineProperty(exports2, "escapeText", { enumerable: true, get: function() { return escape_js_2.escapeText; } }); var encode_js_2 = require_encode(); Object.defineProperty(exports2, "encodeHTML", { enumerable: true, get: function() { return encode_js_2.encodeHTML; } }); Object.defineProperty(exports2, "encodeNonAsciiHTML", { enumerable: true, get: function() { return encode_js_2.encodeNonAsciiHTML; } }); Object.defineProperty(exports2, "encodeHTML4", { enumerable: true, get: function() { return encode_js_2.encodeHTML; } }); Object.defineProperty(exports2, "encodeHTML5", { enumerable: true, get: function() { return encode_js_2.encodeHTML; } }); var decode_js_2 = require_decode2(); Object.defineProperty(exports2, "EntityDecoder", { enumerable: true, get: function() { return decode_js_2.EntityDecoder; } }); Object.defineProperty(exports2, "DecodingMode", { enumerable: true, get: function() { return decode_js_2.DecodingMode; } }); Object.defineProperty(exports2, "decodeXML", { enumerable: true, get: function() { return decode_js_2.decodeXML; } }); Object.defineProperty(exports2, "decodeHTML", { enumerable: true, get: function() { return decode_js_2.decodeHTML; } }); Object.defineProperty(exports2, "decodeHTMLStrict", { enumerable: true, get: function() { return decode_js_2.decodeHTMLStrict; } }); Object.defineProperty(exports2, "decodeHTMLAttribute", { enumerable: true, get: function() { return decode_js_2.decodeHTMLAttribute; } }); Object.defineProperty(exports2, "decodeHTML4", { enumerable: true, get: function() { return decode_js_2.decodeHTML; } }); Object.defineProperty(exports2, "decodeHTML5", { enumerable: true, get: function() { return decode_js_2.decodeHTML; } }); Object.defineProperty(exports2, "decodeHTML4Strict", { enumerable: true, get: function() { return decode_js_2.decodeHTMLStrict; } }); Object.defineProperty(exports2, "decodeHTML5Strict", { enumerable: true, get: function() { return decode_js_2.decodeHTMLStrict; } }); Object.defineProperty(exports2, "decodeXMLStrict", { enumerable: true, get: function() { return decode_js_2.decodeXML; } }); } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/foreignNames.js var require_foreignNames = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/foreignNames.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.attributeNames = exports2.elementNames = void 0; exports2.elementNames = new Map([ "altGlyph", "altGlyphDef", "altGlyphItem", "animateColor", "animateMotion", "animateTransform", "clipPath", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "foreignObject", "glyphRef", "linearGradient", "radialGradient", "textPath" ].map(function(val) { return [val.toLowerCase(), val]; })); exports2.attributeNames = new Map([ "definitionURL", "attributeName", "attributeType", "baseFrequency", "baseProfile", "calcMode", "clipPathUnits", "diffuseConstant", "edgeMode", "filterUnits", "glyphRef", "gradientTransform", "gradientUnits", "kernelMatrix", "kernelUnitLength", "keyPoints", "keySplines", "keyTimes", "lengthAdjust", "limitingConeAngle", "markerHeight", "markerUnits", "markerWidth", "maskContentUnits", "maskUnits", "numOctaves", "pathLength", "patternContentUnits", "patternTransform", "patternUnits", "pointsAtX", "pointsAtY", "pointsAtZ", "preserveAlpha", "preserveAspectRatio", "primitiveUnits", "refX", "refY", "repeatCount", "repeatDur", "requiredExtensions", "requiredFeatures", "specularConstant", "specularExponent", "spreadMethod", "startOffset", "stdDeviation", "stitchTiles", "surfaceScale", "systemLanguage", "tableValues", "targetX", "targetY", "textLength", "viewBox", "viewTarget", "xChannelSelector", "yChannelSelector", "zoomAndPan" ].map(function(val) { return [val.toLowerCase(), val]; })); } }); // node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/index.js var require_lib8 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __assign2 = exports2 && exports2.__assign || function() { __assign2 = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign2.apply(this, arguments); }; var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.render = void 0; var ElementType4 = __importStar2(require_lib5()); var entities_1 = require_lib7(); var foreignNames_js_1 = require_foreignNames(); var unencodedElements2 = /* @__PURE__ */ new Set([ "style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript" ]); function replaceQuotes2(value) { return value.replace(/"/g, """); } function formatAttributes2(attributes, opts) { var _a; if (!attributes) return; var encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false ? replaceQuotes2 : opts.xmlMode || opts.encodeEntities !== "utf8" ? entities_1.encodeXML : entities_1.escapeAttribute; return Object.keys(attributes).map(function(key) { var _a2, _b; var value = (_a2 = attributes[key]) !== null && _a2 !== void 0 ? _a2 : ""; if (opts.xmlMode === "foreign") { key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key; } if (!opts.emptyAttrs && !opts.xmlMode && value === "") { return key; } return "".concat(key, '="').concat(encode(value), '"'); }).join(" "); } var singleTag = /* @__PURE__ */ new Set([ "area", "base", "basefont", "br", "col", "command", "embed", "frame", "hr", "img", "input", "isindex", "keygen", "link", "meta", "param", "source", "track", "wbr" ]); function render2(node, options) { if (options === void 0) { options = {}; } var nodes = "length" in node ? node : [node]; var output = ""; for (var i = 0; i < nodes.length; i++) { output += renderNode2(nodes[i], options); } return output; } exports2.render = render2; exports2.default = render2; function renderNode2(node, options) { switch (node.type) { case ElementType4.Root: return render2(node.children, options); // @ts-expect-error We don't use `Doctype` yet case ElementType4.Doctype: case ElementType4.Directive: return renderDirective(node); case ElementType4.Comment: return renderComment(node); case ElementType4.CDATA: return renderCdata(node); case ElementType4.Script: case ElementType4.Style: case ElementType4.Tag: return renderTag2(node, options); case ElementType4.Text: return renderText(node, options); } } var foreignModeIntegrationPoints2 = /* @__PURE__ */ new Set([ "mi", "mo", "mn", "ms", "mtext", "annotation-xml", "foreignObject", "desc", "title" ]); var foreignElements2 = /* @__PURE__ */ new Set(["svg", "math"]); function renderTag2(elem, opts) { var _a; if (opts.xmlMode === "foreign") { elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name; if (elem.parent && foreignModeIntegrationPoints2.has(elem.parent.name)) { opts = __assign2(__assign2({}, opts), { xmlMode: false }); } } if (!opts.xmlMode && foreignElements2.has(elem.name)) { opts = __assign2(__assign2({}, opts), { xmlMode: "foreign" }); } var tag = "<".concat(elem.name); var attribs = formatAttributes2(elem.attribs, opts); if (attribs) { tag += " ".concat(attribs); } if (elem.children.length === 0 && (opts.xmlMode ? ( // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags opts.selfClosingTags !== false ) : ( // User explicitly asked for self-closing tags, even in HTML mode opts.selfClosingTags && singleTag.has(elem.name) ))) { if (!opts.xmlMode) tag += " "; tag += "/>"; } else { tag += ">"; if (elem.children.length > 0) { tag += render2(elem.children, opts); } if (opts.xmlMode || !singleTag.has(elem.name)) { tag += "</".concat(elem.name, ">"); } } return tag; } function renderDirective(elem) { return "<".concat(elem.data, ">"); } function renderText(elem, opts) { var _a; var data = elem.data || ""; if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false && !(!opts.xmlMode && elem.parent && unencodedElements2.has(elem.parent.name))) { data = opts.xmlMode || opts.encodeEntities !== "utf8" ? (0, entities_1.encodeXML)(data) : (0, entities_1.escapeText)(data); } return data; } function renderCdata(elem) { return "<![CDATA[".concat(elem.children[0].data, "]]>"); } function renderComment(elem) { return "<!--".concat(elem.data, "-->"); } } }); // node_modules/htmlparser2/node_modules/domutils/lib/stringify.js var require_stringify3 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/stringify.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getOuterHTML = getOuterHTML2; exports2.getInnerHTML = getInnerHTML2; exports2.getText = getText2; exports2.textContent = textContent2; exports2.innerText = innerText2; var domhandler_1 = require_lib6(); var dom_serializer_1 = __importDefault2(require_lib8()); var domelementtype_1 = require_lib5(); function getOuterHTML2(node, options) { return (0, dom_serializer_1.default)(node, options); } function getInnerHTML2(node, options) { return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) { return getOuterHTML2(node2, options); }).join("") : ""; } function getText2(node) { if (Array.isArray(node)) return node.map(getText2).join(""); if ((0, domhandler_1.isTag)(node)) return node.name === "br" ? "\n" : getText2(node.children); if ((0, domhandler_1.isCDATA)(node)) return getText2(node.children); if ((0, domhandler_1.isText)(node)) return node.data; return ""; } function textContent2(node) { if (Array.isArray(node)) return node.map(textContent2).join(""); if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) { return textContent2(node.children); } if ((0, domhandler_1.isText)(node)) return node.data; return ""; } function innerText2(node) { if (Array.isArray(node)) return node.map(innerText2).join(""); if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) { return innerText2(node.children); } if ((0, domhandler_1.isText)(node)) return node.data; return ""; } } }); // node_modules/htmlparser2/node_modules/domutils/lib/traversal.js var require_traversal = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/traversal.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getChildren = getChildren2; exports2.getParent = getParent2; exports2.getSiblings = getSiblings2; exports2.getAttributeValue = getAttributeValue2; exports2.hasAttrib = hasAttrib2; exports2.getName = getName2; exports2.nextElementSibling = nextElementSibling2; exports2.prevElementSibling = prevElementSibling2; var domhandler_1 = require_lib6(); function getChildren2(elem) { return (0, domhandler_1.hasChildren)(elem) ? elem.children : []; } function getParent2(elem) { return elem.parent || null; } function getSiblings2(elem) { var _a, _b; var parent = getParent2(elem); if (parent != null) return getChildren2(parent); var siblings = [elem]; var prev = elem.prev, next = elem.next; while (prev != null) { siblings.unshift(prev); _a = prev, prev = _a.prev; } while (next != null) { siblings.push(next); _b = next, next = _b.next; } return siblings; } function getAttributeValue2(elem, name) { var _a; return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name]; } function hasAttrib2(elem, name) { return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null; } function getName2(elem) { return elem.name; } function nextElementSibling2(elem) { var _a; var next = elem.next; while (next !== null && !(0, domhandler_1.isTag)(next)) _a = next, next = _a.next; return next; } function prevElementSibling2(elem) { var _a; var prev = elem.prev; while (prev !== null && !(0, domhandler_1.isTag)(prev)) _a = prev, prev = _a.prev; return prev; } } }); // node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js var require_manipulation = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.removeElement = removeElement2; exports2.replaceElement = replaceElement2; exports2.appendChild = appendChild2; exports2.append = append2; exports2.prependChild = prependChild2; exports2.prepend = prepend2; function removeElement2(elem) { if (elem.prev) elem.prev.next = elem.next; if (elem.next) elem.next.prev = elem.prev; if (elem.parent) { var childs = elem.parent.children; var childsIndex = childs.lastIndexOf(elem); if (childsIndex >= 0) { childs.splice(childsIndex, 1); } } elem.next = null; elem.prev = null; elem.parent = null; } function replaceElement2(elem, replacement) { var prev = replacement.prev = elem.prev; if (prev) { prev.next = replacement; } var next = replacement.next = elem.next; if (next) { next.prev = replacement; } var parent = replacement.parent = elem.parent; if (parent) { var childs = parent.children; childs[childs.lastIndexOf(elem)] = replacement; elem.parent = null; } } function appendChild2(parent, child) { removeElement2(child); child.next = null; child.parent = parent; if (parent.children.push(child) > 1) { var sibling = parent.children[parent.children.length - 2]; sibling.next = child; child.prev = sibling; } else { child.prev = null; } } function append2(elem, next) { removeElement2(next); var parent = elem.parent; var currNext = elem.next; next.next = currNext; next.prev = elem; elem.next = next; next.parent = parent; if (currNext) { currNext.prev = next; if (parent) { var childs = parent.children; childs.splice(childs.lastIndexOf(currNext), 0, next); } } else if (parent) { parent.children.push(next); } } function prependChild2(parent, child) { removeElement2(child); child.parent = parent; child.prev = null; if (parent.children.unshift(child) !== 1) { var sibling = parent.children[1]; sibling.prev = child; child.next = sibling; } else { child.next = null; } } function prepend2(elem, prev) { removeElement2(prev); var parent = elem.parent; if (parent) { var childs = parent.children; childs.splice(childs.indexOf(elem), 0, prev); } if (elem.prev) { elem.prev.next = prev; } prev.parent = parent; prev.prev = elem.prev; prev.next = elem; elem.prev = prev; } } }); // node_modules/htmlparser2/node_modules/domutils/lib/querying.js var require_querying = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/querying.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.filter = filter2; exports2.find = find2; exports2.findOneChild = findOneChild; exports2.findOne = findOne3; exports2.existsOne = existsOne2; exports2.findAll = findAll3; var domhandler_1 = require_lib6(); function filter2(test, node, recurse, limit) { if (recurse === void 0) { recurse = true; } if (limit === void 0) { limit = Infinity; } return find2(test, Array.isArray(node) ? node : [node], recurse, limit); } function find2(test, nodes, recurse, limit) { var result = []; var nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; var indexStack = [0]; for (; ; ) { if (indexStack[0] >= nodeStack[0].length) { if (indexStack.length === 1) { return result; } nodeStack.shift(); indexStack.shift(); continue; } var elem = nodeStack[0][indexStack[0]++]; if (test(elem)) { result.push(elem); if (--limit <= 0) return result; } if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) { indexStack.unshift(0); nodeStack.unshift(elem.children); } } } function findOneChild(test, nodes) { return nodes.find(test); } function findOne3(test, nodes, recurse) { if (recurse === void 0) { recurse = true; } var searchedNodes = Array.isArray(nodes) ? nodes : [nodes]; for (var i = 0; i < searchedNodes.length; i++) { var node = searchedNodes[i]; if ((0, domhandler_1.isTag)(node) && test(node)) { return node; } if (recurse && (0, domhandler_1.hasChildren)(node) && node.children.length > 0) { var found = findOne3(test, node.children, true); if (found) return found; } } return null; } function existsOne2(test, nodes) { return (Array.isArray(nodes) ? nodes : [nodes]).some(function(node) { return (0, domhandler_1.isTag)(node) && test(node) || (0, domhandler_1.hasChildren)(node) && existsOne2(test, node.children); }); } function findAll3(test, nodes) { var result = []; var nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; var indexStack = [0]; for (; ; ) { if (indexStack[0] >= nodeStack[0].length) { if (nodeStack.length === 1) { return result; } nodeStack.shift(); indexStack.shift(); continue; } var elem = nodeStack[0][indexStack[0]++]; if ((0, domhandler_1.isTag)(elem) && test(elem)) result.push(elem); if ((0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) { indexStack.unshift(0); nodeStack.unshift(elem.children); } } } } }); // node_modules/htmlparser2/node_modules/domutils/lib/legacy.js var require_legacy = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/legacy.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.testElement = testElement2; exports2.getElements = getElements2; exports2.getElementById = getElementById2; exports2.getElementsByTagName = getElementsByTagName2; exports2.getElementsByClassName = getElementsByClassName2; exports2.getElementsByTagType = getElementsByTagType2; var domhandler_1 = require_lib6(); var querying_js_1 = require_querying(); var Checks2 = { tag_name: function(name) { if (typeof name === "function") { return function(elem) { return (0, domhandler_1.isTag)(elem) && name(elem.name); }; } else if (name === "*") { return domhandler_1.isTag; } return function(elem) { return (0, domhandler_1.isTag)(elem) && elem.name === name; }; }, tag_type: function(type) { if (typeof type === "function") { return function(elem) { return type(elem.type); }; } return function(elem) { return elem.type === type; }; }, tag_contains: function(data) { if (typeof data === "function") { return function(elem) { return (0, domhandler_1.isText)(elem) && data(elem.data); }; } return function(elem) { return (0, domhandler_1.isText)(elem) && elem.data === data; }; } }; function getAttribCheck2(attrib, value) { if (typeof value === "function") { return function(elem) { return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); }; } return function(elem) { return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; }; } function combineFuncs2(a, b) { return function(elem) { return a(elem) || b(elem); }; } function compileTest2(options) { var funcs = Object.keys(options).map(function(key) { var value = options[key]; return Object.prototype.hasOwnProperty.call(Checks2, key) ? Checks2[key](value) : getAttribCheck2(key, value); }); return funcs.length === 0 ? null : funcs.reduce(combineFuncs2); } function testElement2(options, node) { var test = compileTest2(options); return test ? test(node) : true; } function getElements2(options, nodes, recurse, limit) { if (limit === void 0) { limit = Infinity; } var test = compileTest2(options); return test ? (0, querying_js_1.filter)(test, nodes, recurse, limit) : []; } function getElementById2(id, nodes, recurse) { if (recurse === void 0) { recurse = true; } if (!Array.isArray(nodes)) nodes = [nodes]; return (0, querying_js_1.findOne)(getAttribCheck2("id", id), nodes, recurse); } function getElementsByTagName2(tagName, nodes, recurse, limit) { if (recurse === void 0) { recurse = true; } if (limit === void 0) { limit = Infinity; } return (0, querying_js_1.filter)(Checks2["tag_name"](tagName), nodes, recurse, limit); } function getElementsByClassName2(className, nodes, recurse, limit) { if (recurse === void 0) { recurse = true; } if (limit === void 0) { limit = Infinity; } return (0, querying_js_1.filter)(getAttribCheck2("class", className), nodes, recurse, limit); } function getElementsByTagType2(type, nodes, recurse, limit) { if (recurse === void 0) { recurse = true; } if (limit === void 0) { limit = Infinity; } return (0, querying_js_1.filter)(Checks2["tag_type"](type), nodes, recurse, limit); } } }); // node_modules/htmlparser2/node_modules/domutils/lib/helpers.js var require_helpers = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/helpers.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.DocumentPosition = void 0; exports2.removeSubsets = removeSubsets2; exports2.compareDocumentPosition = compareDocumentPosition2; exports2.uniqueSort = uniqueSort2; var domhandler_1 = require_lib6(); function removeSubsets2(nodes) { var idx = nodes.length; while (--idx >= 0) { var node = nodes[idx]; if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { nodes.splice(idx, 1); continue; } for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) { if (nodes.includes(ancestor)) { nodes.splice(idx, 1); break; } } } return nodes; } var DocumentPosition2; (function(DocumentPosition3) { DocumentPosition3[DocumentPosition3["DISCONNECTED"] = 1] = "DISCONNECTED"; DocumentPosition3[DocumentPosition3["PRECEDING"] = 2] = "PRECEDING"; DocumentPosition3[DocumentPosition3["FOLLOWING"] = 4] = "FOLLOWING"; DocumentPosition3[DocumentPosition3["CONTAINS"] = 8] = "CONTAINS"; DocumentPosition3[DocumentPosition3["CONTAINED_BY"] = 16] = "CONTAINED_BY"; })(DocumentPosition2 || (exports2.DocumentPosition = DocumentPosition2 = {})); function compareDocumentPosition2(nodeA, nodeB) { var aParents = []; var bParents = []; if (nodeA === nodeB) { return 0; } var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent; while (current) { aParents.unshift(current); current = current.parent; } current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent; while (current) { bParents.unshift(current); current = current.parent; } var maxIdx = Math.min(aParents.length, bParents.length); var idx = 0; while (idx < maxIdx && aParents[idx] === bParents[idx]) { idx++; } if (idx === 0) { return DocumentPosition2.DISCONNECTED; } var sharedParent = aParents[idx - 1]; var siblings = sharedParent.children; var aSibling = aParents[idx]; var bSibling = bParents[idx]; if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { if (sharedParent === nodeB) { return DocumentPosition2.FOLLOWING | DocumentPosition2.CONTAINED_BY; } return DocumentPosition2.FOLLOWING; } if (sharedParent === nodeA) { return DocumentPosition2.PRECEDING | DocumentPosition2.CONTAINS; } return DocumentPosition2.PRECEDING; } function uniqueSort2(nodes) { nodes = nodes.filter(function(node, i, arr) { return !arr.includes(node, i + 1); }); nodes.sort(function(a, b) { var relative = compareDocumentPosition2(a, b); if (relative & DocumentPosition2.PRECEDING) { return -1; } else if (relative & DocumentPosition2.FOLLOWING) { return 1; } return 0; }); return nodes; } } }); // node_modules/htmlparser2/node_modules/domutils/lib/feeds.js var require_feeds = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/feeds.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getFeed = getFeed2; var stringify_js_1 = require_stringify3(); var legacy_js_1 = require_legacy(); function getFeed2(doc) { var feedRoot = getOneElement2(isValidFeed2, doc); return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed2(feedRoot) : getRssFeed2(feedRoot); } function getAtomFeed2(feedRoot) { var _a; var childs = feedRoot.children; var feed = { type: "atom", items: (0, legacy_js_1.getElementsByTagName)("entry", childs).map(function(item) { var _a2; var children = item.children; var entry = { media: getMediaElements2(children) }; addConditionally2(entry, "id", "id", children); addConditionally2(entry, "title", "title", children); var href2 = (_a2 = getOneElement2("link", children)) === null || _a2 === void 0 ? void 0 : _a2.attribs["href"]; if (href2) { entry.link = href2; } var description = fetch3("summary", children) || fetch3("content", children); if (description) { entry.description = description; } var pubDate = fetch3("updated", children); if (pubDate) { entry.pubDate = new Date(pubDate); } return entry; }) }; addConditionally2(feed, "id", "id", childs); addConditionally2(feed, "title", "title", childs); var href = (_a = getOneElement2("link", childs)) === null || _a === void 0 ? void 0 : _a.attribs["href"]; if (href) { feed.link = href; } addConditionally2(feed, "description", "subtitle", childs); var updated = fetch3("updated", childs); if (updated) { feed.updated = new Date(updated); } addConditionally2(feed, "author", "email", childs, true); return feed; } function getRssFeed2(feedRoot) { var _a, _b; var childs = (_b = (_a = getOneElement2("channel", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []; var feed = { type: feedRoot.name.substr(0, 3), id: "", items: (0, legacy_js_1.getElementsByTagName)("item", feedRoot.children).map(function(item) { var children = item.children; var entry = { media: getMediaElements2(children) }; addConditionally2(entry, "id", "guid", children); addConditionally2(entry, "title", "title", children); addConditionally2(entry, "link", "link", children); addConditionally2(entry, "description", "description", children); var pubDate = fetch3("pubDate", children) || fetch3("dc:date", children); if (pubDate) entry.pubDate = new Date(pubDate); return entry; }) }; addConditionally2(feed, "title", "title", childs); addConditionally2(feed, "link", "link", childs); addConditionally2(feed, "description", "description", childs); var updated = fetch3("lastBuildDate", childs); if (updated) { feed.updated = new Date(updated); } addConditionally2(feed, "author", "managingEditor", childs, true); return feed; } var MEDIA_KEYS_STRING2 = ["url", "type", "lang"]; var MEDIA_KEYS_INT2 = [ "fileSize", "bitrate", "framerate", "samplingrate", "channels", "duration", "height", "width" ]; function getMediaElements2(where) { return (0, legacy_js_1.getElementsByTagName)("media:content", where).map(function(elem) { var attribs = elem.attribs; var media = { medium: attribs["medium"], isDefault: !!attribs["isDefault"] }; for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING2; _i < MEDIA_KEYS_STRING_1.length; _i++) { var attrib = MEDIA_KEYS_STRING_1[_i]; if (attribs[attrib]) { media[attrib] = attribs[attrib]; } } for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT2; _a < MEDIA_KEYS_INT_1.length; _a++) { var attrib = MEDIA_KEYS_INT_1[_a]; if (attribs[attrib]) { media[attrib] = parseInt(attribs[attrib], 10); } } if (attribs["expression"]) { media.expression = attribs["expression"]; } return media; }); } function getOneElement2(tagName, node) { return (0, legacy_js_1.getElementsByTagName)(tagName, node, true, 1)[0]; } function fetch3(tagName, where, recurse) { if (recurse === void 0) { recurse = false; } return (0, stringify_js_1.textContent)((0, legacy_js_1.getElementsByTagName)(tagName, where, recurse, 1)).trim(); } function addConditionally2(obj, prop, tagName, where, recurse) { if (recurse === void 0) { recurse = false; } var val = fetch3(tagName, where, recurse); if (val) obj[prop] = val; } function isValidFeed2(value) { return value === "rss" || value === "feed" || value === "rdf:RDF"; } } }); // node_modules/htmlparser2/node_modules/domutils/lib/index.js var require_lib9 = __commonJS({ "node_modules/htmlparser2/node_modules/domutils/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.hasChildren = exports2.isDocument = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = void 0; __exportStar2(require_stringify3(), exports2); __exportStar2(require_traversal(), exports2); __exportStar2(require_manipulation(), exports2); __exportStar2(require_querying(), exports2); __exportStar2(require_legacy(), exports2); __exportStar2(require_helpers(), exports2); __exportStar2(require_feeds(), exports2); var domhandler_1 = require_lib6(); Object.defineProperty(exports2, "isTag", { enumerable: true, get: function() { return domhandler_1.isTag; } }); Object.defineProperty(exports2, "isCDATA", { enumerable: true, get: function() { return domhandler_1.isCDATA; } }); Object.defineProperty(exports2, "isText", { enumerable: true, get: function() { return domhandler_1.isText; } }); Object.defineProperty(exports2, "isComment", { enumerable: true, get: function() { return domhandler_1.isComment; } }); Object.defineProperty(exports2, "isDocument", { enumerable: true, get: function() { return domhandler_1.isDocument; } }); Object.defineProperty(exports2, "hasChildren", { enumerable: true, get: function() { return domhandler_1.hasChildren; } }); } }); // node_modules/htmlparser2/dist/commonjs/index.js var require_commonjs = __commonJS({ "node_modules/htmlparser2/dist/commonjs/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || /* @__PURE__ */ (function() { var ownKeys2 = function(o) { ownKeys2 = Object.getOwnPropertyNames || function(o2) { var ar = []; for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; return ar; }; return ownKeys2(o); }; return function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k = ownKeys2(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding2(result, mod, k[i]); } __setModuleDefault2(result, mod); return result; }; })(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.DomUtils = exports2.getFeed = exports2.ElementType = exports2.QuoteType = exports2.Tokenizer = exports2.DefaultHandler = exports2.DomHandler = exports2.Parser = void 0; exports2.parseDocument = parseDocument; exports2.parseDOM = parseDOM; exports2.createDocumentStream = createDocumentStream; exports2.createDomStream = createDomStream; exports2.parseFeed = parseFeed; var Parser_js_1 = require_Parser(); var Parser_js_2 = require_Parser(); Object.defineProperty(exports2, "Parser", { enumerable: true, get: function() { return Parser_js_2.Parser; } }); var domhandler_1 = require_lib6(); var domhandler_2 = require_lib6(); Object.defineProperty(exports2, "DomHandler", { enumerable: true, get: function() { return domhandler_2.DomHandler; } }); Object.defineProperty(exports2, "DefaultHandler", { enumerable: true, get: function() { return domhandler_2.DomHandler; } }); function parseDocument(data, options) { const handler = new domhandler_1.DomHandler(void 0, options); new Parser_js_1.Parser(handler, options).end(data); return handler.root; } function parseDOM(data, options) { return parseDocument(data, options).children; } function createDocumentStream(callback, options, elementCallback) { const handler = new domhandler_1.DomHandler((error) => callback(error, handler.root), options, elementCallback); return new Parser_js_1.Parser(handler, options); } function createDomStream(callback, options, elementCallback) { const handler = new domhandler_1.DomHandler(callback, options, elementCallback); return new Parser_js_1.Parser(handler, options); } var Tokenizer_js_1 = require_Tokenizer(); Object.defineProperty(exports2, "Tokenizer", { enumerable: true, get: function() { return __importDefault2(Tokenizer_js_1).default; } }); Object.defineProperty(exports2, "QuoteType", { enumerable: true, get: function() { return Tokenizer_js_1.QuoteType; } }); exports2.ElementType = __importStar2(require_lib5()); var domutils_1 = require_lib9(); var domutils_2 = require_lib9(); Object.defineProperty(exports2, "getFeed", { enumerable: true, get: function() { return domutils_2.getFeed; } }); var parseFeedDefaultOptions = { xmlMode: true }; function parseFeed(feed, options = parseFeedDefaultOptions) { return (0, domutils_1.getFeed)(parseDOM(feed, options)); } exports2.DomUtils = __importStar2(require_lib9()); } }); // node_modules/linkedom/cjs/shared/constants.js var require_constants = __commonJS({ "node_modules/linkedom/cjs/shared/constants.js"(exports2) { "use strict"; init_define_import_meta_env(); var NODE_END = -1; exports2.NODE_END = NODE_END; var ELEMENT_NODE = 1; exports2.ELEMENT_NODE = ELEMENT_NODE; var ATTRIBUTE_NODE = 2; exports2.ATTRIBUTE_NODE = ATTRIBUTE_NODE; var TEXT_NODE = 3; exports2.TEXT_NODE = TEXT_NODE; var CDATA_SECTION_NODE = 4; exports2.CDATA_SECTION_NODE = CDATA_SECTION_NODE; var COMMENT_NODE = 8; exports2.COMMENT_NODE = COMMENT_NODE; var DOCUMENT_NODE = 9; exports2.DOCUMENT_NODE = DOCUMENT_NODE; var DOCUMENT_TYPE_NODE = 10; exports2.DOCUMENT_TYPE_NODE = DOCUMENT_TYPE_NODE; var DOCUMENT_FRAGMENT_NODE = 11; exports2.DOCUMENT_FRAGMENT_NODE = DOCUMENT_FRAGMENT_NODE; var BLOCK_ELEMENTS = /* @__PURE__ */ new Set(["ARTICLE", "ASIDE", "BLOCKQUOTE", "BODY", "BR", "BUTTON", "CANVAS", "CAPTION", "COL", "COLGROUP", "DD", "DIV", "DL", "DT", "EMBED", "FIELDSET", "FIGCAPTION", "FIGURE", "FOOTER", "FORM", "H1", "H2", "H3", "H4", "H5", "H6", "LI", "UL", "OL", "P"]); exports2.BLOCK_ELEMENTS = BLOCK_ELEMENTS; var SHOW_ALL = -1; exports2.SHOW_ALL = SHOW_ALL; var SHOW_ELEMENT = 1; exports2.SHOW_ELEMENT = SHOW_ELEMENT; var SHOW_TEXT = 4; exports2.SHOW_TEXT = SHOW_TEXT; var SHOW_CDATA_SECTION = 8; exports2.SHOW_CDATA_SECTION = SHOW_CDATA_SECTION; var SHOW_COMMENT = 128; exports2.SHOW_COMMENT = SHOW_COMMENT; var DOCUMENT_POSITION_DISCONNECTED = 1; exports2.DOCUMENT_POSITION_DISCONNECTED = DOCUMENT_POSITION_DISCONNECTED; var DOCUMENT_POSITION_PRECEDING = 2; exports2.DOCUMENT_POSITION_PRECEDING = DOCUMENT_POSITION_PRECEDING; var DOCUMENT_POSITION_FOLLOWING = 4; exports2.DOCUMENT_POSITION_FOLLOWING = DOCUMENT_POSITION_FOLLOWING; var DOCUMENT_POSITION_CONTAINS = 8; exports2.DOCUMENT_POSITION_CONTAINS = DOCUMENT_POSITION_CONTAINS; var DOCUMENT_POSITION_CONTAINED_BY = 16; exports2.DOCUMENT_POSITION_CONTAINED_BY = DOCUMENT_POSITION_CONTAINED_BY; var DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32; exports2.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC; var SVG_NAMESPACE = "http://www.w3.org/2000/svg"; exports2.SVG_NAMESPACE = SVG_NAMESPACE; } }); // node_modules/linkedom/cjs/shared/object.js var require_object = __commonJS({ "node_modules/linkedom/cjs/shared/object.js"(exports2) { "use strict"; init_define_import_meta_env(); var { assign, create, defineProperties, entries, getOwnPropertyDescriptors, keys, setPrototypeOf } = Object; exports2.assign = assign; exports2.create = create; exports2.defineProperties = defineProperties; exports2.entries = entries; exports2.getOwnPropertyDescriptors = getOwnPropertyDescriptors; exports2.keys = keys; exports2.setPrototypeOf = setPrototypeOf; } }); // node_modules/linkedom/cjs/shared/utils.js var require_utils4 = __commonJS({ "node_modules/linkedom/cjs/shared/utils.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE } = require_constants(); var { END, MIME, NEXT, PREV } = require_symbols(); var $String = String; exports2.String = $String; var getEnd = (node) => node.nodeType === ELEMENT_NODE ? node[END] : node; exports2.getEnd = getEnd; var ignoreCase = ({ ownerDocument }) => ownerDocument[MIME].ignoreCase; exports2.ignoreCase = ignoreCase; var knownAdjacent = (prev, next) => { prev[NEXT] = next; next[PREV] = prev; }; exports2.knownAdjacent = knownAdjacent; var knownBoundaries = (prev, current, next) => { knownAdjacent(prev, current); knownAdjacent(getEnd(current), next); }; exports2.knownBoundaries = knownBoundaries; var knownSegment = (prev, start, end, next) => { knownAdjacent(prev, start); knownAdjacent(getEnd(end), next); }; exports2.knownSegment = knownSegment; var knownSiblings = (prev, current, next) => { knownAdjacent(prev, current); knownAdjacent(current, next); }; exports2.knownSiblings = knownSiblings; var localCase = ({ localName, ownerDocument }) => { return ownerDocument[MIME].ignoreCase ? localName.toUpperCase() : localName; }; exports2.localCase = localCase; var setAdjacent = (prev, next) => { if (prev) prev[NEXT] = next; if (next) next[PREV] = prev; }; exports2.setAdjacent = setAdjacent; var htmlToFragment = (ownerDocument, html) => { const fragment = ownerDocument.createDocumentFragment(); const elem = ownerDocument.createElement(""); elem.innerHTML = html; const { firstChild, lastChild } = elem; if (firstChild) { knownSegment(fragment, firstChild, lastChild, fragment[END]); let child = firstChild; do { child.parentNode = fragment; } while (child !== lastChild && (child = getEnd(child)[NEXT])); } return fragment; }; exports2.htmlToFragment = htmlToFragment; } }); // node_modules/linkedom/cjs/shared/shadow-roots.js var require_shadow_roots = __commonJS({ "node_modules/linkedom/cjs/shared/shadow-roots.js"(exports2) { "use strict"; init_define_import_meta_env(); var shadowRoots = /* @__PURE__ */ new WeakMap(); exports2.shadowRoots = shadowRoots; } }); // node_modules/linkedom/cjs/interface/custom-element-registry.js var require_custom_element_registry = __commonJS({ "node_modules/linkedom/cjs/interface/custom-element-registry.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE } = require_constants(); var { END, NEXT, UPGRADE } = require_symbols(); var { entries, setPrototypeOf } = require_object(); var { shadowRoots } = require_shadow_roots(); var reactive = false; var Classes = /* @__PURE__ */ new WeakMap(); exports2.Classes = Classes; var customElements = /* @__PURE__ */ new WeakMap(); exports2.customElements = customElements; var attributeChangedCallback = (element, attributeName, oldValue, newValue) => { if (reactive && customElements.has(element) && element.attributeChangedCallback && element.constructor.observedAttributes.includes(attributeName)) { element.attributeChangedCallback(attributeName, oldValue, newValue); } }; exports2.attributeChangedCallback = attributeChangedCallback; var createTrigger = (method, isConnected) => (element) => { if (customElements.has(element)) { const info = customElements.get(element); if (info.connected !== isConnected && element.isConnected === isConnected) { info.connected = isConnected; if (method in element) element[method](); } } }; var triggerConnected = createTrigger("connectedCallback", true); var connectedCallback = (element) => { if (reactive) { triggerConnected(element); if (shadowRoots.has(element)) element = shadowRoots.get(element).shadowRoot; let { [NEXT]: next, [END]: end } = element; while (next !== end) { if (next.nodeType === ELEMENT_NODE) triggerConnected(next); next = next[NEXT]; } } }; exports2.connectedCallback = connectedCallback; var triggerDisconnected = createTrigger("disconnectedCallback", false); var disconnectedCallback = (element) => { if (reactive) { triggerDisconnected(element); if (shadowRoots.has(element)) element = shadowRoots.get(element).shadowRoot; let { [NEXT]: next, [END]: end } = element; while (next !== end) { if (next.nodeType === ELEMENT_NODE) triggerDisconnected(next); next = next[NEXT]; } } }; exports2.disconnectedCallback = disconnectedCallback; var CustomElementRegistry = class { /** * @param {Document} ownerDocument */ constructor(ownerDocument) { this.ownerDocument = ownerDocument; this.registry = /* @__PURE__ */ new Map(); this.waiting = /* @__PURE__ */ new Map(); this.active = false; } /** * @param {string} localName the custom element definition name * @param {Function} Class the custom element **Class** definition * @param {object?} options the optional object with an `extends` property */ define(localName, Class, options = {}) { const { ownerDocument, registry, waiting } = this; if (registry.has(localName)) throw new Error("unable to redefine " + localName); if (Classes.has(Class)) throw new Error("unable to redefine the same class: " + Class); this.active = reactive = true; const { extends: extend } = options; Classes.set(Class, { ownerDocument, options: { is: extend ? localName : "" }, localName: extend || localName }); const check2 = extend ? (element) => { return element.localName === extend && element.getAttribute("is") === localName; } : (element) => element.localName === localName; registry.set(localName, { Class, check: check2 }); if (waiting.has(localName)) { for (const resolve of waiting.get(localName)) resolve(Class); waiting.delete(localName); } ownerDocument.querySelectorAll( extend ? `${extend}[is="${localName}"]` : localName ).forEach(this.upgrade, this); } /** * @param {Element} element */ upgrade(element) { if (customElements.has(element)) return; const { ownerDocument, registry } = this; const ce = element.getAttribute("is") || element.localName; if (registry.has(ce)) { const { Class, check: check2 } = registry.get(ce); if (check2(element)) { const { attributes, isConnected } = element; for (const attr of attributes) element.removeAttributeNode(attr); const values = entries(element); for (const [key] of values) delete element[key]; setPrototypeOf(element, Class.prototype); ownerDocument[UPGRADE] = { element, values }; new Class(ownerDocument, ce); customElements.set(element, { connected: isConnected }); for (const attr of attributes) element.setAttributeNode(attr); if (isConnected && element.connectedCallback) element.connectedCallback(); } } } /** * @param {string} localName the custom element definition name */ whenDefined(localName) { const { registry, waiting } = this; return new Promise((resolve) => { if (registry.has(localName)) resolve(registry.get(localName).Class); else { if (!waiting.has(localName)) waiting.set(localName, []); waiting.get(localName).push(resolve); } }); } /** * @param {string} localName the custom element definition name * @returns {Function?} the custom element **Class**, if any */ get(localName) { const info = this.registry.get(localName); return info && info.Class; } /** * @param {Function} Class **Class** of custom element * @returns {string?} found tag name or null */ getName(Class) { if (Classes.has(Class)) { const { localName } = Classes.get(Class); return localName; } return null; } }; exports2.CustomElementRegistry = CustomElementRegistry; } }); // node_modules/linkedom/cjs/shared/parse-from-string.js var require_parse_from_string = __commonJS({ "node_modules/linkedom/cjs/shared/parse-from-string.js"(exports2) { "use strict"; init_define_import_meta_env(); var HTMLParser2 = require_commonjs(); var { ELEMENT_NODE, SVG_NAMESPACE } = require_constants(); var { CUSTOM_ELEMENTS, PREV, END, VALUE } = require_symbols(); var { keys } = require_object(); var { knownBoundaries, knownSiblings } = require_utils4(); var { attributeChangedCallback, connectedCallback } = require_custom_element_registry(); var { Parser } = HTMLParser2; var notParsing = true; var append2 = (self2, node, active) => { const end = self2[END]; node.parentNode = self2; knownBoundaries(end[PREV], node, end); if (active && node.nodeType === ELEMENT_NODE) connectedCallback(node); return node; }; var attribute = (element, end, attribute2, value, active) => { attribute2[VALUE] = value; attribute2.ownerElement = element; knownSiblings(end[PREV], attribute2, end); if (attribute2.name === "class") element.className = value; if (active) attributeChangedCallback(element, attribute2.name, null, value); }; var isNotParsing = () => notParsing; exports2.isNotParsing = isNotParsing; var parseFromString = (document2, isHTML, markupLanguage) => { const { active, registry } = document2[CUSTOM_ELEMENTS]; let node = document2; let ownerSVGElement = null; let parsingCData = false; notParsing = false; const content = new Parser({ // <!DOCTYPE ...> onprocessinginstruction(name, data) { if (name.toLowerCase() === "!doctype") document2.doctype = data.slice(name.length).trim(); }, // <tagName> onopentag(name, attributes) { let create = true; if (isHTML) { if (ownerSVGElement) { node = append2(node, document2.createElementNS(SVG_NAMESPACE, name), active); node.ownerSVGElement = ownerSVGElement; create = false; } else if (name === "svg" || name === "SVG") { ownerSVGElement = document2.createElementNS(SVG_NAMESPACE, name); node = append2(node, ownerSVGElement, active); create = false; } else if (active) { const ce = name.includes("-") ? name : attributes.is || ""; if (ce && registry.has(ce)) { const { Class } = registry.get(ce); node = append2(node, new Class(), active); delete attributes.is; create = false; } } } if (create) node = append2(node, document2.createElement(name), false); let end = node[END]; for (const name2 of keys(attributes)) attribute(node, end, document2.createAttribute(name2), attributes[name2], active); }, // #text, #comment oncomment(data) { append2(node, document2.createComment(data), active); }, ontext(text) { if (parsingCData) { append2(node, document2.createCDATASection(text), active); } else { append2(node, document2.createTextNode(text), active); } }, // #cdata oncdatastart() { parsingCData = true; }, oncdataend() { parsingCData = false; }, // </tagName> onclosetag() { if (isHTML && node === ownerSVGElement) ownerSVGElement = null; node = node.parentNode; } }, { lowerCaseAttributeNames: false, decodeEntities: true, xmlMode: !isHTML }); content.write(markupLanguage); content.end(); notParsing = true; return document2; }; exports2.parseFromString = parseFromString; } }); // node_modules/linkedom/cjs/shared/register-html-class.js var require_register_html_class = __commonJS({ "node_modules/linkedom/cjs/shared/register-html-class.js"(exports2) { "use strict"; init_define_import_meta_env(); var htmlClasses = /* @__PURE__ */ new Map(); exports2.htmlClasses = htmlClasses; var registerHTMLClass = (names, Class) => { for (const name of [].concat(names)) { htmlClasses.set(name, Class); htmlClasses.set(name.toUpperCase(), Class); } }; exports2.registerHTMLClass = registerHTMLClass; } }); // node_modules/linkedom/cjs/shared/jsdon.js var require_jsdon = __commonJS({ "node_modules/linkedom/cjs/shared/jsdon.js"(exports2) { "use strict"; init_define_import_meta_env(); var { NODE_END, ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, TEXT_NODE } = require_constants(); var { END, NEXT, VALUE } = require_symbols(); var { getEnd } = require_utils4(); var loopSegment = ({ [NEXT]: next, [END]: end }, json2) => { while (next !== end) { switch (next.nodeType) { case ATTRIBUTE_NODE: attrAsJSON(next, json2); break; case TEXT_NODE: case COMMENT_NODE: case CDATA_SECTION_NODE: characterDataAsJSON(next, json2); break; case ELEMENT_NODE: elementAsJSON(next, json2); next = getEnd(next); break; case DOCUMENT_TYPE_NODE: documentTypeAsJSON(next, json2); break; } next = next[NEXT]; } const last = json2.length - 1; const value = json2[last]; if (typeof value === "number" && value < 0) json2[last] += NODE_END; else json2.push(NODE_END); }; var attrAsJSON = (attr, json2) => { json2.push(ATTRIBUTE_NODE, attr.name); const value = attr[VALUE].trim(); if (value) json2.push(value); }; exports2.attrAsJSON = attrAsJSON; var characterDataAsJSON = (node, json2) => { const value = node[VALUE]; if (value.trim()) json2.push(node.nodeType, value); }; exports2.characterDataAsJSON = characterDataAsJSON; var nonElementAsJSON = (node, json2) => { json2.push(node.nodeType); loopSegment(node, json2); }; exports2.nonElementAsJSON = nonElementAsJSON; var documentTypeAsJSON = ({ name, publicId, systemId }, json2) => { json2.push(DOCUMENT_TYPE_NODE, name); if (publicId) json2.push(publicId); if (systemId) json2.push(systemId); }; exports2.documentTypeAsJSON = documentTypeAsJSON; var elementAsJSON = (element, json2) => { json2.push(ELEMENT_NODE, element.localName); loopSegment(element, json2); }; exports2.elementAsJSON = elementAsJSON; } }); // node_modules/linkedom/cjs/interface/mutation-observer.js var require_mutation_observer = __commonJS({ "node_modules/linkedom/cjs/interface/mutation-observer.js"(exports2) { "use strict"; init_define_import_meta_env(); var { MUTATION_OBSERVER } = require_symbols(); var createRecord = (type, target, element, addedNodes, removedNodes, attributeName, oldValue) => ({ type, target, addedNodes, removedNodes, attributeName, oldValue, previousSibling: element?.previousSibling || null, nextSibling: element?.nextSibling || null }); var queueAttribute = (observer, target, attributeName, attributeFilter, attributeOldValue, oldValue) => { if (!attributeFilter || attributeFilter.includes(attributeName)) { const { callback, records, scheduled } = observer; records.push(createRecord( "attributes", target, null, [], [], attributeName, attributeOldValue ? oldValue : void 0 )); if (!scheduled) { observer.scheduled = true; Promise.resolve().then(() => { observer.scheduled = false; callback(records.splice(0), observer); }); } } }; var attributeChangedCallback = (element, attributeName, oldValue) => { const { ownerDocument } = element; const { active, observers } = ownerDocument[MUTATION_OBSERVER]; if (active) { for (const observer of observers) { for (const [ target, { childList, subtree, attributes, attributeFilter, attributeOldValue } ] of observer.nodes) { if (childList) { if (subtree && (target === ownerDocument || target.contains(element)) || !subtree && target.children.includes(element)) { queueAttribute( observer, element, attributeName, attributeFilter, attributeOldValue, oldValue ); break; } } else if (attributes && target === element) { queueAttribute( observer, element, attributeName, attributeFilter, attributeOldValue, oldValue ); break; } } } } }; exports2.attributeChangedCallback = attributeChangedCallback; var moCallback = (element, parentNode) => { const { ownerDocument } = element; const { active, observers } = ownerDocument[MUTATION_OBSERVER]; if (active) { for (const observer of observers) { for (const [target, { subtree, childList, characterData }] of observer.nodes) { if (childList) { if (parentNode && (target === parentNode || /* c8 ignore next */ subtree && target.contains(parentNode)) || !parentNode && (subtree && (target === ownerDocument || /* c8 ignore next */ target.contains(element)) || !subtree && target[characterData ? "childNodes" : "children"].includes(element))) { const { callback, records, scheduled } = observer; records.push(createRecord( "childList", target, element, parentNode ? [] : [element], parentNode ? [element] : [] )); if (!scheduled) { observer.scheduled = true; Promise.resolve().then(() => { observer.scheduled = false; callback(records.splice(0), observer); }); } break; } } } } } }; exports2.moCallback = moCallback; var MutationObserverClass = class { constructor(ownerDocument) { const observers = /* @__PURE__ */ new Set(); this.observers = observers; this.active = false; this.class = class MutationObserver { constructor(callback) { this.callback = callback; this.nodes = /* @__PURE__ */ new Map(); this.records = []; this.scheduled = false; } disconnect() { this.records.splice(0); this.nodes.clear(); observers.delete(this); ownerDocument[MUTATION_OBSERVER].active = !!observers.size; } /** * @param {Element} target * @param {MutationObserverInit} options */ observe(target, options = { subtree: false, childList: false, attributes: false, attributeFilter: null, attributeOldValue: false, characterData: false // TODO: not implemented yet // characterDataOldValue: false }) { if ("attributeOldValue" in options || "attributeFilter" in options) options.attributes = true; options.childList = !!options.childList; options.subtree = !!options.subtree; this.nodes.set(target, options); observers.add(this); ownerDocument[MUTATION_OBSERVER].active = true; } /** * @returns {MutationRecord[]} */ takeRecords() { return this.records.splice(0); } }; } }; exports2.MutationObserverClass = MutationObserverClass; } }); // node_modules/linkedom/cjs/shared/attributes.js var require_attributes = __commonJS({ "node_modules/linkedom/cjs/shared/attributes.js"(exports2) { "use strict"; init_define_import_meta_env(); var { CLASS_LIST, NEXT, PREV, VALUE } = require_symbols(); var { knownAdjacent, knownSiblings } = require_utils4(); var { attributeChangedCallback: ceAttributes } = require_custom_element_registry(); var { attributeChangedCallback: moAttributes } = require_mutation_observer(); var emptyAttributes = /* @__PURE__ */ new Set([ "allowfullscreen", "allowpaymentrequest", "async", "autofocus", "autoplay", "checked", "class", "contenteditable", "controls", "default", "defer", "disabled", "draggable", "formnovalidate", "hidden", "id", "ismap", "itemscope", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "selected", "style", "truespeed" ]); exports2.emptyAttributes = emptyAttributes; var setAttribute = (element, attribute) => { const { [VALUE]: value, name } = attribute; attribute.ownerElement = element; knownSiblings(element, attribute, element[NEXT]); if (name === "class") element.className = value; moAttributes(element, name, null); ceAttributes(element, name, null, value); }; exports2.setAttribute = setAttribute; var removeAttribute = (element, attribute) => { const { [VALUE]: value, name } = attribute; knownAdjacent(attribute[PREV], attribute[NEXT]); attribute.ownerElement = attribute[PREV] = attribute[NEXT] = null; if (name === "class") element[CLASS_LIST] = null; moAttributes(element, name, value); ceAttributes(element, name, value, null); }; exports2.removeAttribute = removeAttribute; var booleanAttribute = { get(element, name) { return element.hasAttribute(name); }, set(element, name, value) { if (value) element.setAttribute(name, ""); else element.removeAttribute(name); } }; exports2.booleanAttribute = booleanAttribute; var numericAttribute = { get(element, name) { return parseFloat(element.getAttribute(name) || 0); }, set(element, name, value) { element.setAttribute(name, value); } }; exports2.numericAttribute = numericAttribute; var stringAttribute = { get(element, name) { return element.getAttribute(name) || ""; }, set(element, name, value) { element.setAttribute(name, value); } }; exports2.stringAttribute = stringAttribute; } }); // node_modules/linkedom/cjs/interface/event-target.js var require_event_target = __commonJS({ "node_modules/linkedom/cjs/interface/event-target.js"(exports2) { "use strict"; init_define_import_meta_env(); var wm = /* @__PURE__ */ new WeakMap(); function dispatch(event, listener) { if (typeof listener === "function") listener.call(event.target, event); else listener.handleEvent(event); return event._stopImmediatePropagationFlag; } function invokeListeners({ currentTarget, target }) { const map = wm.get(currentTarget); if (map && map.has(this.type)) { const listeners = map.get(this.type); if (currentTarget === target) { this.eventPhase = this.AT_TARGET; } else { this.eventPhase = this.BUBBLING_PHASE; } this.currentTarget = currentTarget; this.target = target; for (const [listener, options] of listeners) { if (options && options.once) listeners.delete(listener); if (dispatch(this, listener)) break; } delete this.currentTarget; delete this.target; return this.cancelBubble; } } var DOMEventTarget = class { constructor() { wm.set(this, /* @__PURE__ */ new Map()); } /** * @protected */ _getParent() { return null; } addEventListener(type, listener, options) { const map = wm.get(this); if (!map.has(type)) map.set(type, /* @__PURE__ */ new Map()); map.get(type).set(listener, options); } removeEventListener(type, listener) { const map = wm.get(this); if (map.has(type)) { const listeners = map.get(type); if (listeners.delete(listener) && !listeners.size) map.delete(type); } } dispatchEvent(event) { let node = this; event.eventPhase = event.CAPTURING_PHASE; while (node) { if (node.dispatchEvent) event._path.push({ currentTarget: node, target: this }); node = event.bubbles && node._getParent && node._getParent(); } event._path.some(invokeListeners, event); event._path = []; event.eventPhase = event.NONE; return !event.defaultPrevented; } }; exports2.EventTarget = DOMEventTarget; } }); // node_modules/linkedom/cjs/interface/node-list.js var require_node_list = __commonJS({ "node_modules/linkedom/cjs/interface/node-list.js"(exports2) { "use strict"; init_define_import_meta_env(); var NodeList = class extends Array { item(i) { return i < this.length ? this[i] : null; } }; exports2.NodeList = NodeList; } }); // node_modules/linkedom/cjs/interface/node.js var require_node3 = __commonJS({ "node_modules/linkedom/cjs/interface/node.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE, ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_PRECEDING, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC } = require_constants(); var { NEXT, PREV } = require_symbols(); var { EventTarget } = require_event_target(); var { NodeList } = require_node_list(); var getParentNodeCount = ({ parentNode }) => { let count = 0; while (parentNode) { count++; parentNode = parentNode.parentNode; } return count; }; var Node = class extends EventTarget { static get ELEMENT_NODE() { return ELEMENT_NODE; } static get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; } static get TEXT_NODE() { return TEXT_NODE; } static get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; } static get COMMENT_NODE() { return COMMENT_NODE; } static get DOCUMENT_NODE() { return DOCUMENT_NODE; } static get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; } static get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; } constructor(ownerDocument, localName, nodeType) { super(); this.ownerDocument = ownerDocument; this.localName = localName; this.nodeType = nodeType; this.parentNode = null; this[NEXT] = null; this[PREV] = null; } get ELEMENT_NODE() { return ELEMENT_NODE; } get ATTRIBUTE_NODE() { return ATTRIBUTE_NODE; } get TEXT_NODE() { return TEXT_NODE; } get CDATA_SECTION_NODE() { return CDATA_SECTION_NODE; } get COMMENT_NODE() { return COMMENT_NODE; } get DOCUMENT_NODE() { return DOCUMENT_NODE; } get DOCUMENT_FRAGMENT_NODE() { return DOCUMENT_FRAGMENT_NODE; } get DOCUMENT_TYPE_NODE() { return DOCUMENT_TYPE_NODE; } get baseURI() { const ownerDocument = this.nodeType === DOCUMENT_NODE ? this : this.ownerDocument; if (ownerDocument) { const base = ownerDocument.querySelector("base"); if (base) return base.getAttribute("href"); const { location } = ownerDocument.defaultView; if (location) return location.href; } return null; } /* c8 ignore start */ // mixin: node get isConnected() { return false; } get nodeName() { return this.localName; } get parentElement() { return null; } get previousSibling() { return null; } get previousElementSibling() { return null; } get nextSibling() { return null; } get nextElementSibling() { return null; } get childNodes() { return new NodeList(); } get firstChild() { return null; } get lastChild() { return null; } // default values get nodeValue() { return null; } set nodeValue(value) { } get textContent() { return null; } set textContent(value) { } normalize() { } cloneNode() { return null; } contains() { return false; } /** * Inserts a node before a reference node as a child of this parent node. * @param {Node} newNode The node to be inserted. * @param {Node} referenceNode The node before which newNode is inserted. If this is null, then newNode is inserted at the end of node's child nodes. * @returns The added child */ // eslint-disable-next-line no-unused-vars insertBefore(newNode, referenceNode) { return newNode; } /** * Adds a node to the end of the list of children of this node. * @param {Node} child The node to append to the given parent node. * @returns The appended child. */ appendChild(child) { return child; } /** * Replaces a child node within this node * @param {Node} newChild The new node to replace oldChild. * @param {Node} oldChild The child to be replaced. * @returns The replaced Node. This is the same node as oldChild. */ replaceChild(newChild, oldChild) { return oldChild; } /** * Removes a child node from the DOM. * @param {Node} child A Node that is the child node to be removed from the DOM. * @returns The removed node. */ removeChild(child) { return child; } toString() { return ""; } /* c8 ignore stop */ hasChildNodes() { return !!this.lastChild; } isSameNode(node) { return this === node; } // TODO: attributes? compareDocumentPosition(target) { let result = 0; if (this !== target) { let self2 = getParentNodeCount(this); let other = getParentNodeCount(target); if (self2 < other) { result += DOCUMENT_POSITION_FOLLOWING; if (this.contains(target)) result += DOCUMENT_POSITION_CONTAINED_BY; } else if (other < self2) { result += DOCUMENT_POSITION_PRECEDING; if (target.contains(this)) result += DOCUMENT_POSITION_CONTAINS; } else if (self2 && other) { const { childNodes } = this.parentNode; if (childNodes.indexOf(this) < childNodes.indexOf(target)) result += DOCUMENT_POSITION_FOLLOWING; else result += DOCUMENT_POSITION_PRECEDING; } if (!self2 || !other) { result += DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC; result += DOCUMENT_POSITION_DISCONNECTED; } } return result; } isEqualNode(node) { if (this === node) return true; if (this.nodeType === node.nodeType) { switch (this.nodeType) { case DOCUMENT_NODE: case DOCUMENT_FRAGMENT_NODE: { const aNodes = this.childNodes; const bNodes = node.childNodes; return aNodes.length === bNodes.length && aNodes.every((node2, i) => node2.isEqualNode(bNodes[i])); } } return this.toString() === node.toString(); } return false; } /** * @protected */ _getParent() { return this.parentNode; } /** * Calling it on an element inside a standard web page will return an HTMLDocument object representing the entire page (or <iframe>). * Calling it on an element inside a shadow DOM will return the associated ShadowRoot. * @return {ShadowRoot | HTMLDocument} */ getRootNode() { let root = this; while (root.parentNode) root = root.parentNode; return root; } }; exports2.Node = Node; } }); // node_modules/linkedom/cjs/shared/text-escaper.js var require_text_escaper = __commonJS({ "node_modules/linkedom/cjs/shared/text-escaper.js"(exports2) { "use strict"; init_define_import_meta_env(); var { replace } = ""; var ca = /[<>&\xA0]/g; var esca = { "\xA0": " ", "&": "&", "<": "<", ">": ">" }; var pe = (m) => esca[m]; var escape3 = (es) => replace.call(es, ca, pe); exports2.escape = escape3; } }); // node_modules/linkedom/cjs/interface/attr.js var require_attr = __commonJS({ "node_modules/linkedom/cjs/interface/attr.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ATTRIBUTE_NODE } = require_constants(); var { CHANGED, VALUE } = require_symbols(); var { String: String2, ignoreCase } = require_utils4(); var { attrAsJSON } = require_jsdon(); var { emptyAttributes } = require_attributes(); var { attributeChangedCallback: moAttributes } = require_mutation_observer(); var { attributeChangedCallback: ceAttributes } = require_custom_element_registry(); var { Node } = require_node3(); var { escape: escape3 } = require_text_escaper(); var QUOTE = /"/g; var Attr = class _Attr extends Node { constructor(ownerDocument, name, value = "") { super(ownerDocument, name, ATTRIBUTE_NODE); this.ownerElement = null; this.name = String2(name); this[VALUE] = String2(value); this[CHANGED] = false; } get value() { return this[VALUE]; } set value(newValue) { const { [VALUE]: oldValue, name, ownerElement } = this; this[VALUE] = String2(newValue); this[CHANGED] = true; if (ownerElement) { moAttributes(ownerElement, name, oldValue); ceAttributes(ownerElement, name, oldValue, this[VALUE]); } } cloneNode() { const { ownerDocument, name, [VALUE]: value } = this; return new _Attr(ownerDocument, name, value); } toString() { const { name, [VALUE]: value } = this; if (emptyAttributes.has(name) && !value) { return ignoreCase(this) ? name : `${name}=""`; } const escapedValue = (ignoreCase(this) ? value : escape3(value)).replace(QUOTE, """); return `${name}="${escapedValue}"`; } toJSON() { const json2 = []; attrAsJSON(this, json2); return json2; } }; exports2.Attr = Attr; } }); // node_modules/linkedom/cjs/shared/node.js var require_node4 = __commonJS({ "node_modules/linkedom/cjs/shared/node.js"(exports2) { "use strict"; init_define_import_meta_env(); var { CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, TEXT_NODE, NODE_END } = require_constants(); var { START, NEXT, PREV } = require_symbols(); var { getEnd } = require_utils4(); var isConnected = ({ ownerDocument, parentNode }) => { while (parentNode) { if (parentNode === ownerDocument) return true; parentNode = parentNode.parentNode || parentNode.host; } return false; }; exports2.isConnected = isConnected; var parentElement = ({ parentNode }) => { if (parentNode) { switch (parentNode.nodeType) { case DOCUMENT_NODE: case DOCUMENT_FRAGMENT_NODE: return null; } } return parentNode; }; exports2.parentElement = parentElement; var previousSibling = ({ [PREV]: prev }) => { switch (prev ? prev.nodeType : 0) { case NODE_END: return prev[START]; case TEXT_NODE: case COMMENT_NODE: case CDATA_SECTION_NODE: return prev; } return null; }; exports2.previousSibling = previousSibling; var nextSibling = (node) => { const next = getEnd(node)[NEXT]; return next && (next.nodeType === NODE_END ? null : next); }; exports2.nextSibling = nextSibling; } }); // node_modules/linkedom/cjs/mixin/non-document-type-child-node.js var require_non_document_type_child_node = __commonJS({ "node_modules/linkedom/cjs/mixin/non-document-type-child-node.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE } = require_constants(); var { nextSibling, previousSibling } = require_node4(); var nextElementSibling2 = (node) => { let next = nextSibling(node); while (next && next.nodeType !== ELEMENT_NODE) next = nextSibling(next); return next; }; exports2.nextElementSibling = nextElementSibling2; var previousElementSibling = (node) => { let prev = previousSibling(node); while (prev && prev.nodeType !== ELEMENT_NODE) prev = previousSibling(prev); return prev; }; exports2.previousElementSibling = previousElementSibling; } }); // node_modules/linkedom/cjs/mixin/child-node.js var require_child_node = __commonJS({ "node_modules/linkedom/cjs/mixin/child-node.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE } = require_constants(); var { NEXT, PREV } = require_symbols(); var { getEnd, setAdjacent } = require_utils4(); var { moCallback } = require_mutation_observer(); var { disconnectedCallback } = require_custom_element_registry(); var asFragment = (ownerDocument, nodes) => { const fragment = ownerDocument.createDocumentFragment(); fragment.append(...nodes); return fragment; }; var before = (node, nodes) => { const { ownerDocument, parentNode } = node; if (parentNode) parentNode.insertBefore( asFragment(ownerDocument, nodes), node ); }; exports2.before = before; var after = (node, nodes) => { const { ownerDocument, parentNode } = node; if (parentNode) parentNode.insertBefore( asFragment(ownerDocument, nodes), getEnd(node)[NEXT] ); }; exports2.after = after; var replaceWith = (node, nodes) => { const { ownerDocument, parentNode } = node; if (parentNode) { if (nodes.includes(node)) replaceWith(node, [node = node.cloneNode()]); parentNode.insertBefore( asFragment(ownerDocument, nodes), node ); node.remove(); } }; exports2.replaceWith = replaceWith; var remove = (prev, current, next) => { const { parentNode, nodeType } = current; if (prev || next) { setAdjacent(prev, next); current[PREV] = null; getEnd(current)[NEXT] = null; } if (parentNode) { current.parentNode = null; moCallback(current, parentNode); if (nodeType === ELEMENT_NODE) disconnectedCallback(current); } }; exports2.remove = remove; } }); // node_modules/linkedom/cjs/interface/character-data.js var require_character_data = __commonJS({ "node_modules/linkedom/cjs/interface/character-data.js"(exports2) { "use strict"; init_define_import_meta_env(); var { NEXT, PREV, VALUE } = require_symbols(); var { String: String2 } = require_utils4(); var { isConnected, parentElement, previousSibling, nextSibling } = require_node4(); var { characterDataAsJSON } = require_jsdon(); var { previousElementSibling, nextElementSibling: nextElementSibling2 } = require_non_document_type_child_node(); var { before, after, replaceWith, remove } = require_child_node(); var { Node } = require_node3(); var { moCallback } = require_mutation_observer(); var CharacterData = class extends Node { constructor(ownerDocument, localName, nodeType, data) { super(ownerDocument, localName, nodeType); this[VALUE] = String2(data); } // <Mixins> get isConnected() { return isConnected(this); } get parentElement() { return parentElement(this); } get previousSibling() { return previousSibling(this); } get nextSibling() { return nextSibling(this); } get previousElementSibling() { return previousElementSibling(this); } get nextElementSibling() { return nextElementSibling2(this); } before(...nodes) { before(this, nodes); } after(...nodes) { after(this, nodes); } replaceWith(...nodes) { replaceWith(this, nodes); } remove() { remove(this[PREV], this, this[NEXT]); } // </Mixins> // CharacterData only /* c8 ignore start */ get data() { return this[VALUE]; } set data(value) { this[VALUE] = String2(value); moCallback(this, this.parentNode); } get nodeValue() { return this.data; } set nodeValue(value) { this.data = value; } get textContent() { return this.data; } set textContent(value) { this.data = value; } get length() { return this.data.length; } substringData(offset, count) { return this.data.substr(offset, count); } appendData(data) { this.data += data; } insertData(offset, data) { const { data: t } = this; this.data = t.slice(0, offset) + data + t.slice(offset); } deleteData(offset, count) { const { data: t } = this; this.data = t.slice(0, offset) + t.slice(offset + count); } replaceData(offset, count, data) { const { data: t } = this; this.data = t.slice(0, offset) + data + t.slice(offset + count); } /* c8 ignore stop */ toJSON() { const json2 = []; characterDataAsJSON(this, json2); return json2; } }; exports2.CharacterData = CharacterData; } }); // node_modules/linkedom/cjs/interface/cdata-section.js var require_cdata_section = __commonJS({ "node_modules/linkedom/cjs/interface/cdata-section.js"(exports2) { "use strict"; init_define_import_meta_env(); var { CDATA_SECTION_NODE } = require_constants(); var { VALUE } = require_symbols(); var { CharacterData } = require_character_data(); var CDATASection = class _CDATASection extends CharacterData { constructor(ownerDocument, data = "") { super(ownerDocument, "#cdatasection", CDATA_SECTION_NODE, data); } cloneNode() { const { ownerDocument, [VALUE]: data } = this; return new _CDATASection(ownerDocument, data); } toString() { return `<![CDATA[${this[VALUE]}]]>`; } }; exports2.CDATASection = CDATASection; } }); // node_modules/linkedom/cjs/interface/comment.js var require_comment = __commonJS({ "node_modules/linkedom/cjs/interface/comment.js"(exports2) { "use strict"; init_define_import_meta_env(); var { COMMENT_NODE } = require_constants(); var { VALUE } = require_symbols(); var { CharacterData } = require_character_data(); var Comment4 = class _Comment extends CharacterData { constructor(ownerDocument, data = "") { super(ownerDocument, "#comment", COMMENT_NODE, data); } cloneNode() { const { ownerDocument, [VALUE]: data } = this; return new _Comment(ownerDocument, data); } toString() { return `<!--${this[VALUE]}-->`; } }; exports2.Comment = Comment4; } }); // node_modules/boolbase/dist/index.js function trueFunc() { return true; } function falseFunc() { return false; } var init_dist = __esm({ "node_modules/boolbase/dist/index.js"() { init_define_import_meta_env(); } }); // node_modules/css-what/dist/types.js var SelectorType, AttributeAction; var init_types = __esm({ "node_modules/css-what/dist/types.js"() { init_define_import_meta_env(); (function(SelectorType2) { SelectorType2["Attribute"] = "attribute"; SelectorType2["Pseudo"] = "pseudo"; SelectorType2["PseudoElement"] = "pseudo-element"; SelectorType2["Tag"] = "tag"; SelectorType2["Universal"] = "universal"; SelectorType2["Adjacent"] = "adjacent"; SelectorType2["Child"] = "child"; SelectorType2["Descendant"] = "descendant"; SelectorType2["Parent"] = "parent"; SelectorType2["Sibling"] = "sibling"; SelectorType2["ColumnCombinator"] = "column-combinator"; })(SelectorType || (SelectorType = {})); (function(AttributeAction2) { AttributeAction2["Any"] = "any"; AttributeAction2["Element"] = "element"; AttributeAction2["End"] = "end"; AttributeAction2["Equals"] = "equals"; AttributeAction2["Exists"] = "exists"; AttributeAction2["Hyphen"] = "hyphen"; AttributeAction2["Not"] = "not"; AttributeAction2["Start"] = "start"; })(AttributeAction || (AttributeAction = {})); } }); // node_modules/css-what/dist/parse.js function isTraversal(selector) { switch (selector.type) { case SelectorType.Adjacent: case SelectorType.Child: case SelectorType.Descendant: case SelectorType.Parent: case SelectorType.Sibling: case SelectorType.ColumnCombinator: { return true; } case SelectorType.Attribute: case SelectorType.Pseudo: case SelectorType.PseudoElement: case SelectorType.Tag: case SelectorType.Universal: { return false; } } } function funescape(_, escaped, escapedWhitespace) { const high = Number.parseInt(escaped, 16) - 65536; return Number.isNaN(high) || escapedWhitespace ? escaped : high < 0 ? ( // BMP codepoint String.fromCharCode(high + 65536) ) : ( // Supplemental Plane codepoint (surrogate pair) String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320) ); } function unescapeCSS(cssString) { return cssString.replace(reEscape, funescape); } function isQuote(c) { return c === CharCode.SingleQuote || c === CharCode.DoubleQuote; } function isWhitespace(c) { return c === CharCode.Space || c === CharCode.Tab || c === CharCode.NewLine || c === CharCode.FormFeed || c === CharCode.CarriageReturn; } function parse(selector) { const subselects2 = []; const endIndex = parseSelector(subselects2, `${selector}`, 0); if (endIndex < selector.length) { throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`); } return subselects2; } function parseSelector(subselects2, selector, selectorIndex) { let tokens = []; function getName2(offset) { const match = selector.slice(selectorIndex + offset).match(reName); if (!match) { throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`); } const [name] = match; selectorIndex += offset + name.length; return unescapeCSS(name); } function stripWhitespace(offset) { selectorIndex += offset; while (selectorIndex < selector.length && isWhitespace(selector.charCodeAt(selectorIndex))) { selectorIndex++; } } function readValueWithParenthesis() { selectorIndex += 1; const start = selectorIndex; for (let counter = 1; selectorIndex < selector.length; selectorIndex++) { switch (selector.charCodeAt(selectorIndex)) { case CharCode.BackSlash: { selectorIndex += 1; break; } case CharCode.LeftParenthesis: { counter += 1; break; } case CharCode.RightParenthesis: { counter -= 1; if (counter === 0) { return unescapeCSS(selector.slice(start, selectorIndex++)); } break; } } } throw new Error("Parenthesis not matched"); } function ensureNotTraversal() { if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) { throw new Error("Did not expect successive traversals."); } } function addTraversal(type) { if (tokens.length > 0 && tokens[tokens.length - 1].type === SelectorType.Descendant) { tokens[tokens.length - 1].type = type; return; } ensureNotTraversal(); tokens.push({ type }); } function addSpecialAttribute(name, action) { tokens.push({ type: SelectorType.Attribute, name, action, value: getName2(1), namespace: null, ignoreCase: "quirks" }); } function finalizeSubselector() { if (tokens.length > 0 && tokens[tokens.length - 1].type === SelectorType.Descendant) { tokens.pop(); } if (tokens.length === 0) { throw new Error("Empty sub-selector"); } subselects2.push(tokens); } stripWhitespace(0); if (selector.length === selectorIndex) { return selectorIndex; } loop: while (selectorIndex < selector.length) { const firstChar = selector.charCodeAt(selectorIndex); switch (firstChar) { // Whitespace case CharCode.Space: case CharCode.Tab: case CharCode.NewLine: case CharCode.FormFeed: case CharCode.CarriageReturn: { if (tokens.length === 0 || tokens[0].type !== SelectorType.Descendant) { ensureNotTraversal(); tokens.push({ type: SelectorType.Descendant }); } stripWhitespace(1); break; } // Traversals case CharCode.GreaterThan: { addTraversal(SelectorType.Child); stripWhitespace(1); break; } case CharCode.LessThan: { addTraversal(SelectorType.Parent); stripWhitespace(1); break; } case CharCode.Tilde: { addTraversal(SelectorType.Sibling); stripWhitespace(1); break; } case CharCode.Plus: { addTraversal(SelectorType.Adjacent); stripWhitespace(1); break; } // Special attribute selectors: .class, #id case CharCode.Period: { addSpecialAttribute("class", AttributeAction.Element); break; } case CharCode.Hash: { addSpecialAttribute("id", AttributeAction.Equals); break; } case CharCode.LeftSquareBracket: { stripWhitespace(1); let name; let namespace = null; if (selector.charCodeAt(selectorIndex) === CharCode.Pipe) { name = getName2(1); } else if (selector.startsWith("*|", selectorIndex)) { namespace = "*"; name = getName2(2); } else { name = getName2(0); if (selector.charCodeAt(selectorIndex) === CharCode.Pipe && selector.charCodeAt(selectorIndex + 1) !== CharCode.Equal) { namespace = name; name = getName2(1); } } stripWhitespace(0); let action = AttributeAction.Exists; const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex)); if (possibleAction) { action = possibleAction; if (selector.charCodeAt(selectorIndex + 1) !== CharCode.Equal) { throw new Error("Expected `=`"); } stripWhitespace(2); } else if (selector.charCodeAt(selectorIndex) === CharCode.Equal) { action = AttributeAction.Equals; stripWhitespace(1); } let value = ""; let ignoreCase = null; if (action !== "exists") { if (isQuote(selector.charCodeAt(selectorIndex))) { const quote = selector.charCodeAt(selectorIndex); selectorIndex += 1; const sectionStart = selectorIndex; while (selectorIndex < selector.length && selector.charCodeAt(selectorIndex) !== quote) { selectorIndex += // Skip next character if it is escaped selector.charCodeAt(selectorIndex) === CharCode.BackSlash ? 2 : 1; } if (selector.charCodeAt(selectorIndex) !== quote) { throw new Error("Attribute value didn't end"); } value = unescapeCSS(selector.slice(sectionStart, selectorIndex)); selectorIndex += 1; } else { const valueStart = selectorIndex; while (selectorIndex < selector.length && !isWhitespace(selector.charCodeAt(selectorIndex)) && selector.charCodeAt(selectorIndex) !== CharCode.RightSquareBracket) { selectorIndex += // Skip next character if it is escaped selector.charCodeAt(selectorIndex) === CharCode.BackSlash ? 2 : 1; } value = unescapeCSS(selector.slice(valueStart, selectorIndex)); } stripWhitespace(0); switch (selector.charCodeAt(selectorIndex) | 32) { // If the forceIgnore flag is set (either `i` or `s`), use that value case CharCode.LowerI: { ignoreCase = true; stripWhitespace(1); break; } case CharCode.LowerS: { ignoreCase = false; stripWhitespace(1); break; } } } if (selector.charCodeAt(selectorIndex) !== CharCode.RightSquareBracket) { throw new Error("Attribute selector didn't terminate"); } selectorIndex += 1; const attributeSelector = { type: SelectorType.Attribute, name, action, value, namespace, ignoreCase }; tokens.push(attributeSelector); break; } case CharCode.Colon: { if (selector.charCodeAt(selectorIndex + 1) === CharCode.Colon) { tokens.push({ type: SelectorType.PseudoElement, name: getName2(2).toLowerCase(), data: selector.charCodeAt(selectorIndex) === CharCode.LeftParenthesis ? readValueWithParenthesis() : null }); break; } const name = getName2(1).toLowerCase(); if (pseudosToPseudoElements.has(name)) { tokens.push({ type: SelectorType.PseudoElement, name, data: null }); break; } let data = null; if (selector.charCodeAt(selectorIndex) === CharCode.LeftParenthesis) { if (unpackPseudos.has(name)) { if (isQuote(selector.charCodeAt(selectorIndex + 1))) { throw new Error(`Pseudo-selector ${name} cannot be quoted`); } data = []; selectorIndex = parseSelector(data, selector, selectorIndex + 1); if (selector.charCodeAt(selectorIndex) !== CharCode.RightParenthesis) { throw new Error(`Missing closing parenthesis in :${name} (${selector})`); } selectorIndex += 1; } else { data = readValueWithParenthesis(); if (stripQuotesFromPseudos.has(name)) { const quot = data.charCodeAt(0); if (quot === data.charCodeAt(data.length - 1) && isQuote(quot)) { data = data.slice(1, -1); } } data = unescapeCSS(data); } } tokens.push({ type: SelectorType.Pseudo, name, data }); break; } case CharCode.Comma: { finalizeSubselector(); tokens = []; stripWhitespace(1); break; } default: { if (selector.startsWith("/*", selectorIndex)) { const endIndex = selector.indexOf("*/", selectorIndex + 2); if (endIndex === -1) { throw new Error("Comment was not terminated"); } selectorIndex = endIndex + 2; if (tokens.length === 0) { stripWhitespace(0); } break; } let namespace = null; let name; if (firstChar === CharCode.Asterisk) { selectorIndex += 1; name = "*"; } else if (firstChar === CharCode.Pipe) { name = ""; if (selector.charCodeAt(selectorIndex + 1) === CharCode.Pipe) { addTraversal(SelectorType.ColumnCombinator); stripWhitespace(2); break; } } else if (reName.test(selector.slice(selectorIndex))) { name = getName2(0); } else { break loop; } if (selector.charCodeAt(selectorIndex) === CharCode.Pipe && selector.charCodeAt(selectorIndex + 1) !== CharCode.Pipe) { namespace = name; if (selector.charCodeAt(selectorIndex + 1) === CharCode.Asterisk) { name = "*"; selectorIndex += 2; } else { name = getName2(1); } } tokens.push(name === "*" ? { type: SelectorType.Universal, namespace } : { type: SelectorType.Tag, name, namespace }); } } } finalizeSubselector(); return selectorIndex; } var reName, reEscape, CharCode, actionTypes, unpackPseudos, pseudosToPseudoElements, stripQuotesFromPseudos; var init_parse = __esm({ "node_modules/css-what/dist/parse.js"() { init_define_import_meta_env(); init_types(); reName = /^[^#\\]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\u00B0-\uFFFF-])+/; reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi; (function(CharCode2) { CharCode2[CharCode2["LeftParenthesis"] = 40] = "LeftParenthesis"; CharCode2[CharCode2["RightParenthesis"] = 41] = "RightParenthesis"; CharCode2[CharCode2["LeftSquareBracket"] = 91] = "LeftSquareBracket"; CharCode2[CharCode2["RightSquareBracket"] = 93] = "RightSquareBracket"; CharCode2[CharCode2["Comma"] = 44] = "Comma"; CharCode2[CharCode2["Period"] = 46] = "Period"; CharCode2[CharCode2["Colon"] = 58] = "Colon"; CharCode2[CharCode2["SingleQuote"] = 39] = "SingleQuote"; CharCode2[CharCode2["DoubleQuote"] = 34] = "DoubleQuote"; CharCode2[CharCode2["Plus"] = 43] = "Plus"; CharCode2[CharCode2["Tilde"] = 126] = "Tilde"; CharCode2[CharCode2["QuestionMark"] = 63] = "QuestionMark"; CharCode2[CharCode2["ExclamationMark"] = 33] = "ExclamationMark"; CharCode2[CharCode2["Slash"] = 47] = "Slash"; CharCode2[CharCode2["Equal"] = 61] = "Equal"; CharCode2[CharCode2["Dollar"] = 36] = "Dollar"; CharCode2[CharCode2["Pipe"] = 124] = "Pipe"; CharCode2[CharCode2["Circumflex"] = 94] = "Circumflex"; CharCode2[CharCode2["Asterisk"] = 42] = "Asterisk"; CharCode2[CharCode2["GreaterThan"] = 62] = "GreaterThan"; CharCode2[CharCode2["LessThan"] = 60] = "LessThan"; CharCode2[CharCode2["Hash"] = 35] = "Hash"; CharCode2[CharCode2["LowerI"] = 105] = "LowerI"; CharCode2[CharCode2["LowerS"] = 115] = "LowerS"; CharCode2[CharCode2["BackSlash"] = 92] = "BackSlash"; CharCode2[CharCode2["Space"] = 32] = "Space"; CharCode2[CharCode2["Tab"] = 9] = "Tab"; CharCode2[CharCode2["NewLine"] = 10] = "NewLine"; CharCode2[CharCode2["FormFeed"] = 12] = "FormFeed"; CharCode2[CharCode2["CarriageReturn"] = 13] = "CarriageReturn"; })(CharCode || (CharCode = {})); actionTypes = /* @__PURE__ */ new Map([ [CharCode.Tilde, AttributeAction.Element], [CharCode.Circumflex, AttributeAction.Start], [CharCode.Dollar, AttributeAction.End], [CharCode.Asterisk, AttributeAction.Any], [CharCode.ExclamationMark, AttributeAction.Not], [CharCode.Pipe, AttributeAction.Hyphen] ]); unpackPseudos = /* @__PURE__ */ new Set([ "has", "not", "matches", "is", "where", "host", "host-context" ]); pseudosToPseudoElements = /* @__PURE__ */ new Set([ "before", "after", "first-line", "first-letter" ]); stripQuotesFromPseudos = /* @__PURE__ */ new Set(["contains", "icontains"]); } }); // node_modules/css-what/dist/index.js var init_dist2 = __esm({ "node_modules/css-what/dist/index.js"() { init_define_import_meta_env(); init_parse(); init_types(); } }); // node_modules/domhandler/node_modules/domelementtype/dist/index.js function isTag(element) { return element.type === ElementType.Tag || element.type === ElementType.Script || element.type === ElementType.Style; } var ElementType, Root, Text, Directive, Comment, Script, Style, Tag, CDATA, Doctype; var init_dist3 = __esm({ "node_modules/domhandler/node_modules/domelementtype/dist/index.js"() { init_define_import_meta_env(); (function(ElementType4) { ElementType4["Root"] = "root"; ElementType4["Text"] = "text"; ElementType4["Directive"] = "directive"; ElementType4["Comment"] = "comment"; ElementType4["Script"] = "script"; ElementType4["Style"] = "style"; ElementType4["Tag"] = "tag"; ElementType4["CDATA"] = "cdata"; ElementType4["Doctype"] = "doctype"; })(ElementType || (ElementType = {})); Root = ElementType.Root; Text = ElementType.Text; Directive = ElementType.Directive; Comment = ElementType.Comment; Script = ElementType.Script; Style = ElementType.Style; Tag = ElementType.Tag; CDATA = ElementType.CDATA; Doctype = ElementType.Doctype; } }); // node_modules/domhandler/dist/node.js function isTag2(node) { return isTag(node); } function isCDATA(node) { return node.type === ElementType.CDATA; } function isText(node) { return node.type === ElementType.Text; } function isComment(node) { return node.type === ElementType.Comment; } function hasChildren(node) { return Object.hasOwn(node, "children"); } var init_node = __esm({ "node_modules/domhandler/dist/node.js"() { init_define_import_meta_env(); init_dist3(); } }); // node_modules/domhandler/dist/index.js var init_dist4 = __esm({ "node_modules/domhandler/dist/index.js"() { init_define_import_meta_env(); init_node(); } }); // node_modules/domutils/dist/querying.js function filter(test, node, recurse = true, limit = Number.POSITIVE_INFINITY) { return find(test, Array.isArray(node) ? node : [node], recurse, limit); } function find(test, nodes, recurse, limit) { const result = []; const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; const indexStack = [0]; for (; ; ) { if (indexStack[0] >= nodeStack[0].length) { if (indexStack.length === 1) { return result; } nodeStack.shift(); indexStack.shift(); continue; } const element = nodeStack[0][indexStack[0]++]; if (test(element)) { result.push(element); if (--limit <= 0) return result; } if (recurse && hasChildren(element) && element.children.length > 0) { indexStack.unshift(0); nodeStack.unshift(element.children); } } } function findOne(test, nodes, recurse = true) { const searchedNodes = Array.isArray(nodes) ? nodes : [nodes]; for (const node of searchedNodes) { if (isTag2(node) && test(node)) { return node; } if (recurse && hasChildren(node) && node.children.length > 0) { const found = findOne(test, node.children, true); if (found) return found; } } return null; } function existsOne(test, nodes) { return (Array.isArray(nodes) ? nodes : [nodes]).some((node) => isTag2(node) && test(node) || hasChildren(node) && existsOne(test, node.children)); } function findAll(test, nodes) { const result = []; const nodeStack = [Array.isArray(nodes) ? nodes : [nodes]]; const indexStack = [0]; for (; ; ) { if (indexStack[0] >= nodeStack[0].length) { if (nodeStack.length === 1) { return result; } nodeStack.shift(); indexStack.shift(); continue; } const element = nodeStack[0][indexStack[0]++]; if (isTag2(element) && test(element)) result.push(element); if (hasChildren(element) && element.children.length > 0) { indexStack.unshift(0); nodeStack.unshift(element.children); } } } var init_querying = __esm({ "node_modules/domutils/dist/querying.js"() { init_define_import_meta_env(); init_dist4(); } }); // node_modules/domutils/dist/legacy.js function getAttribCheck(attrib, value) { if (typeof value === "function") { return (element) => isTag2(element) && value(element.attribs[attrib]); } return (element) => isTag2(element) && element.attribs[attrib] === value; } function combineFuncs(a, b) { return (element) => a(element) || b(element); } function compileTest(options) { const funcs = Object.keys(options).map((key) => { const value = options[key]; return Object.hasOwn(Checks, key) ? Checks[key](value) : getAttribCheck(key, value); }); return funcs.length === 0 ? null : funcs.reduce(combineFuncs); } function testElement(options, node) { const test = compileTest(options); return test ? test(node) : true; } function getElements(options, nodes, recurse, limit = Number.POSITIVE_INFINITY) { const test = compileTest(options); return test ? filter(test, nodes, recurse, limit) : []; } function getElementById(id, nodes, recurse = true) { if (!Array.isArray(nodes)) nodes = [nodes]; return findOne(getAttribCheck("id", id), nodes, recurse); } function getElementsByTagName(tagName, nodes, recurse = true, limit = Number.POSITIVE_INFINITY) { return filter(Checks["tag_name"](tagName), nodes, recurse, limit); } function getElementsByClassName(className, nodes, recurse = true, limit = Number.POSITIVE_INFINITY) { return filter(getAttribCheck("class", className), nodes, recurse, limit); } function getElementsByTagType(type, nodes, recurse = true, limit = Number.POSITIVE_INFINITY) { return filter(Checks["tag_type"](type), nodes, recurse, limit); } var Checks; var init_legacy = __esm({ "node_modules/domutils/dist/legacy.js"() { init_define_import_meta_env(); init_dist4(); init_querying(); Checks = { tag_name(name) { if (typeof name === "function") { return (element) => isTag2(element) && name(element.name); } if (name === "*") { return isTag2; } return (element) => isTag2(element) && element.name === name; }, tag_type(type) { if (typeof type === "function") { return (element) => type(element.type); } return (element) => element.type === type; }, tag_contains(data) { if (typeof data === "function") { return (element) => isText(element) && data(element.data); } return (element) => isText(element) && element.data === data; } }; } }); // node_modules/dom-serializer/node_modules/domelementtype/dist/index.js var ElementType2, Root2, Text2, Directive2, Comment2, Script2, Style2, Tag2, CDATA2, Doctype2; var init_dist5 = __esm({ "node_modules/dom-serializer/node_modules/domelementtype/dist/index.js"() { init_define_import_meta_env(); (function(ElementType4) { ElementType4["Root"] = "root"; ElementType4["Text"] = "text"; ElementType4["Directive"] = "directive"; ElementType4["Comment"] = "comment"; ElementType4["Script"] = "script"; ElementType4["Style"] = "style"; ElementType4["Tag"] = "tag"; ElementType4["CDATA"] = "cdata"; ElementType4["Doctype"] = "doctype"; })(ElementType2 || (ElementType2 = {})); Root2 = ElementType2.Root; Text2 = ElementType2.Text; Directive2 = ElementType2.Directive; Comment2 = ElementType2.Comment; Script2 = ElementType2.Script; Style2 = ElementType2.Style; Tag2 = ElementType2.Tag; CDATA2 = ElementType2.CDATA; Doctype2 = ElementType2.Doctype; } }); // node_modules/dom-serializer/node_modules/entities/dist/escape.js function getEscape(char) { return char === 34 ? """ : char === 38 ? "&" : char === 39 ? "'" : char === 60 ? "<" : char === 62 ? ">" : " "; } function isXmlEscapable(code) { return code >= 128 || code >= 32 && code < 64 && (XML_BITSET_VALUE >>> code & 1) === 1; } function encodeXML(input) { const { length } = input; let out; let last = 0; let index2 = 0; while (index2 < length) { const char = input.charCodeAt(index2); if (!isXmlEscapable(char)) { const bound = Math.min(index2 + 32, length); let next = index2 + 1; while (next < bound && !isXmlEscapable(input.charCodeAt(next))) { next++; } if (next < bound) { index2 = next; continue; } if (next >= length) break; xmlEncodeRegex.lastIndex = next; if (!xmlEncodeRegex.test(input)) break; index2 = xmlEncodeRegex.lastIndex - 1; continue; } if (out === void 0) out = input.substring(0, index2); else if (last !== index2) out += input.substring(last, index2); if (char < 64) { out += getEscape(char); last = index2 += 1; continue; } const cp = input.codePointAt(index2); out += `&#x${cp.toString(16)};`; if (cp !== char) index2++; last = index2 += 1; } if (out === void 0) return input; if (last < length) out += input.substr(last); return out; } function escapeWithRegex(re, data) { re.lastIndex = 0; if (!re.test(data)) return data; let out = ""; let last = 0; do { const index2 = re.lastIndex - 1; if (last !== index2) out += data.substring(last, index2); const char = data.charCodeAt(index2); out += getEscape(char); last = index2 + 1; } while (re.test(data)); return out + data.substring(last); } function escapeAttribute(data) { return escapeWithRegex(attributeEscapeRegex, data); } function escapeText(data) { return escapeWithRegex(textEscapeRegex, data); } var XML_BITSET_VALUE, xmlEncodeRegex, attributeEscapeRegex, textEscapeRegex; var init_escape = __esm({ "node_modules/dom-serializer/node_modules/entities/dist/escape.js"() { init_define_import_meta_env(); XML_BITSET_VALUE = 1342177476; xmlEncodeRegex = /["&'<>\u0080-\uFFFF]/g; attributeEscapeRegex = /["&\u{A0}]/gu; textEscapeRegex = /[&<>\u{A0}]/gu; } }); // node_modules/dom-serializer/node_modules/entities/dist/index.js var EntityLevel, EncodingMode; var init_dist6 = __esm({ "node_modules/dom-serializer/node_modules/entities/dist/index.js"() { init_define_import_meta_env(); init_escape(); (function(EntityLevel2) { EntityLevel2[EntityLevel2["XML"] = 0] = "XML"; EntityLevel2[EntityLevel2["HTML"] = 1] = "HTML"; })(EntityLevel || (EntityLevel = {})); (function(EncodingMode2) { EncodingMode2[EncodingMode2["UTF8"] = 0] = "UTF8"; EncodingMode2[EncodingMode2["ASCII"] = 1] = "ASCII"; EncodingMode2[EncodingMode2["Extensive"] = 2] = "Extensive"; EncodingMode2[EncodingMode2["Attribute"] = 3] = "Attribute"; EncodingMode2[EncodingMode2["Text"] = 4] = "Text"; })(EncodingMode || (EncodingMode = {})); } }); // node_modules/dom-serializer/dist/foreign-names.js var elementNames, attributeNames; var init_foreign_names = __esm({ "node_modules/dom-serializer/dist/foreign-names.js"() { init_define_import_meta_env(); elementNames = new Map("altGlyph altGlyphDef altGlyphItem animateColor animateMotion animateTransform clipPath feBlend feColorMatrix feComponentTransfer feComposite feConvolveMatrix feDiffuseLighting feDisplacementMap feDistantLight feDropShadow feFlood feFuncA feFuncB feFuncG feFuncR feGaussianBlur feImage feMerge feMergeNode feMorphology feOffset fePointLight feSpecularLighting feSpotLight feTile feTurbulence foreignObject glyphRef linearGradient radialGradient textPath".split(" ").map((name) => [name.toLowerCase(), name])); attributeNames = new Map("definitionURL attributeName attributeType baseFrequency baseProfile calcMode clipPathUnits diffuseConstant edgeMode filterUnits glyphRef gradientTransform gradientUnits kernelMatrix kernelUnitLength keyPoints keySplines keyTimes lengthAdjust limitingConeAngle markerHeight markerUnits markerWidth maskContentUnits maskUnits numOctaves pathLength patternContentUnits patternTransform patternUnits pointsAtX pointsAtY pointsAtZ preserveAlpha preserveAspectRatio primitiveUnits refX refY repeatCount repeatDur requiredExtensions requiredFeatures specularConstant specularExponent spreadMethod startOffset stdDeviation stitchTiles surfaceScale systemLanguage tableValues targetX targetY textLength viewBox viewTarget xChannelSelector yChannelSelector zoomAndPan".split(" ").map((name) => [name.toLowerCase(), name])); } }); // node_modules/dom-serializer/dist/index.js function render(node, options = {}) { const nodes = "length" in node ? node : [node]; const xmlMode = options.xmlMode ?? false; let output = ""; for (let index2 = 0; index2 < nodes.length; index2++) { output += renderNode(nodes[index2], options, xmlMode); } return output; } function renderChildren(children, options, xmlMode) { let output = ""; for (let index2 = 0; index2 < children.length; index2++) { output += renderNode(children[index2], options, xmlMode); } return output; } function renderNode(node, options, xmlMode) { switch (node.type) { case Root2: { return renderChildren(node.children, options, xmlMode); } case Directive2: { return `<${node.data}>`; } case Comment2: { return `<!--${node.data}-->`; } case CDATA2: { return `<![CDATA[${node.children[0].data}]]>`; } case Script2: case Style2: case Tag2: { return renderTag(node, options, xmlMode); } case Text2: { const element = node; const data = element.data || ""; if ((options.encodeEntities ?? options.decodeEntities) !== false && !(!xmlMode && element.parent && unencodedElements.has(element.parent.name))) { return xmlMode || options.encodeEntities !== "utf8" ? encodeXML(data) : escapeText(data); } return data; } } } function renderTag(element, options, xmlMode) { if (xmlMode === "foreign") { element.name = elementNames.get(element.name) ?? element.name; if (element.parent && foreignModeIntegrationPoints.has(element.parent.name)) { xmlMode = false; } } if (!xmlMode && foreignElements.has(element.name)) { xmlMode = "foreign"; } const { name, children } = element; const isVoid = !xmlMode && voidElements.has(name); let tag = `<${name}${formatAttributes(element.attribs, options, xmlMode)}`; if (children.length === 0 && (xmlMode ? options.selfClosingTags !== false : options.selfClosingTags && isVoid)) { tag += xmlMode ? "/>" : " />"; } else { tag += ">"; if (children.length > 0) { tag += renderChildren(children, options, xmlMode); } if (!isVoid) { tag += `</${name}>`; } } return tag; } function replaceQuotes(value) { return value.replaceAll('"', """); } function formatAttributes(attributes, options, xmlMode) { if (!attributes) return ""; const encode = (options.encodeEntities ?? options.decodeEntities) === false ? replaceQuotes : xmlMode || options.encodeEntities !== "utf8" ? encodeXML : escapeAttribute; const isForeign = xmlMode === "foreign"; const showEmpty = !!(options.emptyAttrs ?? xmlMode); let result = ""; for (const key in attributes) { if (!Object.hasOwn(attributes, key)) continue; const value = attributes[key]; const k = isForeign ? attributeNames.get(key) ?? key : key; result += !showEmpty && (value == null || value === "") ? ` ${k}` : ` ${k}="${encode(value == null ? "" : String(value))}"`; } return result; } var unencodedElements, voidElements, foreignElements, foreignModeIntegrationPoints, dist_default; var init_dist7 = __esm({ "node_modules/dom-serializer/dist/index.js"() { init_define_import_meta_env(); init_dist5(); init_dist6(); init_foreign_names(); unencodedElements = new Set("style script xmp iframe noembed noframes plaintext noscript".split(" ")); voidElements = new Set("area base basefont br col command embed frame hr img input isindex keygen link meta param source track wbr".split(" ")); foreignElements = /* @__PURE__ */ new Set(["svg", "math"]); foreignModeIntegrationPoints = new Set("mi mo mn ms mtext annotation-xml foreignObject desc title".split(" ")); dist_default = render; } }); // node_modules/domutils/node_modules/domelementtype/dist/index.js var ElementType3, Root3, Text3, Directive3, Comment3, Script3, Style3, Tag3, CDATA3, Doctype3; var init_dist8 = __esm({ "node_modules/domutils/node_modules/domelementtype/dist/index.js"() { init_define_import_meta_env(); (function(ElementType4) { ElementType4["Root"] = "root"; ElementType4["Text"] = "text"; ElementType4["Directive"] = "directive"; ElementType4["Comment"] = "comment"; ElementType4["Script"] = "script"; ElementType4["Style"] = "style"; ElementType4["Tag"] = "tag"; ElementType4["CDATA"] = "cdata"; ElementType4["Doctype"] = "doctype"; })(ElementType3 || (ElementType3 = {})); Root3 = ElementType3.Root; Text3 = ElementType3.Text; Directive3 = ElementType3.Directive; Comment3 = ElementType3.Comment; Script3 = ElementType3.Script; Style3 = ElementType3.Style; Tag3 = ElementType3.Tag; CDATA3 = ElementType3.CDATA; Doctype3 = ElementType3.Doctype; } }); // node_modules/domutils/dist/stringify.js function getOuterHTML(node, options) { return dist_default(node, options); } function getInnerHTML(node, options) { return hasChildren(node) ? node.children.map((node2) => getOuterHTML(node2, options)).join("") : ""; } function getText(node) { if (Array.isArray(node)) return node.map(getText).join(""); if (isTag2(node)) return node.name === "br" ? "\n" : getText(node.children); if (isCDATA(node)) return getText(node.children); if (isText(node)) return node.data; return ""; } function textContent(node) { if (Array.isArray(node)) return node.map(textContent).join(""); if (hasChildren(node) && !isComment(node)) { return textContent(node.children); } if (isText(node)) return node.data; return ""; } function innerText(node) { if (Array.isArray(node)) return node.map(innerText).join(""); if (hasChildren(node) && (node.type === ElementType3.Tag || isCDATA(node))) { return innerText(node.children); } if (isText(node)) return node.data; return ""; } var init_stringify = __esm({ "node_modules/domutils/dist/stringify.js"() { init_define_import_meta_env(); init_dist7(); init_dist8(); init_dist4(); } }); // node_modules/domutils/dist/feeds.js function getFeed(document2) { const feedRoot = getOneElement(isValidFeed, document2); return feedRoot ? feedRoot.name === "feed" ? getAtomFeed(feedRoot) : getRssFeed(feedRoot) : null; } function getAtomFeed(feedRoot) { const childs = feedRoot.children; const feed = { type: "atom", items: getElementsByTagName("entry", childs).map((item) => { const { children } = item; const entry = { media: getMediaElements(children) }; addConditionally(entry, "id", "id", children); addConditionally(entry, "title", "title", children); const href2 = getOneElement("link", children)?.attribs["href"]; if (href2) { entry.link = href2; } const description = fetch2("summary", children) || fetch2("content", children); if (description) { entry.description = description; } const pubDate = fetch2("updated", children); if (pubDate) { entry.pubDate = new Date(pubDate); } return entry; }) }; addConditionally(feed, "id", "id", childs); addConditionally(feed, "title", "title", childs); const href = getOneElement("link", childs)?.attribs["href"]; if (href) { feed.link = href; } addConditionally(feed, "description", "subtitle", childs); const updated = fetch2("updated", childs); if (updated) { feed.updated = new Date(updated); } addConditionally(feed, "author", "email", childs, true); return feed; } function getRssFeed(feedRoot) { const childs = getOneElement("channel", feedRoot.children)?.children ?? []; const feed = { type: feedRoot.name.substr(0, 3), id: "", items: getElementsByTagName("item", feedRoot.children).map((item) => { const { children } = item; const entry = { media: getMediaElements(children) }; addConditionally(entry, "id", "guid", children); addConditionally(entry, "title", "title", children); addConditionally(entry, "link", "link", children); addConditionally(entry, "description", "description", children); const pubDate = fetch2("pubDate", children) || fetch2("dc:date", children); if (pubDate) entry.pubDate = new Date(pubDate); return entry; }) }; addConditionally(feed, "title", "title", childs); addConditionally(feed, "link", "link", childs); addConditionally(feed, "description", "description", childs); const updated = fetch2("lastBuildDate", childs); if (updated) { feed.updated = new Date(updated); } addConditionally(feed, "author", "managingEditor", childs, true); return feed; } function getMediaElements(where) { return getElementsByTagName("media:content", where).map((element) => { const { attribs } = element; const media = { medium: attribs["medium"], isDefault: !!attribs["isDefault"] }; for (const attrib of MEDIA_KEYS_STRING) { if (attribs[attrib]) { media[attrib] = attribs[attrib]; } } for (const attrib of MEDIA_KEYS_INT) { if (attribs[attrib]) { media[attrib] = Number.parseInt(attribs[attrib], 10); } } if (attribs["expression"]) { media.expression = attribs["expression"]; } return media; }); } function getOneElement(tagName, node) { return getElementsByTagName(tagName, node, true, 1)[0]; } function fetch2(tagName, where, recurse = false) { return textContent(getElementsByTagName(tagName, where, recurse, 1)).trim(); } function addConditionally(object, property, tagName, where, recurse = false) { const value = fetch2(tagName, where, recurse); if (value) object[property] = value; } function isValidFeed(value) { return value === "rss" || value === "feed" || value === "rdf:RDF"; } var MEDIA_KEYS_STRING, MEDIA_KEYS_INT; var init_feeds = __esm({ "node_modules/domutils/dist/feeds.js"() { init_define_import_meta_env(); init_legacy(); init_stringify(); MEDIA_KEYS_STRING = ["url", "type", "lang"]; MEDIA_KEYS_INT = [ "fileSize", "bitrate", "framerate", "samplingrate", "channels", "duration", "height", "width" ]; } }); // node_modules/domutils/dist/helpers.js function removeSubsets(nodes) { let index2 = nodes.length; while (--index2 >= 0) { const node = nodes[index2]; if (index2 > 0 && nodes.lastIndexOf(node, index2 - 1) >= 0) { nodes.splice(index2, 1); continue; } for (let ancestor = node.parent; ancestor; ancestor = ancestor.parent) { if (nodes.includes(ancestor)) { nodes.splice(index2, 1); break; } } } return nodes; } function compareDocumentPosition(nodeA, nodeB) { const aParents = []; const bParents = []; if (nodeA === nodeB) { return 0; } let current = hasChildren(nodeA) ? nodeA : nodeA.parent; while (current) { aParents.unshift(current); current = current.parent; } current = hasChildren(nodeB) ? nodeB : nodeB.parent; while (current) { bParents.unshift(current); current = current.parent; } const maxIndex = Math.min(aParents.length, bParents.length); let index2 = 0; while (index2 < maxIndex && aParents[index2] === bParents[index2]) { index2++; } if (index2 === 0) { return DocumentPosition.DISCONNECTED; } const sharedParent = aParents[index2 - 1]; const siblings = sharedParent.children; const aSibling = aParents[index2]; const bSibling = bParents[index2]; if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { if (sharedParent === nodeB) { return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY; } return DocumentPosition.FOLLOWING; } if (sharedParent === nodeA) { return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS; } return DocumentPosition.PRECEDING; } function uniqueSort(nodes) { nodes = nodes.filter((node, index2, array) => !array.includes(node, index2 + 1)); nodes.sort((a, b) => { const relative = compareDocumentPosition(a, b); if (relative & DocumentPosition.PRECEDING) { return -1; } if (relative & DocumentPosition.FOLLOWING) { return 1; } return 0; }); return nodes; } var DocumentPosition; var init_helpers = __esm({ "node_modules/domutils/dist/helpers.js"() { init_define_import_meta_env(); init_dist4(); (function(DocumentPosition2) { DocumentPosition2[DocumentPosition2["DISCONNECTED"] = 1] = "DISCONNECTED"; DocumentPosition2[DocumentPosition2["PRECEDING"] = 2] = "PRECEDING"; DocumentPosition2[DocumentPosition2["FOLLOWING"] = 4] = "FOLLOWING"; DocumentPosition2[DocumentPosition2["CONTAINS"] = 8] = "CONTAINS"; DocumentPosition2[DocumentPosition2["CONTAINED_BY"] = 16] = "CONTAINED_BY"; })(DocumentPosition || (DocumentPosition = {})); } }); // node_modules/domutils/dist/manipulation.js function removeElement(element) { if (element.prev) element.prev.next = element.next; if (element.next) element.next.prev = element.prev; if (element.parent) { const childs = element.parent.children; const childsIndex = childs.lastIndexOf(element); if (childsIndex !== -1) { childs.splice(childsIndex, 1); } } element.next = null; element.prev = null; element.parent = null; } function replaceElement(element, replacement) { replacement.prev = element.prev; if (replacement.prev) { replacement.prev.next = replacement; } replacement.next = element.next; if (replacement.next) { replacement.next.prev = replacement; } replacement.parent = element.parent; if (replacement.parent) { const { children } = replacement.parent; const elementIndex = children.lastIndexOf(element); if (elementIndex === -1) { return; } children[elementIndex] = replacement; element.parent = null; } } function appendChild(parent, child) { removeElement(child); child.next = null; child.parent = parent; if (parent.children.push(child) > 1) { const sibling = parent.children[parent.children.length - 2]; sibling.next = child; child.prev = sibling; } else { child.prev = null; } } function append(element, next) { removeElement(next); const { parent } = element; const currentNext = element.next; next.next = currentNext; next.prev = element; element.next = next; next.parent = parent; if (currentNext) { currentNext.prev = next; if (parent) { const childs = parent.children; childs.splice(childs.lastIndexOf(currentNext), 0, next); } } else if (parent) { parent.children.push(next); } } function prependChild(parent, child) { removeElement(child); child.parent = parent; child.prev = null; if (parent.children.unshift(child) === 1) { child.next = null; } else { const sibling = parent.children[1]; sibling.prev = child; child.next = sibling; } } function prepend(element, previous) { removeElement(previous); const { parent } = element; if (parent) { const childs = parent.children; childs.splice(childs.indexOf(element), 0, previous); } if (element.prev) { element.prev.next = previous; } previous.parent = parent; previous.prev = element.prev; previous.next = element; element.prev = previous; } var init_manipulation = __esm({ "node_modules/domutils/dist/manipulation.js"() { init_define_import_meta_env(); } }); // node_modules/domutils/dist/traversal.js function getChildren(element) { return hasChildren(element) ? element.children : []; } function getParent(element) { return element.parent || null; } function getSiblings(element) { const parent = getParent(element); if (parent != null) return getChildren(parent); const siblings = [element]; let { prev, next } = element; while (prev != null) { siblings.unshift(prev); ({ prev } = prev); } while (next != null) { siblings.push(next); ({ next } = next); } return siblings; } function getAttributeValue(element, name) { const { attribs } = element; return attribs?.[name]; } function hasAttrib(element, name) { const { attribs } = element; return attribs != null && Object.hasOwn(attribs, name) && attribs[name] != null; } function getName(element) { return element.name; } function nextElementSibling(element) { let { next } = element; while (next !== null && !isTag2(next)) ({ next } = next); return next; } function prevElementSibling(element) { let { prev } = element; while (prev !== null && !isTag2(prev)) ({ prev } = prev); return prev; } var init_traversal = __esm({ "node_modules/domutils/dist/traversal.js"() { init_define_import_meta_env(); init_dist4(); } }); // node_modules/domutils/dist/index.js var dist_exports2 = {}; __export(dist_exports2, { DocumentPosition: () => DocumentPosition, append: () => append, appendChild: () => appendChild, compareDocumentPosition: () => compareDocumentPosition, existsOne: () => existsOne, filter: () => filter, find: () => find, findAll: () => findAll, findOne: () => findOne, getAttributeValue: () => getAttributeValue, getChildren: () => getChildren, getElementById: () => getElementById, getElements: () => getElements, getElementsByClassName: () => getElementsByClassName, getElementsByTagName: () => getElementsByTagName, getElementsByTagType: () => getElementsByTagType, getFeed: () => getFeed, getInnerHTML: () => getInnerHTML, getName: () => getName, getOuterHTML: () => getOuterHTML, getParent: () => getParent, getSiblings: () => getSiblings, getText: () => getText, hasAttrib: () => hasAttrib, innerText: () => innerText, nextElementSibling: () => nextElementSibling, prepend: () => prepend, prependChild: () => prependChild, prevElementSibling: () => prevElementSibling, removeElement: () => removeElement, removeSubsets: () => removeSubsets, replaceElement: () => replaceElement, testElement: () => testElement, textContent: () => textContent, uniqueSort: () => uniqueSort }); var init_dist9 = __esm({ "node_modules/domutils/dist/index.js"() { init_define_import_meta_env(); init_feeds(); init_helpers(); init_legacy(); init_manipulation(); init_querying(); init_stringify(); init_traversal(); } }); // node_modules/css-select/dist/attributes.js function escapeRegex(value) { return value.replace(reChars, "\\$&"); } function shouldIgnoreCase(selector, options) { return typeof selector.ignoreCase === "boolean" ? selector.ignoreCase : selector.ignoreCase === "quirks" ? !!options.quirksMode : !options.xmlMode && caseInsensitiveAttributes.has(selector.name); } var reChars, whitespaceRe, caseInsensitiveAttributes, attributeRules; var init_attributes = __esm({ "node_modules/css-select/dist/attributes.js"() { init_define_import_meta_env(); init_dist(); reChars = /[-[\]{}()*+?.,\\^$|#\s]/g; whitespaceRe = /\s/; caseInsensitiveAttributes = /* @__PURE__ */ new Set([ "accept", "accept-charset", "align", "alink", "axis", "bgcolor", "charset", "checked", "clear", "codetype", "color", "compact", "declare", "defer", "dir", "direction", "disabled", "enctype", "face", "frame", "hreflang", "http-equiv", "lang", "language", "link", "media", "method", "multiple", "nohref", "noresize", "noshade", "nowrap", "readonly", "rel", "rev", "rules", "scope", "scrolling", "selected", "shape", "target", "text", "type", "valign", "valuetype", "vlink" ]); attributeRules = { equals(next, data, options) { const { adapter } = options; const { name } = data; let { value } = data; if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return (element) => { const attribute = adapter.getAttributeValue(element, name); return attribute != null && attribute.length === value.length && attribute.toLowerCase() === value && next(element); }; } return (element) => adapter.getAttributeValue(element, name) === value && next(element); }, hyphen(next, data, options) { const { adapter } = options; const { name } = data; let { value } = data; const { length } = value; if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return function hyphenIC(element) { const attribute = adapter.getAttributeValue(element, name); return attribute != null && (attribute.length === length || attribute.charAt(length) === "-") && attribute.substr(0, length).toLowerCase() === value && next(element); }; } return function hyphen(element) { const attribute = adapter.getAttributeValue(element, name); return attribute != null && (attribute.length === length || attribute.charAt(length) === "-") && attribute.substr(0, length) === value && next(element); }; }, element(next, data, options) { const { adapter } = options; const { name, value } = data; if (whitespaceRe.test(value)) { return falseFunc; } const regex = new RegExp(`(?:^|\\s)${escapeRegex(value)}(?:$|\\s)`, shouldIgnoreCase(data, options) ? "i" : ""); return function element(node) { const attribute = adapter.getAttributeValue(node, name); return attribute != null && attribute.length >= value.length && regex.test(attribute) && next(node); }; }, exists(next, { name }, { adapter }) { return (element) => adapter.hasAttrib(element, name) && next(element); }, start(next, data, options) { const { adapter } = options; const { name } = data; let { value } = data; const { length } = value; if (length === 0) { return falseFunc; } if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return (element) => { const attribute = adapter.getAttributeValue(element, name); return attribute != null && attribute.length >= length && attribute.substr(0, length).toLowerCase() === value && next(element); }; } return (element) => !!adapter.getAttributeValue(element, name)?.startsWith(value) && next(element); }, end(next, data, options) { const { adapter } = options; const { name } = data; let { value } = data; const length = -value.length; if (length === 0) { return falseFunc; } if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return (element) => adapter.getAttributeValue(element, name)?.substr(length).toLowerCase() === value && next(element); } return (element) => !!adapter.getAttributeValue(element, name)?.endsWith(value) && next(element); }, any(next, data, options) { const { adapter } = options; const { name, value } = data; if (value === "") { return falseFunc; } if (shouldIgnoreCase(data, options)) { const regex = new RegExp(escapeRegex(value), "i"); return function anyIC(element) { const attribute = adapter.getAttributeValue(element, name); return attribute != null && attribute.length >= value.length && regex.test(attribute) && next(element); }; } return (element) => !!adapter.getAttributeValue(element, name)?.includes(value) && next(element); }, not(next, data, options) { const { adapter } = options; const { name } = data; let { value } = data; if (value === "") { return (element) => !!adapter.getAttributeValue(element, name) && next(element); } if (shouldIgnoreCase(data, options)) { value = value.toLowerCase(); return (element) => { const attribute = adapter.getAttributeValue(element, name); return (attribute == null || attribute.length !== value.length || attribute.toLowerCase() !== value) && next(element); }; } return (element) => adapter.getAttributeValue(element, name) !== value && next(element); } }; } }); // node_modules/css-select/dist/helpers/querying.js function findAll2(query, nodes, options) { const { adapter, xmlMode = false } = options; const result = []; const nodeStack = [nodes]; const indexStack = [0]; for (; ; ) { if (indexStack[0] >= nodeStack[0].length) { if (nodeStack.length === 1) { return result; } nodeStack.shift(); indexStack.shift(); continue; } const element = nodeStack[0][indexStack[0]++]; if (!adapter.isTag(element)) { continue; } if (query(element)) { result.push(element); } if (xmlMode || adapter.getName(element) !== "template") { const children = adapter.getChildren(element); if (children.length > 0) { nodeStack.unshift(children); indexStack.unshift(0); } } } } function findOne2(query, nodes, options) { const { adapter, xmlMode = false } = options; const nodeStack = [nodes]; const indexStack = [0]; for (; ; ) { if (indexStack[0] >= nodeStack[0].length) { if (nodeStack.length === 1) { return null; } nodeStack.shift(); indexStack.shift(); continue; } const element = nodeStack[0][indexStack[0]++]; if (!adapter.isTag(element)) { continue; } if (query(element)) { return element; } if (xmlMode || adapter.getName(element) !== "template") { const children = adapter.getChildren(element); if (children.length > 0) { nodeStack.unshift(children); indexStack.unshift(0); } } } } function getNextSiblings(element, adapter) { const siblings = adapter.getSiblings(element); if (siblings.length <= 1) { return []; } const elementIndex = siblings.indexOf(element); if (elementIndex === -1 || elementIndex === siblings.length - 1) { return []; } return siblings.slice(elementIndex + 1).filter(adapter.isTag); } function getElementParent(node, adapter) { const parent = adapter.getParent(node); return parent != null && adapter.isTag(parent) ? parent : null; } var init_querying2 = __esm({ "node_modules/css-select/dist/helpers/querying.js"() { init_define_import_meta_env(); } }); // node_modules/css-select/dist/pseudo-selectors/aliases.js var textControl, aliases; var init_aliases = __esm({ "node_modules/css-select/dist/pseudo-selectors/aliases.js"() { init_define_import_meta_env(); textControl = "input:is([type=text i],[type=search i],[type=url i],[type=tel i],[type=email i],[type=password i],[type=date i],[type=month i],[type=week i],[type=time i],[type=datetime-local i],[type=number i])"; aliases = { // Links "any-link": ":is(a, area, link)[href]", link: ":any-link:not(:visited)", // Forms // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements disabled: `:is( :is(button, input, select, textarea, optgroup, option)[disabled], optgroup[disabled] > option, fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *) )`, enabled: ":is(button, input, select, textarea, optgroup, option, fieldset):not(:disabled)", checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], :selected)", required: ":is(input, select, textarea)[required]", optional: ":is(input, select, textarea):not([required])", "read-only": `[readonly]:is(textarea, ${textControl})`, "read-write": `:not([readonly]):is(textarea, ${textControl})`, // JQuery extensions /** * `:selected` matches option elements that have the `selected` attribute, * or are the first option element in a select element that does not have * the `multiple` attribute and does not have any option elements with the * `selected` attribute. * @see https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness */ selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", checkbox: "[type=checkbox]", file: "[type=file]", password: "[type=password]", radio: "[type=radio]", reset: "[type=reset]", image: "[type=image]", submit: "[type=submit]", parent: ":not(:empty)", header: ":is(h1, h2, h3, h4, h5, h6)", button: ":is(button, input[type=button])", input: ":is(input, textarea, select, button)", text: "input:is(:not([type!='']), [type=text])" }; } }); // node_modules/nth-check/dist/compile.js function compile(parsed) { const a = parsed[0]; const b = parsed[1] - 1; if (b < 0 && a <= 0) return falseFunc; if (a === -1) return (index2) => index2 <= b; if (a === 0) return (index2) => index2 === b; if (a === 1) return b < 0 ? trueFunc : (index2) => index2 >= b; const absA = Math.abs(a); const bModulo = (b % absA + absA) % absA; return a > 1 ? (index2) => index2 >= b && index2 % absA === bModulo : (index2) => index2 <= b && index2 % absA === bModulo; } var init_compile = __esm({ "node_modules/nth-check/dist/compile.js"() { init_define_import_meta_env(); init_dist(); } }); // node_modules/nth-check/dist/parse.js function parse2(formula) { formula = formula.trim().toLowerCase(); switch (formula) { case "even": { return [2, 0]; } case "odd": { return [2, 1]; } } let index2 = 0; let a = 0; let sign = readSign(); let number = readNumber(); if (index2 < formula.length && formula.charAt(index2) === "n") { index2++; a = sign * (number ?? 1); skipWhitespace(); if (index2 < formula.length) { sign = readSign(); skipWhitespace(); number = readNumber(); } else { sign = number = 0; } } if (number === null || index2 < formula.length) { throw new Error(`n-th rule couldn't be parsed ('${formula}')`); } return [a, sign * number]; function readSign() { switch (formula.charAt(index2)) { case "-": { index2++; return -1; } case "+": { index2++; break; } } return 1; } function readNumber() { const start = index2; let value = 0; while (index2 < formula.length && formula.charCodeAt(index2) >= ZERO && formula.charCodeAt(index2) <= NINE) { value = value * 10 + (formula.charCodeAt(index2) - ZERO); index2++; } return index2 === start ? null : value; } function skipWhitespace() { while (index2 < formula.length && whitespace.has(formula.charCodeAt(index2))) { index2++; } } } var whitespace, ZERO, NINE; var init_parse2 = __esm({ "node_modules/nth-check/dist/parse.js"() { init_define_import_meta_env(); whitespace = /* @__PURE__ */ new Set([9, 10, 12, 13, 32]); ZERO = "0".charCodeAt(0); NINE = "9".charCodeAt(0); } }); // node_modules/nth-check/dist/index.js function nthCheck(formula) { return compile(parse2(formula)); } var init_dist10 = __esm({ "node_modules/nth-check/dist/index.js"() { init_define_import_meta_env(); init_compile(); init_parse2(); } }); // node_modules/css-select/dist/helpers/cache.js function cacheParentResults(next, { adapter, cacheResults }, matches) { if (cacheResults === false || typeof WeakMap === "undefined") { return (element) => next(element) && matches(element); } const resultCache = /* @__PURE__ */ new WeakMap(); function addResultToCache(element) { const result = matches(element); resultCache.set(element, result); return result; } return function cachedMatcher(element) { if (!next(element)) { return false; } if (resultCache.has(element)) { return resultCache.get(element) ?? false; } let node = element; do { const parent = getElementParent(node, adapter); if (parent === null) { return addResultToCache(element); } node = parent; } while (!resultCache.has(node)); return resultCache.get(node) ? addResultToCache(element) : false; }; } var init_cache = __esm({ "node_modules/css-select/dist/helpers/cache.js"() { init_define_import_meta_env(); init_querying2(); } }); // node_modules/css-select/dist/helpers/options.js function copyOptions(options) { const { context: _, rootFunc: __, ...copied } = options; return copied; } var init_options = __esm({ "node_modules/css-select/dist/helpers/options.js"() { init_define_import_meta_env(); } }); // node_modules/css-select/dist/pseudo-selectors/filters.js function extendedFilter(tag, range) { if (range[0] !== "*" && range[0] !== tag[0]) return false; let tagIndex = 1; for (let rangeIndex = 1; rangeIndex < range.length; rangeIndex++) { if (range[rangeIndex] === "*") continue; while (tagIndex < tag.length && tag[tagIndex] !== range[rangeIndex]) { if (tag[tagIndex++].length <= 1) return false; } if (tagIndex >= tag.length) return false; tagIndex++; } return true; } function compileNth(reverse, ofType) { return function nth(next, rule, options, context2, compileToken2) { const { adapter, equals } = options; const ofMatch = ofType ? null : rule.match(nthOfRegex); const nthCheck2 = nthCheck(ofMatch ? ofMatch[1].trim() : rule); if (nthCheck2 === falseFunc) return falseFunc; const ofSelector = ofMatch && compileToken2 ? compileToken2(parse(ofMatch[2].trim()), copyOptions(options), context2) : void 0; if (ofSelector === falseFunc) return falseFunc; if (nthCheck2 === trueFunc && !ofSelector) { return (element) => getElementParent(element, adapter) !== null && next(element); } const shouldCount = ofSelector ? (_element, sibling) => ofSelector(sibling) : ofType ? (element, sibling) => adapter.getName(sibling) === adapter.getName(element) : trueFunc; if (reverse) { return function nthLast(element) { if (ofSelector && !ofSelector(element)) return false; const siblings = adapter.getSiblings(element); let pos = 0; for (let index2 = siblings.length - 1; index2 >= 0; index2--) { const sibling = siblings[index2]; if (equals(element, sibling)) break; if (adapter.isTag(sibling) && shouldCount(element, sibling)) pos++; } return nthCheck2(pos) && next(element); }; } return function nth2(element) { if (ofSelector && !ofSelector(element)) return false; const siblings = adapter.getSiblings(element); let pos = 0; for (const sibling of siblings) { if (equals(element, sibling)) break; if (adapter.isTag(sibling) && shouldCount(element, sibling)) pos++; } return nthCheck2(pos) && next(element); }; }; } function dynamicStatePseudo(name) { return function dynamicPseudo(next, _rule, { adapter }) { const filterFunction = adapter[name]; if (typeof filterFunction !== "function") { return falseFunc; } return function active(element) { return filterFunction(element) && next(element); }; }; } var nthOfRegex, filters; var init_filters = __esm({ "node_modules/css-select/dist/pseudo-selectors/filters.js"() { init_define_import_meta_env(); init_dist(); init_dist2(); init_dist10(); init_cache(); init_options(); init_querying2(); nthOfRegex = /^(.+?)\s+of\s+(.+)$/is; filters = { contains(next, text, options) { const { getText: getText2 } = options.adapter; return cacheParentResults(next, options, (element) => getText2(element).includes(text)); }, icontains(next, text, options) { const itext = text.toLowerCase(); const { getText: getText2 } = options.adapter; return cacheParentResults(next, options, (element) => getText2(element).toLowerCase().includes(itext)); }, // Location specific methods "nth-child": compileNth(false, false), "nth-last-child": compileNth(true, false), "nth-of-type": compileNth(false, true), "nth-last-of-type": compileNth(true, true), // TODO determine the actual root element root(next, _rule, { adapter }) { return (element) => getElementParent(element, adapter) === null && next(element); }, scope(next, rule, options, context2) { const { equals } = options; if (!context2 || context2.length === 0) { return filters["root"](next, rule, options); } if (context2.length === 1) { return (element) => equals(context2[0], element) && next(element); } return (element) => context2.includes(element) && next(element); }, lang(next, code, { adapter }) { const ranges = code.split(",").map((r) => r.trim()).filter((r) => r.length > 0).map((r) => r.replace(/^['"]|['"]$/g, "").toLowerCase().split("-")); return function lang(element) { let node = element; while (node != null) { const value = adapter.getAttributeValue(node, "xml:lang") ?? adapter.getAttributeValue(node, "lang"); if (value != null) { if (!value) { return ranges.some((r) => r[0] === "") && next(element); } const tag = value.toLowerCase().split("-"); return ranges.some((r) => extendedFilter(tag, r)) && next(element); } const parent = adapter.getParent(node); node = parent != null && adapter.isTag(parent) ? parent : null; } return ranges.some((r) => r[0] === "") && next(element); }; }, hover: dynamicStatePseudo("isHovered"), visited: dynamicStatePseudo("isVisited"), active: dynamicStatePseudo("isActive") }; } }); // node_modules/css-select/dist/pseudo-selectors/pseudos.js function verifyPseudoArguments(pseudoClassCondition, name, subselect, argumentIndex) { if (subselect === null) { if (pseudoClassCondition.length > argumentIndex) { throw new Error(`Pseudo-class :${name} requires an argument`); } } else if (pseudoClassCondition.length === argumentIndex) { throw new Error(`Pseudo-class :${name} doesn't have any arguments`); } } var isDocumentWhiteSpace, pseudos; var init_pseudos = __esm({ "node_modules/css-select/dist/pseudo-selectors/pseudos.js"() { init_define_import_meta_env(); isDocumentWhiteSpace = /^[ \t\r\n]*$/; pseudos = { empty(element, { adapter }) { const children = adapter.getChildren(element); return ( // First, make sure the tag does not have any element children. children.every((element2) => !adapter.isTag(element2)) && // Then, check that the text content is only whitespace. children.every((element2) => ( // FIXME: `getText` call is potentially expensive. isDocumentWhiteSpace.test(adapter.getText(element2)) )) ); }, "first-child"(element, { adapter, equals }) { if (adapter.prevElementSibling) { return adapter.prevElementSibling(element) == null; } const firstChild = adapter.getSiblings(element).find((sibling) => adapter.isTag(sibling)); return firstChild != null && equals(element, firstChild); }, "last-child"(element, { adapter, equals }) { const siblings = adapter.getSiblings(element); for (let index2 = siblings.length - 1; index2 >= 0; index2--) { if (equals(element, siblings[index2])) { return true; } if (adapter.isTag(siblings[index2])) { break; } } return false; }, "first-of-type"(element, { adapter, equals }) { const siblings = adapter.getSiblings(element); const elementName = adapter.getName(element); for (const currentSibling of siblings) { if (equals(element, currentSibling)) { return true; } if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elementName) { break; } } return false; }, "last-of-type"(element, { adapter, equals }) { const siblings = adapter.getSiblings(element); const elementName = adapter.getName(element); for (let index2 = siblings.length - 1; index2 >= 0; index2--) { const currentSibling = siblings[index2]; if (equals(element, currentSibling)) { return true; } if (adapter.isTag(currentSibling) && adapter.getName(currentSibling) === elementName) { break; } } return false; }, "only-of-type"(element, { adapter, equals }) { const elementName = adapter.getName(element); return adapter.getSiblings(element).every((sibling) => equals(element, sibling) || !adapter.isTag(sibling) || adapter.getName(sibling) !== elementName); }, "only-child"(element, { adapter, equals }) { return adapter.getSiblings(element).every((sibling) => equals(element, sibling) || !adapter.isTag(sibling)); } }; } }); // node_modules/css-select/dist/helpers/selectors.js function isTraversal2(token) { return token.type === "_flexibleDescendant" || isTraversal(token); } function sortRules(array) { const ratings = array.map(getQuality); for (let index2 = 1; index2 < array.length; index2++) { const procNew = ratings[index2]; if (procNew < 0) { continue; } for (let currentIndex = index2; currentIndex > 0 && procNew < ratings[currentIndex - 1]; currentIndex--) { const token = array[currentIndex]; array[currentIndex] = array[currentIndex - 1]; array[currentIndex - 1] = token; ratings[currentIndex] = ratings[currentIndex - 1]; ratings[currentIndex - 1] = procNew; } } } function getAttributeQuality(token) { switch (token.action) { case AttributeAction.Exists: { return 10; } case AttributeAction.Equals: { return token.name === "id" ? 9 : 8; } case AttributeAction.Not: { return 7; } case AttributeAction.Start: { return 6; } case AttributeAction.End: { return 6; } case AttributeAction.Any: { return 5; } case AttributeAction.Hyphen: { return 4; } case AttributeAction.Element: { return 3; } } } function getQuality(token) { switch (token.type) { case SelectorType.Universal: { return 50; } case SelectorType.Tag: { return 30; } case SelectorType.Attribute: { return Math.floor(getAttributeQuality(token) / // `ignoreCase` adds some overhead, half the result if applicable. (token.ignoreCase ? 2 : 1)); } case SelectorType.Pseudo: { return token.data ? token.name === "has" || token.name === "contains" || token.name === "icontains" ? ( // Expensive in any case — run as late as possible. 0 ) : Array.isArray(token.data) ? ( // Eg. `:is`, `:not` Math.max( // If we have traversals, try to avoid executing this selector 0, Math.min(...token.data.map((d) => Math.min(...d.map(getQuality)))) ) ) : 2 : 3; } default: { return -1; } } } function includesScopePseudo(t) { return t.type === SelectorType.Pseudo && (t.name === "scope" || Array.isArray(t.data) && t.data.some((data) => data.some(includesScopePseudo))); } var init_selectors = __esm({ "node_modules/css-select/dist/helpers/selectors.js"() { init_define_import_meta_env(); init_dist2(); } }); // node_modules/css-select/dist/pseudo-selectors/subselects.js function hasDependsOnCurrentElement(selector) { return selector.some((sel) => sel.length > 0 && (isTraversal2(sel[0]) || sel.some(includesScopePseudo))); } var PLACEHOLDER_ELEMENT, is, subselects; var init_subselects = __esm({ "node_modules/css-select/dist/pseudo-selectors/subselects.js"() { init_define_import_meta_env(); init_dist(); init_cache(); init_options(); init_querying2(); init_selectors(); PLACEHOLDER_ELEMENT = {}; is = (next, token, options, context2, compileToken2) => { const compiledToken = compileToken2(token, copyOptions(options), context2); return compiledToken === trueFunc ? next : compiledToken === falseFunc ? falseFunc : (element) => compiledToken(element) && next(element); }; subselects = { is, /** * `:matches` and `:where` are aliases for `:is`. */ matches: is, where: is, not(next, token, options, context2, compileToken2) { const compiledToken = compileToken2(token, copyOptions(options), context2); return compiledToken === falseFunc ? next : compiledToken === trueFunc ? falseFunc : (element) => !compiledToken(element) && next(element); }, has(next, subselect, options, _context, compileToken2) { const { adapter } = options; const copiedOptions = copyOptions(options); copiedOptions.relativeSelector = true; const context2 = subselect.some((s) => s.some(isTraversal2)) ? ( // Used as a placeholder. Will be replaced with the actual element. [PLACEHOLDER_ELEMENT] ) : void 0; const skipCache = hasDependsOnCurrentElement(subselect); const compiled = compileToken2(subselect, copiedOptions, context2); if (compiled === falseFunc) { return falseFunc; } if (context2 && compiled !== trueFunc) { return skipCache ? (element) => { if (!next(element)) { return false; } context2[0] = element; const childs = adapter.getChildren(element); return findOne2(compiled, compiled.shouldTestNextSiblings ? [ ...childs, ...getNextSiblings(element, adapter) ] : childs, options) !== null; } : cacheParentResults(next, options, (element) => { context2[0] = element; return findOne2(compiled, adapter.getChildren(element), options) !== null; }); } const hasOne = (element) => findOne2(compiled, adapter.getChildren(element), options) !== null; return skipCache ? (element) => next(element) && hasOne(element) : cacheParentResults(next, options, hasOne); } }; } }); // node_modules/css-select/dist/pseudo-selectors/index.js function compilePseudoSelector(next, selector, options, context2, compileToken2) { const { name, data } = selector; if (Array.isArray(data)) { if (!(name in subselects)) { throw new Error(`Unknown pseudo-class :${name}(${data})`); } return subselects[name](next, data, options, context2, compileToken2); } const userPseudo = options.pseudos?.[name]; const stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases[name]; if (typeof stringPseudo === "string") { if (data != null) { throw new Error(`Pseudo ${name} doesn't have any arguments`); } const alias = parse(stringPseudo); return subselects["is"](next, alias, options, context2, compileToken2); } if (typeof userPseudo === "function") { verifyPseudoArguments(userPseudo, name, data, 1); return (element) => userPseudo(element, data) && next(element); } if (name in filters) { return filters[name](next, data, options, context2, compileToken2); } if (name in pseudos) { const pseudo = pseudos[name]; verifyPseudoArguments(pseudo, name, data, 2); return (element) => pseudo(element, options, data) && next(element); } throw new Error(`Unknown pseudo-class :${name}`); } var init_pseudo_selectors = __esm({ "node_modules/css-select/dist/pseudo-selectors/index.js"() { init_define_import_meta_env(); init_dist2(); init_aliases(); init_filters(); init_pseudos(); init_subselects(); } }); // node_modules/css-select/dist/general.js function compileGeneralSelector(next, selector, options, context2, compileToken2, hasExpensiveSubselector) { const { adapter, equals, cacheResults } = options; switch (selector.type) { case SelectorType.PseudoElement: { throw new Error("Pseudo-elements are not supported by css-select"); } case SelectorType.ColumnCombinator: { throw new Error("Column combinators are not yet supported by css-select"); } case SelectorType.Attribute: { if (selector.namespace != null) { throw new Error("Namespaced attributes are not yet supported by css-select"); } if (!options.xmlMode || options.lowerCaseAttributeNames) { selector.name = selector.name.toLowerCase(); } return attributeRules[selector.action](next, selector, options); } case SelectorType.Pseudo: { return compilePseudoSelector(next, selector, options, context2, compileToken2); } // Tags case SelectorType.Tag: { if (selector.namespace != null) { throw new Error("Namespaced tag names are not yet supported by css-select"); } let { name } = selector; if (!options.xmlMode || options.lowerCaseTags) { name = name.toLowerCase(); } return function tag(element) { return adapter.getName(element) === name && next(element); }; } // Traversal case SelectorType.Descendant: { if (!hasExpensiveSubselector || cacheResults === false || typeof WeakMap === "undefined") { return function descendant(element) { let current = element; while (current = getElementParent(current, adapter)) { if (next(current)) { return true; } } return false; }; } const resultCache = /* @__PURE__ */ new WeakMap(); return function cachedDescendant(element) { let current = element; let result; while (current = getElementParent(current, adapter)) { const cached = resultCache.get(current); if (cached === void 0) { result ??= { matches: false }; result.matches = next(current); resultCache.set(current, result); if (result.matches) { return true; } } else { if (result) { result.matches = cached.matches; } return cached.matches; } } return false; }; } case "_flexibleDescendant": { return function flexibleDescendant(element) { let current = element; do { if (next(current)) { return true; } current = getElementParent(current, adapter); } while (current); return false; }; } case SelectorType.Parent: { return function parent(element) { return adapter.getChildren(element).some((element2) => adapter.isTag(element2) && next(element2)); }; } case SelectorType.Child: { return function child(element) { const parent = getElementParent(element, adapter); return parent !== null && next(parent); }; } case SelectorType.Sibling: { return function sibling(element) { const siblings = adapter.getSiblings(element); for (const currentSibling of siblings) { if (equals(element, currentSibling)) { break; } if (adapter.isTag(currentSibling) && next(currentSibling)) { return true; } } return false; }; } case SelectorType.Adjacent: { if (adapter.prevElementSibling) { return function adjacent(element) { const previous = adapter.prevElementSibling(element); return previous != null && next(previous); }; } return function adjacent(element) { const siblings = adapter.getSiblings(element); let lastElement; for (const currentSibling of siblings) { if (equals(element, currentSibling)) { break; } if (adapter.isTag(currentSibling)) { lastElement = currentSibling; } } return !!lastElement && next(lastElement); }; } case SelectorType.Universal: { if (selector.namespace != null && selector.namespace !== "*") { throw new Error("Namespaced universal selectors are not yet supported by css-select"); } return next; } } } var init_general = __esm({ "node_modules/css-select/dist/general.js"() { init_define_import_meta_env(); init_dist2(); init_attributes(); init_querying2(); init_pseudo_selectors(); } }); // node_modules/css-select/dist/compile.js function absolutize(token, { adapter }, context2) { const hasContext = !!context2?.every((element) => element === PLACEHOLDER_ELEMENT || adapter.isTag(element) && getElementParent(element, adapter) !== null); for (const t of token) { if (t.length > 0 && isTraversal2(t[0]) && t[0].type !== SelectorType.Descendant) { } else if (hasContext && !t.some(includesScopePseudo)) { t.unshift(DESCENDANT_TOKEN); } else { continue; } t.unshift(SCOPE_TOKEN); } } function compileToken(token, options, compilationContext) { for (const rules of token) { sortRules(rules); } const { context: context2 = compilationContext, rootFunc: rootFunction = trueFunc } = options; const isArrayContext = Array.isArray(context2); const finalContext = context2 && (Array.isArray(context2) ? context2 : [context2]); if (options.relativeSelector !== false) { absolutize(token, options, finalContext); } else if (token.some((t) => t.length > 0 && isTraversal2(t[0]))) { throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled"); } let shouldTestNextSiblings = false; let query = falseFunc; combineLoop: for (const rules of token) { if (rules.length >= 2) { const [first, second] = rules; if (first.type !== SelectorType.Pseudo || first.name !== "scope") { } else if (isArrayContext && second.type === SelectorType.Descendant) { rules[1] = FLEXIBLE_DESCENDANT_TOKEN; } else if (second.type === SelectorType.Adjacent || second.type === SelectorType.Sibling) { shouldTestNextSiblings = true; } } let next = rootFunction; let hasExpensiveSubselector = false; for (const rule of rules) { next = compileGeneralSelector(next, rule, options, finalContext, compileToken, hasExpensiveSubselector); const quality = getQuality(rule); if (quality === 0) { hasExpensiveSubselector = true; } if (next === falseFunc) { continue combineLoop; } } if (next === rootFunction) { return rootFunction; } query = query === falseFunc ? next : or(query, next); } query.shouldTestNextSiblings = shouldTestNextSiblings; return query; } function or(a, b) { return (element) => a(element) || b(element); } var DESCENDANT_TOKEN, FLEXIBLE_DESCENDANT_TOKEN, SCOPE_TOKEN; var init_compile2 = __esm({ "node_modules/css-select/dist/compile.js"() { init_define_import_meta_env(); init_dist(); init_dist2(); init_general(); init_querying2(); init_selectors(); init_subselects(); DESCENDANT_TOKEN = { type: SelectorType.Descendant }; FLEXIBLE_DESCENDANT_TOKEN = { type: "_flexibleDescendant" }; SCOPE_TOKEN = { type: SelectorType.Pseudo, name: "scope", data: null }; } }); // node_modules/css-select/dist/index.js var dist_exports4 = {}; __export(dist_exports4, { _compileUnsafe: () => _compileUnsafe, compile: () => compile2, default: () => dist_default2, is: () => is2, prepareContext: () => prepareContext, selectAll: () => selectAll, selectOne: () => selectOne }); function convertOptionFormats(options) { const finalOptions = options ?? defaultOptions; finalOptions.adapter ??= defaultOptions.adapter; finalOptions.equals ??= finalOptions.adapter?.equals ?? defaultEquals; return finalOptions; } function compile2(selector, options, context2) { const convertedOptions = convertOptionFormats(options); const next = _compileUnsafe(selector, convertedOptions, context2); return next === falseFunc ? falseFunc : (element) => convertedOptions.adapter.isTag(element) && next(element); } function _compileUnsafe(selector, options, context2) { return compileToken(typeof selector === "string" ? parse(selector) : selector, convertOptionFormats(options), context2); } function getSelectorFunction(searchFunction) { return function select(query, elements, options) { const convertedOptions = convertOptionFormats(options); if (typeof query !== "function") { query = _compileUnsafe(query, convertedOptions, elements); } const filteredElements = prepareContext(elements, convertedOptions.adapter, query.shouldTestNextSiblings); return searchFunction(query, filteredElements, convertedOptions); }; } function prepareContext(elements, adapter, shouldTestNextSiblings = false) { if (shouldTestNextSiblings) { elements = appendNextSiblings(elements, adapter); } return Array.isArray(elements) ? adapter.removeSubsets(elements) : adapter.getChildren(elements); } function appendNextSiblings(element, adapter) { const elements = Array.isArray(element) ? [...element] : [element]; const elementsLength = elements.length; for (let index2 = 0; index2 < elementsLength; index2++) { const nextSiblings = getNextSiblings(elements[index2], adapter); elements.push(...nextSiblings); } return elements; } function is2(element, query, options) { return (typeof query === "function" ? query : compile2(query, options))(element); } var defaultEquals, defaultOptions, selectAll, selectOne, dist_default2; var init_dist11 = __esm({ "node_modules/css-select/dist/index.js"() { init_define_import_meta_env(); init_dist(); init_dist2(); init_dist4(); init_dist9(); init_compile2(); init_querying2(); defaultEquals = (a, b) => a === b; defaultOptions = { adapter: { ...dist_exports2, isTag: isTag2 }, equals: defaultEquals }; selectAll = getSelectorFunction((query, elements, options) => query === falseFunc || !elements || elements.length === 0 ? [] : findAll2(query, elements, options)); selectOne = getSelectorFunction((query, elements, options) => query === falseFunc || !elements || elements.length === 0 ? null : findOne2(query, elements, options)); dist_default2 = selectAll; } }); // node_modules/linkedom/cjs/shared/matches.js var require_matches = __commonJS({ "node_modules/linkedom/cjs/shared/matches.js"(exports2) { "use strict"; init_define_import_meta_env(); var CSSselect = (init_dist11(), __toCommonJS(dist_exports4)); var { ELEMENT_NODE, TEXT_NODE } = require_constants(); var { ignoreCase } = require_utils4(); var { isArray } = Array; var isTag3 = ({ nodeType }) => nodeType === ELEMENT_NODE; var existsOne2 = (test, elements) => elements.some( (element) => isTag3(element) && (test(element) || existsOne2(test, getChildren2(element))) ); var getAttributeValue2 = (element, name) => name === "class" ? element.getAttributeNode("class")?.value ?? null : element.getAttribute(name); var getChildren2 = ({ childNodes }) => childNodes; var getName2 = (element) => { const { localName } = element; return ignoreCase(element) ? localName.toLowerCase() : localName; }; var getParent2 = ({ parentNode }) => parentNode; var getSiblings2 = (element) => { const { parentNode } = element; return parentNode ? getChildren2(parentNode) : element; }; var getText2 = (node) => { if (isArray(node)) return node.map(getText2).join(""); if (isTag3(node)) return getText2(getChildren2(node)); if (node.nodeType === TEXT_NODE) return node.data; return ""; }; var hasAttrib2 = (element, name) => element.hasAttribute(name); var removeSubsets2 = (nodes) => { let { length } = nodes; while (length--) { const node = nodes[length]; if (length && -1 < nodes.lastIndexOf(node, length - 1)) { nodes.splice(length, 1); continue; } for (let { parentNode } = node; parentNode; parentNode = parentNode.parentNode) { if (nodes.includes(parentNode)) { nodes.splice(length, 1); break; } } } return nodes; }; var findAll3 = (test, nodes) => { const matches2 = []; for (const node of nodes) { if (isTag3(node)) { if (test(node)) matches2.push(node); matches2.push(...findAll3(test, getChildren2(node))); } } return matches2; }; var findOne3 = (test, nodes) => { for (let node of nodes) if (test(node) || (node = findOne3(test, getChildren2(node)))) return node; return null; }; var adapter = { isTag: isTag3, existsOne: existsOne2, getAttributeValue: getAttributeValue2, getChildren: getChildren2, getName: getName2, getParent: getParent2, getSiblings: getSiblings2, getText: getText2, hasAttrib: hasAttrib2, removeSubsets: removeSubsets2, findAll: findAll3, findOne: findOne3 }; var prepareMatch = (element, selectors) => CSSselect.compile( selectors, { context: selectors.includes(":scope") ? element : void 0, xmlMode: !ignoreCase(element), adapter } ); exports2.prepareMatch = prepareMatch; var matches = (element, selectors) => CSSselect.is( element, selectors, { strict: true, context: selectors.includes(":scope") ? element : void 0, xmlMode: !ignoreCase(element), adapter } ); exports2.matches = matches; } }); // node_modules/linkedom/cjs/interface/text.js var require_text2 = __commonJS({ "node_modules/linkedom/cjs/interface/text.js"(exports2) { "use strict"; init_define_import_meta_env(); var { TEXT_NODE } = require_constants(); var { VALUE } = require_symbols(); var { escape: escape3 } = require_text_escaper(); var { CharacterData } = require_character_data(); var Text4 = class _Text extends CharacterData { constructor(ownerDocument, data = "") { super(ownerDocument, "#text", TEXT_NODE, data); } get wholeText() { const text = []; let { previousSibling, nextSibling } = this; while (previousSibling) { if (previousSibling.nodeType === TEXT_NODE) text.unshift(previousSibling[VALUE]); else break; previousSibling = previousSibling.previousSibling; } text.push(this[VALUE]); while (nextSibling) { if (nextSibling.nodeType === TEXT_NODE) text.push(nextSibling[VALUE]); else break; nextSibling = nextSibling.nextSibling; } return text.join(""); } cloneNode() { const { ownerDocument, [VALUE]: data } = this; return new _Text(ownerDocument, data); } toString() { return escape3(this[VALUE]); } }; exports2.Text = Text4; } }); // node_modules/linkedom/cjs/mixin/parent-node.js var require_parent_node = __commonJS({ "node_modules/linkedom/cjs/mixin/parent-node.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ATTRIBUTE_NODE, DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE, TEXT_NODE, NODE_END, CDATA_SECTION_NODE, COMMENT_NODE } = require_constants(); var { PRIVATE, END, NEXT, PREV, START, VALUE } = require_symbols(); var { prepareMatch } = require_matches(); var { previousSibling, nextSibling } = require_node4(); var { getEnd, knownAdjacent, knownBoundaries, knownSegment, knownSiblings, localCase } = require_utils4(); var { Node } = require_node3(); var { Text: Text4 } = require_text2(); var { NodeList } = require_node_list(); var { moCallback } = require_mutation_observer(); var { connectedCallback } = require_custom_element_registry(); var { nextElementSibling: nextElementSibling2 } = require_non_document_type_child_node(); var isNode = (node) => node instanceof Node; var insert = (parentNode, child, nodes) => { const { ownerDocument } = parentNode; for (const node of nodes) parentNode.insertBefore( isNode(node) ? node : new Text4(ownerDocument, node), child ); }; var ParentNode = class extends Node { constructor(ownerDocument, localName, nodeType) { super(ownerDocument, localName, nodeType); this[PRIVATE] = null; this[NEXT] = this[END] = { [NEXT]: null, [PREV]: this, [START]: this, nodeType: NODE_END, ownerDocument: this.ownerDocument, parentNode: null }; } get childNodes() { const childNodes = new NodeList(); let { firstChild } = this; while (firstChild) { childNodes.push(firstChild); firstChild = nextSibling(firstChild); } return childNodes; } get children() { const children = new NodeList(); let { firstElementChild } = this; while (firstElementChild) { children.push(firstElementChild); firstElementChild = nextElementSibling2(firstElementChild); } return children; } /** * @returns {NodeStruct | null} */ get firstChild() { let { [NEXT]: next, [END]: end } = this; while (next.nodeType === ATTRIBUTE_NODE) next = next[NEXT]; return next === end ? null : next; } /** * @returns {NodeStruct | null} */ get firstElementChild() { let { firstChild } = this; while (firstChild) { if (firstChild.nodeType === ELEMENT_NODE) return firstChild; firstChild = nextSibling(firstChild); } return null; } get lastChild() { const prev = this[END][PREV]; switch (prev.nodeType) { case NODE_END: return prev[START]; case ATTRIBUTE_NODE: return null; } return prev === this ? null : prev; } get lastElementChild() { let { lastChild } = this; while (lastChild) { if (lastChild.nodeType === ELEMENT_NODE) return lastChild; lastChild = previousSibling(lastChild); } return null; } get childElementCount() { return this.children.length; } prepend(...nodes) { insert(this, this.firstChild, nodes); } append(...nodes) { insert(this, this[END], nodes); } replaceChildren(...nodes) { let { [NEXT]: next, [END]: end } = this; while (next !== end && next.nodeType === ATTRIBUTE_NODE) next = next[NEXT]; while (next !== end) { const after = getEnd(next)[NEXT]; next.remove(); next = after; } if (nodes.length) insert(this, end, nodes); } getElementsByClassName(className) { const elements = new NodeList(); let { [NEXT]: next, [END]: end } = this; while (next !== end) { if (next.nodeType === ELEMENT_NODE && next.hasAttribute("class") && next.classList.has(className)) elements.push(next); next = next[NEXT]; } return elements; } getElementsByTagName(tagName) { const elements = new NodeList(); let { [NEXT]: next, [END]: end } = this; while (next !== end) { if (next.nodeType === ELEMENT_NODE && (next.localName === tagName || localCase(next) === tagName)) elements.push(next); next = next[NEXT]; } return elements; } querySelector(selectors) { const matches = prepareMatch(this, selectors); let { [NEXT]: next, [END]: end } = this; while (next !== end) { if (next.nodeType === ELEMENT_NODE && matches(next)) return next; next = next.nodeType === ELEMENT_NODE && next.localName === "template" ? next[END] : next[NEXT]; } return null; } querySelectorAll(selectors) { const matches = prepareMatch(this, selectors); const elements = new NodeList(); let { [NEXT]: next, [END]: end } = this; while (next !== end) { if (next.nodeType === ELEMENT_NODE && matches(next)) elements.push(next); next = next.nodeType === ELEMENT_NODE && next.localName === "template" ? next[END] : next[NEXT]; } return elements; } appendChild(node) { return this.insertBefore(node, this[END]); } contains(node) { let parentNode = node; while (parentNode && parentNode !== this) parentNode = parentNode.parentNode; return parentNode === this; } insertBefore(node, before = null) { if (node === before) return node; if (node === this) throw new Error("unable to append a node to itself"); const next = before || this[END]; switch (node.nodeType) { case ELEMENT_NODE: node.remove(); node.parentNode = this; knownBoundaries(next[PREV], node, next); moCallback(node, null); connectedCallback(node); break; case DOCUMENT_FRAGMENT_NODE: { let { [PRIVATE]: parentNode, firstChild, lastChild } = node; if (firstChild) { knownSegment(next[PREV], firstChild, lastChild, next); knownAdjacent(node, node[END]); if (parentNode) parentNode.replaceChildren(); do { firstChild.parentNode = this; moCallback(firstChild, null); if (firstChild.nodeType === ELEMENT_NODE) connectedCallback(firstChild); } while (firstChild !== lastChild && (firstChild = nextSibling(firstChild))); } break; } case TEXT_NODE: case COMMENT_NODE: case CDATA_SECTION_NODE: node.remove(); /* eslint no-fallthrough:0 */ // this covers DOCUMENT_TYPE_NODE too default: node.parentNode = this; knownSiblings(next[PREV], node, next); moCallback(node, null); break; } return node; } normalize() { let { [NEXT]: next, [END]: end } = this; while (next !== end) { const { [NEXT]: $next, [PREV]: $prev, nodeType } = next; if (nodeType === TEXT_NODE) { if (!next[VALUE]) next.remove(); else if ($prev && $prev.nodeType === TEXT_NODE) { $prev.textContent += next.textContent; next.remove(); } } next = $next; } } removeChild(node) { if (node.parentNode !== this) throw new Error("node is not a child"); node.remove(); return node; } replaceChild(node, replaced) { const next = getEnd(replaced)[NEXT]; replaced.remove(); this.insertBefore(node, next); return replaced; } }; exports2.ParentNode = ParentNode; } }); // node_modules/linkedom/cjs/mixin/non-element-parent-node.js var require_non_element_parent_node = __commonJS({ "node_modules/linkedom/cjs/mixin/non-element-parent-node.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE } = require_constants(); var { END, NEXT } = require_symbols(); var { nonElementAsJSON } = require_jsdon(); var { ParentNode } = require_parent_node(); var NonElementParentNode = class extends ParentNode { getElementById(id) { let { [NEXT]: next, [END]: end } = this; while (next !== end) { if (next.nodeType === ELEMENT_NODE && next.id === id) return next; next = next[NEXT]; } return null; } cloneNode(deep) { const { ownerDocument, constructor } = this; const nonEPN = new constructor(ownerDocument); if (deep) { const { [END]: end } = nonEPN; for (const node of this.childNodes) nonEPN.insertBefore(node.cloneNode(deep), end); } return nonEPN; } toString() { const { childNodes, localName } = this; return `<${localName}>${childNodes.join("")}</${localName}>`; } toJSON() { const json2 = []; nonElementAsJSON(this, json2); return json2; } }; exports2.NonElementParentNode = NonElementParentNode; } }); // node_modules/linkedom/cjs/interface/document-fragment.js var require_document_fragment = __commonJS({ "node_modules/linkedom/cjs/interface/document-fragment.js"(exports2) { "use strict"; init_define_import_meta_env(); var { DOCUMENT_FRAGMENT_NODE } = require_constants(); var { NonElementParentNode } = require_non_element_parent_node(); var DocumentFragment = class extends NonElementParentNode { constructor(ownerDocument) { super(ownerDocument, "#document-fragment", DOCUMENT_FRAGMENT_NODE); } }; exports2.DocumentFragment = DocumentFragment; } }); // node_modules/linkedom/cjs/interface/document-type.js var require_document_type = __commonJS({ "node_modules/linkedom/cjs/interface/document-type.js"(exports2) { "use strict"; init_define_import_meta_env(); var { DOCUMENT_TYPE_NODE } = require_constants(); var { documentTypeAsJSON } = require_jsdon(); var { Node } = require_node3(); var DocumentType = class _DocumentType extends Node { constructor(ownerDocument, name, publicId = "", systemId = "") { super(ownerDocument, "#document-type", DOCUMENT_TYPE_NODE); this.name = name; this.publicId = publicId; this.systemId = systemId; } cloneNode() { const { ownerDocument, name, publicId, systemId } = this; return new _DocumentType(ownerDocument, name, publicId, systemId); } toString() { const { name, publicId, systemId } = this; const hasPublic = 0 < publicId.length; const str = [name]; if (hasPublic) str.push("PUBLIC", `"${publicId}"`); if (systemId.length) { if (!hasPublic) str.push("SYSTEM"); str.push(`"${systemId}"`); } return `<!DOCTYPE ${str.join(" ")}>`; } toJSON() { const json2 = []; documentTypeAsJSON(this, json2); return json2; } }; exports2.DocumentType = DocumentType; } }); // node_modules/linkedom/cjs/mixin/inner-html.js var require_inner_html = __commonJS({ "node_modules/linkedom/cjs/mixin/inner-html.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE, DOCUMENT_FRAGMENT_NODE } = require_constants(); var { CUSTOM_ELEMENTS } = require_symbols(); var { parseFromString } = require_parse_from_string(); var { ignoreCase } = require_utils4(); var getInnerHtml = (node) => node.childNodes.join(""); exports2.getInnerHtml = getInnerHtml; var setInnerHtml = (node, html) => { const { ownerDocument } = node; const { constructor } = ownerDocument; const document2 = new constructor(); document2[CUSTOM_ELEMENTS] = ownerDocument[CUSTOM_ELEMENTS]; const { childNodes } = parseFromString(document2, ignoreCase(node), html); node.replaceChildren(...childNodes.map(setOwnerDocument, ownerDocument)); }; exports2.setInnerHtml = setInnerHtml; function setOwnerDocument(node) { node.ownerDocument = this; switch (node.nodeType) { case ELEMENT_NODE: case DOCUMENT_FRAGMENT_NODE: node.childNodes.forEach(setOwnerDocument, this); break; } return node; } } }); // node_modules/uhyphen/cjs/index.js var require_cjs = __commonJS({ "node_modules/uhyphen/cjs/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = (camel) => camel.replace(/(([A-Z0-9])([A-Z0-9][a-z]))|(([a-z0-9]+)([A-Z]))/g, "$2$5-$3$6").toLowerCase(); } }); // node_modules/linkedom/cjs/dom/string-map.js var require_string_map = __commonJS({ "node_modules/linkedom/cjs/dom/string-map.js"(exports2) { "use strict"; init_define_import_meta_env(); var uhyphen = ((m) => ( /* c8 ignore start */ m.__esModule ? m.default : m ))(require_cjs()); var { setPrototypeOf } = require_object(); var refs = /* @__PURE__ */ new WeakMap(); var key = (name) => `data-${uhyphen(name)}`; var prop = (name) => name.slice(5).replace(/-([a-z])/g, (_, $1) => $1.toUpperCase()); var handler = { get(dataset, name) { if (name in dataset) return refs.get(dataset).getAttribute(key(name)); }, set(dataset, name, value) { dataset[name] = value; refs.get(dataset).setAttribute(key(name), value); return true; }, deleteProperty(dataset, name) { if (name in dataset) refs.get(dataset).removeAttribute(key(name)); return delete dataset[name]; } }; var DOMStringMap = class { /** * @param {Element} ref */ constructor(ref) { for (const { name, value } of ref.attributes) { if (/^data-/.test(name)) this[prop(name)] = value; } refs.set(this, ref); return new Proxy(this, handler); } }; exports2.DOMStringMap = DOMStringMap; setPrototypeOf(DOMStringMap.prototype, null); } }); // node_modules/linkedom/cjs/dom/token-list.js var require_token_list = __commonJS({ "node_modules/linkedom/cjs/dom/token-list.js"(exports2) { "use strict"; init_define_import_meta_env(); var { OWNER_ELEMENT } = require_symbols(); var { setAttribute } = require_attributes(); var { Attr } = require_attr(); var { add } = Set.prototype; var addTokens = (self2, tokens) => { for (const token of tokens) { if (token) add.call(self2, token); } }; var update = ({ [OWNER_ELEMENT]: ownerElement, value }) => { const attribute = ownerElement.getAttributeNode("class"); if (attribute) attribute.value = value; else setAttribute( ownerElement, new Attr(ownerElement.ownerDocument, "class", value) ); }; var DOMTokenList = class extends Set { constructor(ownerElement) { super(); this[OWNER_ELEMENT] = ownerElement; const attribute = ownerElement.getAttributeNode("class"); if (attribute) addTokens(this, attribute.value.split(/\s+/)); } get length() { return this.size; } get value() { return [...this].join(" "); } /** * @param {...string} tokens */ add(...tokens) { addTokens(this, tokens); update(this); } /** * @param {string} token */ contains(token) { return this.has(token); } /** * @param {...string} tokens */ remove(...tokens) { for (const token of tokens) this.delete(token); update(this); } /** * @param {string} token * @param {boolean?} force */ toggle(token, force) { if (this.has(token)) { if (force) return true; this.delete(token); update(this); } else if (force || arguments.length === 1) { super.add(token); update(this); return true; } return false; } /** * @param {string} token * @param {string} newToken */ replace(token, newToken) { if (this.has(token)) { this.delete(token); super.add(newToken); update(this); return true; } return false; } /** * @param {string} token */ supports() { return true; } }; exports2.DOMTokenList = DOMTokenList; } }); // node_modules/linkedom/cjs/interface/css-style-declaration.js var require_css_style_declaration = __commonJS({ "node_modules/linkedom/cjs/interface/css-style-declaration.js"(exports2) { "use strict"; init_define_import_meta_env(); var uhyphen = ((m) => ( /* c8 ignore start */ m.__esModule ? m.default : m ))(require_cjs()); var { CHANGED, PRIVATE, VALUE } = require_symbols(); var refs = /* @__PURE__ */ new WeakMap(); var getKeys = (style) => [...style.keys()].filter((key) => key !== PRIVATE); var updateKeys = (style) => { const attr = refs.get(style).getAttributeNode("style"); if (!attr || attr[CHANGED] || style.get(PRIVATE) !== attr) { style.clear(); if (attr) { style.set(PRIVATE, attr); for (const rule of attr[VALUE].split(/\s*;\s*/)) { let [key, ...rest] = rule.split(":"); if (rest.length > 0) { key = key.trim(); const value = rest.join(":").trim(); if (key && value) style.set(key, value); } } } } return attr; }; var handler = { get(style, name) { if (name in prototype) return style[name]; updateKeys(style); if (name === "length") return getKeys(style).length; if (/^\d+$/.test(name)) return getKeys(style)[name]; return style.get(uhyphen(name)) ?? ""; }, set(style, name, value) { if (name === "cssText") style[name] = value; else { let attr = updateKeys(style); if (value == null) style.delete(uhyphen(name)); else style.set(uhyphen(name), value); if (!attr) { const element = refs.get(style); attr = element.ownerDocument.createAttribute("style"); element.setAttributeNode(attr); style.set(PRIVATE, attr); } attr[CHANGED] = false; attr[VALUE] = style.toString(); } return true; } }; var CSSStyleDeclaration = class extends Map { constructor(element) { super(); refs.set(this, element); return new Proxy(this, handler); } get cssText() { return this.toString(); } set cssText(value) { refs.get(this).setAttribute("style", value); } getPropertyValue(name) { const self2 = this[PRIVATE]; return handler.get(self2, name); } setProperty(name, value) { const self2 = this[PRIVATE]; handler.set(self2, name, value); } removeProperty(name) { const self2 = this[PRIVATE]; handler.set(self2, name, null); } [Symbol.iterator]() { const self2 = this[PRIVATE]; updateKeys(self2); const keys = getKeys(self2); const { length } = keys; let i = 0; return { next() { const done = i === length; return { done, value: done ? null : keys[i++] }; } }; } get [PRIVATE]() { return this; } toString() { const self2 = this[PRIVATE]; updateKeys(self2); const cssText = []; self2.forEach(push, cssText); return cssText.join(";"); } }; exports2.CSSStyleDeclaration = CSSStyleDeclaration; var { prototype } = CSSStyleDeclaration; function push(value, key) { if (key !== PRIVATE) this.push(`${key}:${value}`); } } }); // node_modules/linkedom/cjs/interface/event.js var require_event = __commonJS({ "node_modules/linkedom/cjs/interface/event.js"(exports2) { "use strict"; init_define_import_meta_env(); var BUBBLING_PHASE = 3; var AT_TARGET = 2; var CAPTURING_PHASE = 1; var NONE = 0; function getCurrentTarget(ev) { return ev.currentTarget; } var GlobalEvent = class { static get BUBBLING_PHASE() { return BUBBLING_PHASE; } static get AT_TARGET() { return AT_TARGET; } static get CAPTURING_PHASE() { return CAPTURING_PHASE; } static get NONE() { return NONE; } constructor(type, eventInitDict = {}) { this.type = type; this.bubbles = !!eventInitDict.bubbles; this.cancelBubble = false; this._stopImmediatePropagationFlag = false; this.cancelable = !!eventInitDict.cancelable; this.eventPhase = this.NONE; this.timeStamp = Date.now(); this.defaultPrevented = false; this.originalTarget = null; this.returnValue = null; this.srcElement = null; this.target = null; this._path = []; } get BUBBLING_PHASE() { return BUBBLING_PHASE; } get AT_TARGET() { return AT_TARGET; } get CAPTURING_PHASE() { return CAPTURING_PHASE; } get NONE() { return NONE; } preventDefault() { this.defaultPrevented = true; } // simplified implementation, should be https://dom.spec.whatwg.org/#dom-event-composedpath composedPath() { return this._path.map(getCurrentTarget); } stopPropagation() { this.cancelBubble = true; } stopImmediatePropagation() { this.stopPropagation(); this._stopImmediatePropagationFlag = true; } }; exports2.Event = GlobalEvent; } }); // node_modules/linkedom/cjs/interface/named-node-map.js var require_named_node_map = __commonJS({ "node_modules/linkedom/cjs/interface/named-node-map.js"(exports2) { "use strict"; init_define_import_meta_env(); var NamedNodeMap = class extends Array { constructor(ownerElement) { super(); this.ownerElement = ownerElement; } getNamedItem(name) { return this.ownerElement.getAttributeNode(name); } setNamedItem(attr) { this.ownerElement.setAttributeNode(attr); this.unshift(attr); } removeNamedItem(name) { const item = this.getNamedItem(name); this.ownerElement.removeAttribute(name); this.splice(this.indexOf(item), 1); } item(index2) { return index2 < this.length ? this[index2] : null; } /* c8 ignore start */ getNamedItemNS(_, name) { return this.getNamedItem(name); } setNamedItemNS(_, attr) { return this.setNamedItem(attr); } removeNamedItemNS(_, name) { return this.removeNamedItem(name); } /* c8 ignore stop */ }; exports2.NamedNodeMap = NamedNodeMap; } }); // node_modules/linkedom/cjs/interface/shadow-root.js var require_shadow_root = __commonJS({ "node_modules/linkedom/cjs/interface/shadow-root.js"(exports2) { "use strict"; init_define_import_meta_env(); var { DOCUMENT_FRAGMENT_NODE } = require_constants(); var { getInnerHtml, setInnerHtml } = require_inner_html(); var { NonElementParentNode } = require_non_element_parent_node(); var ShadowRoot = class extends NonElementParentNode { constructor(host) { super(host.ownerDocument, "#shadow-root", DOCUMENT_FRAGMENT_NODE); this.host = host; } get innerHTML() { return getInnerHtml(this); } set innerHTML(html) { setInnerHtml(this, html); } }; exports2.ShadowRoot = ShadowRoot; } }); // node_modules/linkedom/cjs/interface/element.js var require_element = __commonJS({ "node_modules/linkedom/cjs/interface/element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ATTRIBUTE_NODE, BLOCK_ELEMENTS, CDATA_SECTION_NODE, COMMENT_NODE, ELEMENT_NODE, NODE_END, TEXT_NODE, SVG_NAMESPACE } = require_constants(); var { setAttribute, removeAttribute, numericAttribute, stringAttribute } = require_attributes(); var { CLASS_LIST, DATASET, STYLE, END, NEXT, PREV, START, MIME } = require_symbols(); var { htmlToFragment, ignoreCase, knownAdjacent, localCase, String: String2 } = require_utils4(); var { elementAsJSON } = require_jsdon(); var { matches, prepareMatch } = require_matches(); var { shadowRoots } = require_shadow_roots(); var { isConnected, parentElement, previousSibling, nextSibling } = require_node4(); var { previousElementSibling, nextElementSibling: nextElementSibling2 } = require_non_document_type_child_node(); var { before, after, replaceWith, remove } = require_child_node(); var { getInnerHtml, setInnerHtml } = require_inner_html(); var { ParentNode } = require_parent_node(); var { DOMStringMap } = require_string_map(); var { DOMTokenList } = require_token_list(); var { CSSStyleDeclaration } = require_css_style_declaration(); var { Event: Event2 } = require_event(); var { NamedNodeMap } = require_named_node_map(); var { ShadowRoot } = require_shadow_root(); var { NodeList } = require_node_list(); var { Attr } = require_attr(); var { Text: Text4 } = require_text2(); var { escape: escape3 } = require_text_escaper(); var attributesHandler = { get(target, key) { return key in target ? target[key] : target.find(({ name }) => name === key); } }; var create = (ownerDocument, element, localName) => { if ("ownerSVGElement" in element) { const svg = ownerDocument.createElementNS(SVG_NAMESPACE, localName); svg.ownerSVGElement = element.ownerSVGElement; return svg; } return ownerDocument.createElement(localName); }; var isVoid = ({ localName, ownerDocument }) => { return ownerDocument[MIME].voidElements.test(localName); }; var Element = class extends ParentNode { constructor(ownerDocument, localName) { super(ownerDocument, localName, ELEMENT_NODE); this[CLASS_LIST] = null; this[DATASET] = null; this[STYLE] = null; } // <Mixins> get isConnected() { return isConnected(this); } get parentElement() { return parentElement(this); } get previousSibling() { return previousSibling(this); } get nextSibling() { return nextSibling(this); } get namespaceURI() { return "http://www.w3.org/1999/xhtml"; } get previousElementSibling() { return previousElementSibling(this); } get nextElementSibling() { return nextElementSibling2(this); } before(...nodes) { before(this, nodes); } after(...nodes) { after(this, nodes); } replaceWith(...nodes) { replaceWith(this, nodes); } remove() { remove(this[PREV], this, this[END][NEXT]); } // </Mixins> // <specialGetters> get id() { return stringAttribute.get(this, "id"); } set id(value) { stringAttribute.set(this, "id", value); } get className() { return this.classList.value; } set className(value) { const { classList } = this; classList.clear(); classList.add(...String2(value).split(/\s+/)); } get nodeName() { return localCase(this); } get tagName() { return localCase(this); } get classList() { return this[CLASS_LIST] || (this[CLASS_LIST] = new DOMTokenList(this)); } get dataset() { return this[DATASET] || (this[DATASET] = new DOMStringMap(this)); } getBoundingClientRect() { return { x: 0, y: 0, bottom: 0, height: 0, left: 0, right: 0, top: 0, width: 0 }; } get nonce() { return stringAttribute.get(this, "nonce"); } set nonce(value) { stringAttribute.set(this, "nonce", value); } get style() { return this[STYLE] || (this[STYLE] = new CSSStyleDeclaration(this)); } get tabIndex() { return numericAttribute.get(this, "tabindex") || -1; } set tabIndex(value) { numericAttribute.set(this, "tabindex", value); } get slot() { return stringAttribute.get(this, "slot"); } set slot(value) { stringAttribute.set(this, "slot", value); } // </specialGetters> // <contentRelated> get innerText() { const text = []; let { [NEXT]: next, [END]: end } = this; while (next !== end) { if (next.nodeType === TEXT_NODE) { text.push(next.textContent.replace(/\s+/g, " ")); } else if (text.length && next[NEXT] != end && BLOCK_ELEMENTS.has(next.tagName)) { text.push("\n"); } next = next[NEXT]; } return text.join(""); } /** * @returns {String} */ get textContent() { const text = []; let { [NEXT]: next, [END]: end } = this; while (next !== end) { const nodeType = next.nodeType; if (nodeType === TEXT_NODE || nodeType === CDATA_SECTION_NODE) text.push(next.textContent); next = next[NEXT]; } return text.join(""); } set textContent(text) { this.replaceChildren(); if (text != null && text !== "") this.appendChild(new Text4(this.ownerDocument, text)); } get innerHTML() { return getInnerHtml(this); } set innerHTML(html) { setInnerHtml(this, html); } get outerHTML() { return this.toString(); } set outerHTML(html) { const template = this.ownerDocument.createElement(""); template.innerHTML = html; this.replaceWith(...template.childNodes); } // </contentRelated> // <attributes> get attributes() { const attributes = new NamedNodeMap(this); let next = this[NEXT]; while (next.nodeType === ATTRIBUTE_NODE) { attributes.push(next); next = next[NEXT]; } return new Proxy(attributes, attributesHandler); } focus() { this.dispatchEvent(new Event2("focus")); } getAttribute(name) { if (name === "class") return this.className; const attribute = this.getAttributeNode(name); return attribute && (ignoreCase(this) ? attribute.value : escape3(attribute.value)); } getAttributeNode(name) { let next = this[NEXT]; while (next.nodeType === ATTRIBUTE_NODE) { if (next.name === name) return next; next = next[NEXT]; } return null; } getAttributeNames() { const attributes = new NodeList(); let next = this[NEXT]; while (next.nodeType === ATTRIBUTE_NODE) { attributes.push(next.name); next = next[NEXT]; } return attributes; } hasAttribute(name) { return !!this.getAttributeNode(name); } hasAttributes() { return this[NEXT].nodeType === ATTRIBUTE_NODE; } removeAttribute(name) { if (name === "class" && this[CLASS_LIST]) this[CLASS_LIST].clear(); let next = this[NEXT]; while (next.nodeType === ATTRIBUTE_NODE) { if (next.name === name) { removeAttribute(this, next); return; } next = next[NEXT]; } } removeAttributeNode(attribute) { let next = this[NEXT]; while (next.nodeType === ATTRIBUTE_NODE) { if (next === attribute) { removeAttribute(this, next); return; } next = next[NEXT]; } } setAttribute(name, value) { if (name === "class") this.className = value; else { const attribute = this.getAttributeNode(name); if (attribute) attribute.value = value; else setAttribute(this, new Attr(this.ownerDocument, name, value)); } } setAttributeNode(attribute) { const { name } = attribute; const previously = this.getAttributeNode(name); if (previously !== attribute) { if (previously) this.removeAttributeNode(previously); const { ownerElement } = attribute; if (ownerElement) ownerElement.removeAttributeNode(attribute); setAttribute(this, attribute); } return previously; } toggleAttribute(name, force) { if (this.hasAttribute(name)) { if (!force) { this.removeAttribute(name); return false; } return true; } else if (force || arguments.length === 1) { this.setAttribute(name, ""); return true; } return false; } // </attributes> // <ShadowDOM> get shadowRoot() { if (shadowRoots.has(this)) { const { mode, shadowRoot } = shadowRoots.get(this); if (mode === "open") return shadowRoot; } return null; } attachShadow(init) { if (shadowRoots.has(this)) throw new Error("operation not supported"); const shadowRoot = new ShadowRoot(this); shadowRoots.set(this, { mode: init.mode, shadowRoot }); return shadowRoot; } // </ShadowDOM> // <selectors> matches(selectors) { return matches(this, selectors); } closest(selectors) { let parentElement2 = this; const matches2 = prepareMatch(parentElement2, selectors); while (parentElement2 && !matches2(parentElement2)) parentElement2 = parentElement2.parentElement; return parentElement2; } // </selectors> // <insertAdjacent> insertAdjacentElement(position, element) { const { parentElement: parentElement2 } = this; switch (position) { case "beforebegin": if (parentElement2) { parentElement2.insertBefore(element, this); break; } return null; case "afterbegin": this.insertBefore(element, this.firstChild); break; case "beforeend": this.insertBefore(element, null); break; case "afterend": if (parentElement2) { parentElement2.insertBefore(element, this.nextSibling); break; } return null; } return element; } insertAdjacentHTML(position, html) { this.insertAdjacentElement(position, htmlToFragment(this.ownerDocument, html)); } insertAdjacentText(position, text) { const node = this.ownerDocument.createTextNode(text); this.insertAdjacentElement(position, node); } // </insertAdjacent> cloneNode(deep = false) { const { ownerDocument, localName } = this; const addNext = (next2) => { next2.parentNode = parentNode; knownAdjacent($next, next2); $next = next2; }; const clone = create(ownerDocument, this, localName); let parentNode = clone, $next = clone; let { [NEXT]: next, [END]: prev } = this; while (next !== prev && (deep || next.nodeType === ATTRIBUTE_NODE)) { switch (next.nodeType) { case NODE_END: knownAdjacent($next, parentNode[END]); $next = parentNode[END]; parentNode = parentNode.parentNode; break; case ELEMENT_NODE: { const node = create(ownerDocument, next, next.localName); addNext(node); parentNode = node; break; } case ATTRIBUTE_NODE: { const attr = next.cloneNode(deep); attr.ownerElement = parentNode; addNext(attr); break; } case TEXT_NODE: case COMMENT_NODE: case CDATA_SECTION_NODE: addNext(next.cloneNode(deep)); break; } next = next[NEXT]; } knownAdjacent($next, clone[END]); return clone; } // <custom> toString() { const out = []; const { [END]: end } = this; let next = { [NEXT]: this }; let isOpened = false; do { next = next[NEXT]; switch (next.nodeType) { case ATTRIBUTE_NODE: { const attr = " " + next; switch (attr) { case " id": case " class": case " style": break; default: out.push(attr); } break; } case NODE_END: { const start = next[START]; if (isOpened) { if ("ownerSVGElement" in start) out.push(" />"); else if (isVoid(start)) out.push(ignoreCase(start) ? ">" : " />"); else out.push(`></${start.localName}>`); isOpened = false; } else out.push(`</${start.localName}>`); break; } case ELEMENT_NODE: if (isOpened) out.push(">"); if (next.toString !== this.toString) { out.push(next.toString()); next = next[END]; isOpened = false; } else { out.push(`<${next.localName}`); isOpened = true; } break; case TEXT_NODE: case COMMENT_NODE: case CDATA_SECTION_NODE: out.push((isOpened ? ">" : "") + next); isOpened = false; break; } } while (next !== end); return out.join(""); } toJSON() { const json2 = []; elementAsJSON(this, json2); return json2; } // </custom> /* c8 ignore start */ getAttributeNS(_, name) { return this.getAttribute(name); } getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); } hasAttributeNS(_, name) { return this.hasAttribute(name); } removeAttributeNS(_, name) { this.removeAttribute(name); } setAttributeNS(_, name, value) { this.setAttribute(name, value); } setAttributeNodeNS(attr) { return this.setAttributeNode(attr); } /* c8 ignore stop */ }; exports2.Element = Element; } }); // node_modules/linkedom/cjs/svg/element.js var require_element2 = __commonJS({ "node_modules/linkedom/cjs/svg/element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { Element } = require_element(); var { String: String2 } = require_utils4(); var classNames = /* @__PURE__ */ new WeakMap(); var handler = { get(target, name) { return target[name]; }, set(target, name, value) { target[name] = value; return true; } }; var SVGElement = class extends Element { constructor(ownerDocument, localName, ownerSVGElement = null) { super(ownerDocument, localName); this.ownerSVGElement = ownerSVGElement; } get className() { if (!classNames.has(this)) classNames.set(this, new Proxy({ baseVal: "", animVal: "" }, handler)); return classNames.get(this); } /* c8 ignore start */ set className(value) { const { classList } = this; classList.clear(); classList.add(...String2(value).split(/\s+/)); } /* c8 ignore stop */ get namespaceURI() { return "http://www.w3.org/2000/svg"; } getAttribute(name) { return name === "class" ? [...this.classList].join(" ") : super.getAttribute(name); } setAttribute(name, value) { if (name === "class") this.className = value; else if (name === "style") { const { className } = this; className.baseVal = className.animVal = value; } super.setAttribute(name, value); } }; exports2.SVGElement = SVGElement; } }); // node_modules/linkedom/cjs/shared/facades.js var require_facades = __commonJS({ "node_modules/linkedom/cjs/shared/facades.js"(exports2) { "use strict"; init_define_import_meta_env(); var { Attr: _Attr } = require_attr(); var { CharacterData: _CharacterData } = require_character_data(); var { CDATASection: _CDATASection } = require_cdata_section(); var { Comment: _Comment } = require_comment(); var { DocumentFragment: _DocumentFragment } = require_document_fragment(); var { DocumentType: _DocumentType } = require_document_type(); var { Element: _Element } = require_element(); var { Node: _Node } = require_node3(); var { ShadowRoot: _ShadowRoot } = require_shadow_root(); var { Text: _Text } = require_text2(); var { SVGElement: _SVGElement } = require_element2(); var { setPrototypeOf } = require_object(); var illegalConstructor = () => { throw new TypeError("Illegal constructor"); }; exports2.illegalConstructor = illegalConstructor; function Attr() { illegalConstructor(); } exports2.Attr = Attr; setPrototypeOf(Attr, _Attr); Attr.prototype = _Attr.prototype; function CDATASection() { illegalConstructor(); } exports2.CDATASection = CDATASection; setPrototypeOf(CDATASection, _CDATASection); CDATASection.prototype = _CDATASection.prototype; function CharacterData() { illegalConstructor(); } exports2.CharacterData = CharacterData; setPrototypeOf(CharacterData, _CharacterData); CharacterData.prototype = _CharacterData.prototype; function Comment4() { illegalConstructor(); } exports2.Comment = Comment4; setPrototypeOf(Comment4, _Comment); Comment4.prototype = _Comment.prototype; function DocumentFragment() { illegalConstructor(); } exports2.DocumentFragment = DocumentFragment; setPrototypeOf(DocumentFragment, _DocumentFragment); DocumentFragment.prototype = _DocumentFragment.prototype; function DocumentType() { illegalConstructor(); } exports2.DocumentType = DocumentType; setPrototypeOf(DocumentType, _DocumentType); DocumentType.prototype = _DocumentType.prototype; function Element() { illegalConstructor(); } exports2.Element = Element; setPrototypeOf(Element, _Element); Element.prototype = _Element.prototype; function Node() { illegalConstructor(); } exports2.Node = Node; setPrototypeOf(Node, _Node); Node.prototype = _Node.prototype; function ShadowRoot() { illegalConstructor(); } exports2.ShadowRoot = ShadowRoot; setPrototypeOf(ShadowRoot, _ShadowRoot); ShadowRoot.prototype = _ShadowRoot.prototype; function Text4() { illegalConstructor(); } exports2.Text = Text4; setPrototypeOf(Text4, _Text); Text4.prototype = _Text.prototype; function SVGElement() { illegalConstructor(); } exports2.SVGElement = SVGElement; setPrototypeOf(SVGElement, _SVGElement); SVGElement.prototype = _SVGElement.prototype; var Facades = { Attr, CDATASection, CharacterData, Comment: Comment4, DocumentFragment, DocumentType, Element, Node, ShadowRoot, Text: Text4, SVGElement }; exports2.Facades = Facades; } }); // node_modules/linkedom/cjs/html/element.js var require_element3 = __commonJS({ "node_modules/linkedom/cjs/html/element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { END, UPGRADE } = require_symbols(); var { booleanAttribute, stringAttribute } = require_attributes(); var { Event: Event2 } = require_event(); var { Element } = require_element(); var { Classes, customElements } = require_custom_element_registry(); var Level0 = /* @__PURE__ */ new WeakMap(); var level0 = { get(element, name) { return Level0.has(element) && Level0.get(element)[name] || null; }, set(element, name, value) { if (!Level0.has(element)) Level0.set(element, {}); const handlers = Level0.get(element); const type = name.slice(2); if (handlers[name]) element.removeEventListener(type, handlers[name], false); if (handlers[name] = value) element.addEventListener(type, value, false); } }; var HTMLElement2 = class extends Element { static get observedAttributes() { return []; } constructor(ownerDocument = null, localName = "") { super(ownerDocument, localName); const ownerLess = !ownerDocument; let options; if (ownerLess) { const { constructor: Class } = this; if (!Classes.has(Class)) throw new Error("unable to initialize this Custom Element"); ({ ownerDocument, localName, options } = Classes.get(Class)); } if (ownerDocument[UPGRADE]) { const { element, values } = ownerDocument[UPGRADE]; ownerDocument[UPGRADE] = null; for (const [key, value] of values) element[key] = value; return element; } if (ownerLess) { this.ownerDocument = this[END].ownerDocument = ownerDocument; this.localName = localName; customElements.set(this, { connected: false }); if (options.is) this.setAttribute("is", options.is); } } /* c8 ignore start */ /* TODO: what about these? offsetHeight offsetLeft offsetParent offsetTop offsetWidth */ blur() { this.dispatchEvent(new Event2("blur")); } click() { const clickEvent = new Event2("click", { bubbles: true, cancelable: true }); clickEvent.button = 0; this.dispatchEvent(clickEvent); } // Boolean getters get accessKeyLabel() { const { accessKey } = this; return accessKey && `Alt+Shift+${accessKey}`; } get isContentEditable() { return this.hasAttribute("contenteditable"); } // Boolean Accessors get contentEditable() { return booleanAttribute.get(this, "contenteditable"); } set contentEditable(value) { booleanAttribute.set(this, "contenteditable", value); } get draggable() { return booleanAttribute.get(this, "draggable"); } set draggable(value) { booleanAttribute.set(this, "draggable", value); } get hidden() { return booleanAttribute.get(this, "hidden"); } set hidden(value) { booleanAttribute.set(this, "hidden", value); } get spellcheck() { return booleanAttribute.get(this, "spellcheck"); } set spellcheck(value) { booleanAttribute.set(this, "spellcheck", value); } // String Accessors get accessKey() { return stringAttribute.get(this, "accesskey"); } set accessKey(value) { stringAttribute.set(this, "accesskey", value); } get dir() { return stringAttribute.get(this, "dir"); } set dir(value) { stringAttribute.set(this, "dir", value); } get lang() { return stringAttribute.get(this, "lang"); } set lang(value) { stringAttribute.set(this, "lang", value); } get title() { return stringAttribute.get(this, "title"); } set title(value) { stringAttribute.set(this, "title", value); } // DOM Level 0 get onabort() { return level0.get(this, "onabort"); } set onabort(value) { level0.set(this, "onabort", value); } get onblur() { return level0.get(this, "onblur"); } set onblur(value) { level0.set(this, "onblur", value); } get oncancel() { return level0.get(this, "oncancel"); } set oncancel(value) { level0.set(this, "oncancel", value); } get oncanplay() { return level0.get(this, "oncanplay"); } set oncanplay(value) { level0.set(this, "oncanplay", value); } get oncanplaythrough() { return level0.get(this, "oncanplaythrough"); } set oncanplaythrough(value) { level0.set(this, "oncanplaythrough", value); } get onchange() { return level0.get(this, "onchange"); } set onchange(value) { level0.set(this, "onchange", value); } get onclick() { return level0.get(this, "onclick"); } set onclick(value) { level0.set(this, "onclick", value); } get onclose() { return level0.get(this, "onclose"); } set onclose(value) { level0.set(this, "onclose", value); } get oncontextmenu() { return level0.get(this, "oncontextmenu"); } set oncontextmenu(value) { level0.set(this, "oncontextmenu", value); } get oncuechange() { return level0.get(this, "oncuechange"); } set oncuechange(value) { level0.set(this, "oncuechange", value); } get ondblclick() { return level0.get(this, "ondblclick"); } set ondblclick(value) { level0.set(this, "ondblclick", value); } get ondrag() { return level0.get(this, "ondrag"); } set ondrag(value) { level0.set(this, "ondrag", value); } get ondragend() { return level0.get(this, "ondragend"); } set ondragend(value) { level0.set(this, "ondragend", value); } get ondragenter() { return level0.get(this, "ondragenter"); } set ondragenter(value) { level0.set(this, "ondragenter", value); } get ondragleave() { return level0.get(this, "ondragleave"); } set ondragleave(value) { level0.set(this, "ondragleave", value); } get ondragover() { return level0.get(this, "ondragover"); } set ondragover(value) { level0.set(this, "ondragover", value); } get ondragstart() { return level0.get(this, "ondragstart"); } set ondragstart(value) { level0.set(this, "ondragstart", value); } get ondrop() { return level0.get(this, "ondrop"); } set ondrop(value) { level0.set(this, "ondrop", value); } get ondurationchange() { return level0.get(this, "ondurationchange"); } set ondurationchange(value) { level0.set(this, "ondurationchange", value); } get onemptied() { return level0.get(this, "onemptied"); } set onemptied(value) { level0.set(this, "onemptied", value); } get onended() { return level0.get(this, "onended"); } set onended(value) { level0.set(this, "onended", value); } get onerror() { return level0.get(this, "onerror"); } set onerror(value) { level0.set(this, "onerror", value); } get onfocus() { return level0.get(this, "onfocus"); } set onfocus(value) { level0.set(this, "onfocus", value); } get oninput() { return level0.get(this, "oninput"); } set oninput(value) { level0.set(this, "oninput", value); } get oninvalid() { return level0.get(this, "oninvalid"); } set oninvalid(value) { level0.set(this, "oninvalid", value); } get onkeydown() { return level0.get(this, "onkeydown"); } set onkeydown(value) { level0.set(this, "onkeydown", value); } get onkeypress() { return level0.get(this, "onkeypress"); } set onkeypress(value) { level0.set(this, "onkeypress", value); } get onkeyup() { return level0.get(this, "onkeyup"); } set onkeyup(value) { level0.set(this, "onkeyup", value); } get onload() { return level0.get(this, "onload"); } set onload(value) { level0.set(this, "onload", value); } get onloadeddata() { return level0.get(this, "onloadeddata"); } set onloadeddata(value) { level0.set(this, "onloadeddata", value); } get onloadedmetadata() { return level0.get(this, "onloadedmetadata"); } set onloadedmetadata(value) { level0.set(this, "onloadedmetadata", value); } get onloadstart() { return level0.get(this, "onloadstart"); } set onloadstart(value) { level0.set(this, "onloadstart", value); } get onmousedown() { return level0.get(this, "onmousedown"); } set onmousedown(value) { level0.set(this, "onmousedown", value); } get onmouseenter() { return level0.get(this, "onmouseenter"); } set onmouseenter(value) { level0.set(this, "onmouseenter", value); } get onmouseleave() { return level0.get(this, "onmouseleave"); } set onmouseleave(value) { level0.set(this, "onmouseleave", value); } get onmousemove() { return level0.get(this, "onmousemove"); } set onmousemove(value) { level0.set(this, "onmousemove", value); } get onmouseout() { return level0.get(this, "onmouseout"); } set onmouseout(value) { level0.set(this, "onmouseout", value); } get onmouseover() { return level0.get(this, "onmouseover"); } set onmouseover(value) { level0.set(this, "onmouseover", value); } get onmouseup() { return level0.get(this, "onmouseup"); } set onmouseup(value) { level0.set(this, "onmouseup", value); } get onmousewheel() { return level0.get(this, "onmousewheel"); } set onmousewheel(value) { level0.set(this, "onmousewheel", value); } get onpause() { return level0.get(this, "onpause"); } set onpause(value) { level0.set(this, "onpause", value); } get onplay() { return level0.get(this, "onplay"); } set onplay(value) { level0.set(this, "onplay", value); } get onplaying() { return level0.get(this, "onplaying"); } set onplaying(value) { level0.set(this, "onplaying", value); } get onprogress() { return level0.get(this, "onprogress"); } set onprogress(value) { level0.set(this, "onprogress", value); } get onratechange() { return level0.get(this, "onratechange"); } set onratechange(value) { level0.set(this, "onratechange", value); } get onreset() { return level0.get(this, "onreset"); } set onreset(value) { level0.set(this, "onreset", value); } get onresize() { return level0.get(this, "onresize"); } set onresize(value) { level0.set(this, "onresize", value); } get onscroll() { return level0.get(this, "onscroll"); } set onscroll(value) { level0.set(this, "onscroll", value); } get onseeked() { return level0.get(this, "onseeked"); } set onseeked(value) { level0.set(this, "onseeked", value); } get onseeking() { return level0.get(this, "onseeking"); } set onseeking(value) { level0.set(this, "onseeking", value); } get onselect() { return level0.get(this, "onselect"); } set onselect(value) { level0.set(this, "onselect", value); } get onshow() { return level0.get(this, "onshow"); } set onshow(value) { level0.set(this, "onshow", value); } get onstalled() { return level0.get(this, "onstalled"); } set onstalled(value) { level0.set(this, "onstalled", value); } get onsubmit() { return level0.get(this, "onsubmit"); } set onsubmit(value) { level0.set(this, "onsubmit", value); } get onsuspend() { return level0.get(this, "onsuspend"); } set onsuspend(value) { level0.set(this, "onsuspend", value); } get ontimeupdate() { return level0.get(this, "ontimeupdate"); } set ontimeupdate(value) { level0.set(this, "ontimeupdate", value); } get ontoggle() { return level0.get(this, "ontoggle"); } set ontoggle(value) { level0.set(this, "ontoggle", value); } get onvolumechange() { return level0.get(this, "onvolumechange"); } set onvolumechange(value) { level0.set(this, "onvolumechange", value); } get onwaiting() { return level0.get(this, "onwaiting"); } set onwaiting(value) { level0.set(this, "onwaiting", value); } get onauxclick() { return level0.get(this, "onauxclick"); } set onauxclick(value) { level0.set(this, "onauxclick", value); } get ongotpointercapture() { return level0.get(this, "ongotpointercapture"); } set ongotpointercapture(value) { level0.set(this, "ongotpointercapture", value); } get onlostpointercapture() { return level0.get(this, "onlostpointercapture"); } set onlostpointercapture(value) { level0.set(this, "onlostpointercapture", value); } get onpointercancel() { return level0.get(this, "onpointercancel"); } set onpointercancel(value) { level0.set(this, "onpointercancel", value); } get onpointerdown() { return level0.get(this, "onpointerdown"); } set onpointerdown(value) { level0.set(this, "onpointerdown", value); } get onpointerenter() { return level0.get(this, "onpointerenter"); } set onpointerenter(value) { level0.set(this, "onpointerenter", value); } get onpointerleave() { return level0.get(this, "onpointerleave"); } set onpointerleave(value) { level0.set(this, "onpointerleave", value); } get onpointermove() { return level0.get(this, "onpointermove"); } set onpointermove(value) { level0.set(this, "onpointermove", value); } get onpointerout() { return level0.get(this, "onpointerout"); } set onpointerout(value) { level0.set(this, "onpointerout", value); } get onpointerover() { return level0.get(this, "onpointerover"); } set onpointerover(value) { level0.set(this, "onpointerover", value); } get onpointerup() { return level0.get(this, "onpointerup"); } set onpointerup(value) { level0.set(this, "onpointerup", value); } /* c8 ignore stop */ }; exports2.HTMLElement = HTMLElement2; } }); // node_modules/linkedom/cjs/html/template-element.js var require_template_element = __commonJS({ "node_modules/linkedom/cjs/html/template-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { CONTENT, PRIVATE } = require_symbols(); var { registerHTMLClass } = require_register_html_class(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "template"; var HTMLTemplateElement = class extends HTMLElement2 { constructor(ownerDocument) { super(ownerDocument, tagName); const content = this.ownerDocument.createDocumentFragment(); (this[CONTENT] = content)[PRIVATE] = this; } get content() { if (this.hasChildNodes() && !this[CONTENT].hasChildNodes()) { for (const node of this.childNodes) this[CONTENT].appendChild(node.cloneNode(true)); } return this[CONTENT]; } }; registerHTMLClass(tagName, HTMLTemplateElement); exports2.HTMLTemplateElement = HTMLTemplateElement; } }); // node_modules/linkedom/cjs/html/html-element.js var require_html_element = __commonJS({ "node_modules/linkedom/cjs/html/html-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLHtmlElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "html") { super(ownerDocument, localName); } }; exports2.HTMLHtmlElement = HTMLHtmlElement; } }); // node_modules/linkedom/cjs/html/text-element.js var require_text_element = __commonJS({ "node_modules/linkedom/cjs/html/text-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var { toString } = HTMLElement2.prototype; var TextElement = class extends HTMLElement2 { get innerHTML() { return this.textContent; } set innerHTML(html) { this.textContent = html; } toString() { const outerHTML = toString.call(this.cloneNode()); return outerHTML.replace("><", () => `>${this.textContent}<`); } }; exports2.TextElement = TextElement; } }); // node_modules/linkedom/cjs/html/script-element.js var require_script_element = __commonJS({ "node_modules/linkedom/cjs/html/script-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { booleanAttribute, stringAttribute } = require_attributes(); var { registerHTMLClass } = require_register_html_class(); var { TextElement } = require_text_element(); var tagName = "script"; var HTMLScriptElement = class extends TextElement { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } get type() { return stringAttribute.get(this, "type"); } set type(value) { stringAttribute.set(this, "type", value); } get src() { return stringAttribute.get(this, "src"); } set src(value) { stringAttribute.set(this, "src", value); } get defer() { return booleanAttribute.get(this, "defer"); } set defer(value) { booleanAttribute.set(this, "defer", value); } get crossOrigin() { return stringAttribute.get(this, "crossorigin"); } set crossOrigin(value) { stringAttribute.set(this, "crossorigin", value); } get nomodule() { return booleanAttribute.get(this, "nomodule"); } set nomodule(value) { booleanAttribute.set(this, "nomodule", value); } get referrerPolicy() { return stringAttribute.get(this, "referrerpolicy"); } set referrerPolicy(value) { stringAttribute.set(this, "referrerpolicy", value); } get nonce() { return stringAttribute.get(this, "nonce"); } set nonce(value) { stringAttribute.set(this, "nonce", value); } get async() { return booleanAttribute.get(this, "async"); } set async(value) { booleanAttribute.set(this, "async", value); } get text() { return this.textContent; } set text(content) { this.textContent = content; } }; registerHTMLClass(tagName, HTMLScriptElement); exports2.HTMLScriptElement = HTMLScriptElement; } }); // node_modules/linkedom/cjs/html/frame-element.js var require_frame_element = __commonJS({ "node_modules/linkedom/cjs/html/frame-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLFrameElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "frame") { super(ownerDocument, localName); } }; exports2.HTMLFrameElement = HTMLFrameElement; } }); // node_modules/linkedom/cjs/html/i-frame-element.js var require_i_frame_element = __commonJS({ "node_modules/linkedom/cjs/html/i-frame-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { booleanAttribute, stringAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "iframe"; var HTMLIFrameElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get src() { return stringAttribute.get(this, "src"); } set src(value) { stringAttribute.set(this, "src", value); } get srcdoc() { return stringAttribute.get(this, "srcdoc"); } set srcdoc(value) { stringAttribute.set(this, "srcdoc", value); } get name() { return stringAttribute.get(this, "name"); } set name(value) { stringAttribute.set(this, "name", value); } get allow() { return stringAttribute.get(this, "allow"); } set allow(value) { stringAttribute.set(this, "allow", value); } get allowFullscreen() { return booleanAttribute.get(this, "allowfullscreen"); } set allowFullscreen(value) { booleanAttribute.set(this, "allowfullscreen", value); } get referrerPolicy() { return stringAttribute.get(this, "referrerpolicy"); } set referrerPolicy(value) { stringAttribute.set(this, "referrerpolicy", value); } get loading() { return stringAttribute.get(this, "loading"); } set loading(value) { stringAttribute.set(this, "loading", value); } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLIFrameElement); exports2.HTMLIFrameElement = HTMLIFrameElement; } }); // node_modules/linkedom/cjs/html/object-element.js var require_object_element = __commonJS({ "node_modules/linkedom/cjs/html/object-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLObjectElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "object") { super(ownerDocument, localName); } }; exports2.HTMLObjectElement = HTMLObjectElement; } }); // node_modules/linkedom/cjs/html/head-element.js var require_head_element = __commonJS({ "node_modules/linkedom/cjs/html/head-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLHeadElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "head") { super(ownerDocument, localName); } }; exports2.HTMLHeadElement = HTMLHeadElement; } }); // node_modules/linkedom/cjs/html/body-element.js var require_body_element = __commonJS({ "node_modules/linkedom/cjs/html/body-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLBodyElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "body") { super(ownerDocument, localName); } }; exports2.HTMLBodyElement = HTMLBodyElement; } }); // node_modules/@acemir/cssom/lib/CSSOM.js var require_CSSOM = __commonJS({ "node_modules/@acemir/cssom/lib/CSSOM.js"(exports2, module2) { init_define_import_meta_env(); var CSSOM2 = { /** * Creates and configures a new CSSOM instance with the specified options. * * @param {Object} opts - Configuration options for the CSSOM instance * @param {Object} [opts.globalObject] - Optional global object to be assigned to CSSOM objects prototype * @returns {Object} A new CSSOM instance with the applied configuration * @description * This method creates a new instance of CSSOM and optionally * configures CSSStyleSheet with a global object reference. When a globalObject is provided * and CSSStyleSheet exists on the instance, it creates a new CSSStyleSheet constructor * using a factory function and assigns the globalObject to its prototype's __globalObject property. */ setup: function(opts) { var instance = Object.create(this); if (opts.globalObject) { if (instance.CSSStyleSheet) { var factoryCSSStyleSheet = createFunctionFactory(instance.CSSStyleSheet); var CSSStyleSheet = factoryCSSStyleSheet(); CSSStyleSheet.prototype.__globalObject = opts.globalObject; instance.CSSStyleSheet = CSSStyleSheet; } } return instance; } }; function createFunctionFactory(fn) { return function() { var newFn = function() { return fn.apply(this, arguments); }; Object.setPrototypeOf(newFn, Object.getPrototypeOf(fn)); for (var key in fn) { if (Object.prototype.hasOwnProperty.call(fn, key)) { newFn[key] = fn[key]; } } if (fn.prototype) { newFn.prototype = Object.create(fn.prototype); } return newFn; }; } module2.exports = CSSOM2; } }); // node_modules/@acemir/cssom/lib/errorUtils.js var require_errorUtils = __commonJS({ "node_modules/@acemir/cssom/lib/errorUtils.js"(exports, module) { init_define_import_meta_env(); function getErrorConstructor(context, errorType) { if (context.parentStyleSheet && context.parentStyleSheet.__globalObject && context.parentStyleSheet.__globalObject[errorType]) { return context.parentStyleSheet.__globalObject[errorType]; } if (context.__parentStyleSheet && context.__parentStyleSheet.__globalObject && context.__parentStyleSheet.__globalObject[errorType]) { return context.__parentStyleSheet.__globalObject[errorType]; } if (context.__globalObject && context.__globalObject[errorType]) { return context.__globalObject[errorType]; } return typeof global !== "undefined" && global[errorType] || typeof window !== "undefined" && window[errorType] || eval(errorType); } function createError(context2, errorType2, message, name) { var ErrorConstructor = getErrorConstructor(context2, errorType2); return new ErrorConstructor(message, name); } function throwError(context2, errorType2, message, name) { throw createError(context2, errorType2, message, name); } function throwMissingArguments(context2, methodName, objectName, required, provided) { required = required || 1; provided = provided || 0; var message = "Failed to execute '" + methodName + "' on '" + objectName + "': " + required + " argument" + (required > 1 ? "s" : "") + " required, but only " + provided + " present."; throwError(context2, "TypeError", message); } function throwParseError(context2, methodName, objectName, rule, name) { var message = "Failed to execute '" + methodName + "' on '" + objectName + "': Failed to parse the rule '" + rule + "'."; throwError(context2, "DOMException", message, name || "SyntaxError"); } function throwIndexError(context2, methodName, objectName, index2, maxIndex, name) { var message = "Failed to execute '" + methodName + "' on '" + objectName + "': The index provided (" + index2 + ") is larger than the maximum index (" + maxIndex + ")."; throwError(context2, "DOMException", message, name || "IndexSizeError"); } var errorUtils = { createError, getErrorConstructor, throwError, throwMissingArguments, throwParseError, throwIndexError }; exports.errorUtils = errorUtils; } }); // node_modules/@acemir/cssom/lib/regexPatterns.js var require_regexPatterns = __commonJS({ "node_modules/@acemir/cssom/lib/regexPatterns.js"(exports2) { init_define_import_meta_env(); var atKeyframesRegExp = /@(-(?:\w+-)+)?keyframes/g; var beforeRulePortionRegExp = /{(?!.*{)|}(?!.*})|;(?!.*;)|\*\/(?!.*\*\/)/g; var beforeRuleValidationRegExp = /^[\s{};]*(\*\/\s*)?$/; var forwardRuleValidationRegExp = /(?:\s|\/\*|\{|\()/; var forwardImportRuleValidationRegExp = /(?:\s|\/\*|'|")/; var forwardRuleClosingBraceRegExp = /{[^{}]*}|}/; var forwardRuleSemicolonAndOpeningBraceRegExp = /^.*?({|;)/; var cssCustomIdentifierRegExp = /^(-?[_a-zA-Z]+(\.[_a-zA-Z]+)*[_a-zA-Z0-9-]*)$/; var startsWithCombinatorRegExp = /^\s*[>+~]/; var atPageRuleSelectorRegExp = /^([^\s:]+)?((?::\w+)*)$/; var layerRegExp = /layer\(([^)]*)\)/; var layerRuleNameRegExp = /^(-?[_a-zA-Z]+(\.[_a-zA-Z]+)*[_a-zA-Z0-9-]*)$/; var doubleOrMoreSpacesRegExp = /\s{2,}/g; var startsWithHexEscapeRegExp = /^\\[0-9a-fA-F]/; var identStartCharRegExp = /[a-zA-Z_\u00A0-\uFFFF]/; var identCharRegExp = /^[a-zA-Z0-9_\-\u00A0-\uFFFF\\]/; var specialCharsNeedEscapeRegExp = /[!"#$%&'()*+,./:;<=>?@\[\\\]^`{|}~\s]/; var combinatorOrSeparatorRegExp = /[\s>+~,()]/; var afterHexEscapeSeparatorRegExp = /[\s>+~,(){}\[\]]/; var trailingSpaceSeparatorRegExp = /[\s>+~,(){}]/; var endsWithHexEscapeRegExp = /\\[0-9a-fA-F]{1,6}\s+$/; var basicStylePropertyValueValidationRegExp = /:(?![^(]*\))(?=(?:[^'"]|'[^']*'|"[^"]*")*$)/; var attributeSelectorContentRegExp = /^([^\s=~|^$*]+)\s*(~=|\|=|\^=|\$=|\*=|=)\s*(.+)$/; var pseudoElementRegExp = /::[a-zA-Z][\w-]*|:(before|after|first-line|first-letter)(?![a-zA-Z0-9_-])/; var invalidCombinatorLtGtRegExp = /<>/; var invalidCombinatorDoubleGtRegExp = />>/; var consecutiveCombinatorsRegExp = /[>+~]\s*[>+~]/; var invalidSlottedRegExp = /(?:^|[\s>+~,\[])slotted\s*\(/i; var invalidPartRegExp = /(?:^|[\s>+~,\[])part\s*\(/i; var invalidCueRegExp = /(?:^|[\s>+~,\[])cue\s*\(/i; var invalidCueRegionRegExp = /(?:^|[\s>+~,\[])cue-region\s*\(/i; var invalidNestingPattern = /&(?![.\#\[:>\+~\s])[a-zA-Z]/; var emptyPseudoClassRegExp = /:(?:is|not|where|has)\(\s*\)/; var whitespaceNormalizationRegExp = /(['"])(?:\\.|[^\\])*?\1|(\r\n|\r|\n)/g; var newlineRemovalRegExp = /\n/g; var whitespaceAndDotRegExp = /[\s.]/; var declarationOrOpenBraceRegExp = /[{;}]/; var ampersandRegExp = /&/; var hexEscapeSequenceRegExp = /^([0-9a-fA-F]{1,6})[ \t\r\n\f]?/; var attributeCaseFlagRegExp = /^(.+?)\s+([is])$/i; var prependedAmpersandRegExp = /^&\s+[:\\.]/; var openBraceGlobalRegExp = /{/g; var closeBraceGlobalRegExp = /}/g; var scopePreludeSplitRegExp = /\s*\)\s*to\s+\(/; var leadingWhitespaceRegExp = /^\s+/; var doubleQuoteRegExp = /"/g; var backslashRegExp = /\\/g; var invalidMediaOperatorWithoutSpaceRegExp = /\)(and|or)\(/i; var invalidMediaNotAfterOperatorRegExp = /\b(and|or)\s+not\b/i; var invalidMediaNotIdentifierRegExp = /\)\s+not\(/i; var invalidMediaNotAfterFeatureRegExp = /\)\s+not\s+/i; var invalidMediaOperatorBetweenParensRegExp = /\)\s+(?!and\b|or\b)[a-z]+\s+\(/i; var invalidMediaNotWithMediaTypeRegExp = /\bnot\s+[a-z][a-z0-9_-]*\s+\(/i; var mediaFeatureColonRegExp = /(\(\s*)([^():]+):(\s*)([^()]*\))/g; var identifierBeforeParenRegExp = /[a-z0-9_-]/i; var mediaAndOperatorRegExp = /\s*\band\b\s*/gi; var mediaOrOperatorRegExp = /\s*\bor\b\s*/gi; var mediaNotOperatorStartRegExp = /^\s*not\s+(?=\S)/i; var mediaNotOperatorRegExp = /\s+\bnot\s+(?=\S)/gi; var regexPatterns = { // Parsing patterns atKeyframesRegExp, beforeRulePortionRegExp, beforeRuleValidationRegExp, forwardRuleValidationRegExp, forwardImportRuleValidationRegExp, forwardRuleClosingBraceRegExp, forwardRuleSemicolonAndOpeningBraceRegExp, // Selector validation patterns cssCustomIdentifierRegExp, startsWithCombinatorRegExp, atPageRuleSelectorRegExp, // Parsing patterns used in CSSImportRule layerRegExp, layerRuleNameRegExp, doubleOrMoreSpacesRegExp, // Escape sequence and identifier patterns startsWithHexEscapeRegExp, identStartCharRegExp, identCharRegExp, specialCharsNeedEscapeRegExp, combinatorOrSeparatorRegExp, afterHexEscapeSeparatorRegExp, trailingSpaceSeparatorRegExp, endsWithHexEscapeRegExp, // Basic style property value validation basicStylePropertyValueValidationRegExp, // Attribute selector patterns attributeSelectorContentRegExp, // Selector validation patterns pseudoElementRegExp, invalidCombinatorLtGtRegExp, invalidCombinatorDoubleGtRegExp, consecutiveCombinatorsRegExp, invalidSlottedRegExp, invalidPartRegExp, invalidCueRegExp, invalidCueRegionRegExp, invalidNestingPattern, emptyPseudoClassRegExp, whitespaceNormalizationRegExp, newlineRemovalRegExp, whitespaceAndDotRegExp, declarationOrOpenBraceRegExp, ampersandRegExp, hexEscapeSequenceRegExp, attributeCaseFlagRegExp, prependedAmpersandRegExp, openBraceGlobalRegExp, closeBraceGlobalRegExp, scopePreludeSplitRegExp, leadingWhitespaceRegExp, doubleQuoteRegExp, backslashRegExp, // Media query validation patterns invalidMediaOperatorWithoutSpaceRegExp, invalidMediaNotAfterOperatorRegExp, invalidMediaNotIdentifierRegExp, invalidMediaNotAfterFeatureRegExp, invalidMediaOperatorBetweenParensRegExp, invalidMediaNotWithMediaTypeRegExp, // Media query normalization patterns mediaFeatureColonRegExp, identifierBeforeParenRegExp, mediaAndOperatorRegExp, mediaOrOperatorRegExp, mediaNotOperatorStartRegExp, mediaNotOperatorRegExp }; exports2.regexPatterns = regexPatterns; } }); // node_modules/@acemir/cssom/lib/MediaList.js var require_MediaList = __commonJS({ "node_modules/@acemir/cssom/lib/MediaList.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = {}; CSSOM2.MediaList = function MediaList() { this.length = 0; }; CSSOM2.MediaList.prototype = { constructor: CSSOM2.MediaList, /** * @return {string} */ get mediaText() { return Array.prototype.join.call(this, ", "); }, /** * @param {string} value */ set mediaText(value) { if (typeof value === "string") { var values = value.split(",").filter(function(text) { return !!text; }); var length = this.length = values.length; for (var i = 0; i < length; i++) { this[i] = values[i].trim(); } } else if (value === null) { var length = this.length; for (var i = 0; i < length; i++) { delete this[i]; } this.length = 0; } }, /** * @param {string} medium */ appendMedium: function(medium) { if (Array.prototype.indexOf.call(this, medium) === -1) { this[this.length] = medium; this.length++; } }, /** * @param {string} medium */ deleteMedium: function(medium) { var index2 = Array.prototype.indexOf.call(this, medium); if (index2 !== -1) { Array.prototype.splice.call(this, index2, 1); } }, item: function(index2) { return this[index2] || null; }, toString: function() { return this.mediaText; } }; exports2.MediaList = CSSOM2.MediaList; } }); // node_modules/@acemir/cssom/lib/StyleSheet.js var require_StyleSheet = __commonJS({ "node_modules/@acemir/cssom/lib/StyleSheet.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { MediaList: require_MediaList().MediaList }; CSSOM2.StyleSheet = function StyleSheet() { this.__href = null; this.__ownerNode = null; this.__title = null; this.__media = new CSSOM2.MediaList(); this.__parentStyleSheet = null; this.disabled = false; }; Object.defineProperties(CSSOM2.StyleSheet.prototype, { type: { get: function() { return "text/css"; } }, href: { get: function() { return this.__href; } }, ownerNode: { get: function() { return this.__ownerNode; } }, title: { get: function() { return this.__title; } }, media: { get: function() { return this.__media; }, set: function(value) { if (typeof value === "string") { this.__media.mediaText = value; } else { this.__media = value; } } }, parentStyleSheet: { get: function() { return this.__parentStyleSheet; } } }); exports2.StyleSheet = CSSOM2.StyleSheet; } }); // node_modules/@acemir/cssom/lib/CSSRuleList.js var require_CSSRuleList = __commonJS({ "node_modules/@acemir/cssom/lib/CSSRuleList.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = {}; CSSOM2.CSSRuleList = function CSSRuleList() { var arr = new Array(); Object.setPrototypeOf(arr, CSSOM2.CSSRuleList.prototype); return arr; }; CSSOM2.CSSRuleList.prototype = Object.create(Array.prototype); CSSOM2.CSSRuleList.prototype.constructor = CSSOM2.CSSRuleList; CSSOM2.CSSRuleList.prototype.item = function(index2) { return this[index2] || null; }; exports2.CSSRuleList = CSSOM2.CSSRuleList; } }); // node_modules/@acemir/cssom/lib/CSSRule.js var require_CSSRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = {}; CSSOM2.CSSRule = function CSSRule() { this.__parentRule = null; this.__parentStyleSheet = null; }; CSSOM2.CSSRule.UNKNOWN_RULE = 0; CSSOM2.CSSRule.STYLE_RULE = 1; CSSOM2.CSSRule.CHARSET_RULE = 2; CSSOM2.CSSRule.IMPORT_RULE = 3; CSSOM2.CSSRule.MEDIA_RULE = 4; CSSOM2.CSSRule.FONT_FACE_RULE = 5; CSSOM2.CSSRule.PAGE_RULE = 6; CSSOM2.CSSRule.KEYFRAMES_RULE = 7; CSSOM2.CSSRule.KEYFRAME_RULE = 8; CSSOM2.CSSRule.MARGIN_RULE = 9; CSSOM2.CSSRule.NAMESPACE_RULE = 10; CSSOM2.CSSRule.COUNTER_STYLE_RULE = 11; CSSOM2.CSSRule.SUPPORTS_RULE = 12; CSSOM2.CSSRule.DOCUMENT_RULE = 13; CSSOM2.CSSRule.FONT_FEATURE_VALUES_RULE = 14; CSSOM2.CSSRule.VIEWPORT_RULE = 15; CSSOM2.CSSRule.REGION_STYLE_RULE = 16; CSSOM2.CSSRule.CONTAINER_RULE = 17; CSSOM2.CSSRule.LAYER_BLOCK_RULE = 18; CSSOM2.CSSRule.STARTING_STYLE_RULE = 1002; Object.defineProperties(CSSOM2.CSSRule.prototype, { constructor: { value: CSSOM2.CSSRule }, cssRule: { value: "", configurable: true, enumerable: true }, cssText: { get: function() { return ""; }, set: function(cssText) { return cssText; } }, parentRule: { get: function() { return this.__parentRule; } }, parentStyleSheet: { get: function() { return this.__parentStyleSheet; } }, UNKNOWN_RULE: { value: 0, enumerable: true }, // obsolet STYLE_RULE: { value: 1, enumerable: true }, CHARSET_RULE: { value: 2, enumerable: true }, // obsolet IMPORT_RULE: { value: 3, enumerable: true }, MEDIA_RULE: { value: 4, enumerable: true }, FONT_FACE_RULE: { value: 5, enumerable: true }, PAGE_RULE: { value: 6, enumerable: true }, KEYFRAMES_RULE: { value: 7, enumerable: true }, KEYFRAME_RULE: { value: 8, enumerable: true }, MARGIN_RULE: { value: 9, enumerable: true }, NAMESPACE_RULE: { value: 10, enumerable: true }, COUNTER_STYLE_RULE: { value: 11, enumerable: true }, SUPPORTS_RULE: { value: 12, enumerable: true }, DOCUMENT_RULE: { value: 13, enumerable: true }, FONT_FEATURE_VALUES_RULE: { value: 14, enumerable: true }, VIEWPORT_RULE: { value: 15, enumerable: true }, REGION_STYLE_RULE: { value: 16, enumerable: true }, CONTAINER_RULE: { value: 17, enumerable: true }, LAYER_BLOCK_RULE: { value: 18, enumerable: true }, STARTING_STYLE_RULE: { value: 1002, enumerable: true } }); exports2.CSSRule = CSSOM2.CSSRule; } }); // node_modules/@acemir/cssom/lib/CSSGroupingRule.js var require_CSSGroupingRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSGroupingRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, parse: require_parse3().parse }; var errorUtils2 = require_errorUtils().errorUtils; CSSOM2.CSSGroupingRule = function CSSGroupingRule() { CSSOM2.CSSRule.call(this); this.__cssRules = new CSSOM2.CSSRuleList(); }; CSSOM2.CSSGroupingRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSGroupingRule.prototype.constructor = CSSOM2.CSSGroupingRule; Object.setPrototypeOf(CSSOM2.CSSGroupingRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSGroupingRule.prototype, "cssRules", { get: function() { return this.__cssRules; } }); CSSOM2.CSSGroupingRule.prototype.insertRule = function insertRule(rule, index2) { if (rule === void 0 && index2 === void 0) { errorUtils2.throwMissingArguments(this, "insertRule", this.constructor.name); } if (index2 === void 0) { index2 = 0; } index2 = Number(index2); if (index2 < 0) { index2 = 4294967296 + index2; } if (index2 > this.cssRules.length) { errorUtils2.throwIndexError(this, "insertRule", this.constructor.name, index2, this.cssRules.length); } var ruleToParse = processedRuleToParse = String(rule); ruleToParse = ruleToParse.trim().replace(/^\/\*[\s\S]*?\*\/\s*/, ""); var isNestedSelector = this.constructor.name === "CSSStyleRule"; if (isNestedSelector === false) { var currentRule = this; while (currentRule.parentRule) { currentRule = currentRule.parentRule; if (currentRule.constructor.name === "CSSStyleRule") { isNestedSelector = true; break; } } } if (isNestedSelector) { processedRuleToParse = "s { n { } " + ruleToParse + "}"; } var isScopeRule = this.constructor.name === "CSSScopeRule"; if (isScopeRule) { if (isNestedSelector) { processedRuleToParse = "s { @scope {" + ruleToParse + "}}"; } else { processedRuleToParse = "@scope {" + ruleToParse + "}"; } } var parsedRules = new CSSOM2.CSSRuleList(); CSSOM2.parse(processedRuleToParse, { styleSheet: this.parentStyleSheet, cssRules: parsedRules }); if (isScopeRule) { if (isNestedSelector) { parsedRules = parsedRules[0].cssRules[0].cssRules; } else { parsedRules = parsedRules[0].cssRules; } } if (isNestedSelector) { parsedRules = parsedRules[0].cssRules.slice(1); } if (parsedRules.length !== 1) { if (isNestedSelector && parsedRules.length === 0 && ruleToParse.indexOf("@font-face") === 0) { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Only conditional nested group rules, style rules, @scope rules, @apply rules, and nested declaration rules may be nested.", "HierarchyRequestError" ); } else { errorUtils2.throwParseError(this, "insertRule", this.constructor.name, ruleToParse, "SyntaxError"); } } var cssRule = parsedRules[0]; if (cssRule.constructor.name === "CSSNestedDeclarations" && cssRule.style.length === 0) { errorUtils2.throwParseError(this, "insertRule", this.constructor.name, ruleToParse, "SyntaxError"); } if (cssRule.constructor.name === "CSSImportRule" || cssRule.constructor.name === "CSSNamespaceRule") { var ruleKeyword = cssRule.constructor.name === "CSSImportRule" ? "@import" : "@namespace"; errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': '" + ruleKeyword + "' rules cannot be inserted inside a group rule.", "HierarchyRequestError" ); } if (cssRule.constructor.name === "CSSLayerStatementRule") { errorUtils2.throwParseError(this, "insertRule", this.constructor.name, ruleToParse, "SyntaxError"); } cssRule.__parentRule = this; this.cssRules.splice(index2, 0, cssRule); return index2; }; CSSOM2.CSSGroupingRule.prototype.deleteRule = function deleteRule(index2) { if (index2 === void 0) { errorUtils2.throwMissingArguments(this, "deleteRule", this.constructor.name); } index2 = Number(index2); if (index2 < 0) { index2 = 4294967296 + index2; } if (index2 >= this.cssRules.length) { errorUtils2.throwIndexError(this, "deleteRule", this.constructor.name, index2, this.cssRules.length); } this.cssRules[index2].__parentRule = null; this.cssRules[index2].__parentStyleSheet = null; this.cssRules.splice(index2, 1); }; exports2.CSSGroupingRule = CSSOM2.CSSGroupingRule; } }); // node_modules/@acemir/cssom/lib/CSSStyleRule.js var require_CSSStyleRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSStyleRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration, CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule }; var regexPatterns = require_regexPatterns().regexPatterns; try { CSSOM2.CSSStyleDeclaration = require("cssstyle").CSSStyleDeclaration; } catch (e) { } CSSOM2.CSSStyleRule = function CSSStyleRule() { CSSOM2.CSSGroupingRule.call(this); this.__selectorText = ""; this.__style = new CSSOM2.CSSStyleDeclaration(); this.__style.parentRule = this; }; CSSOM2.CSSStyleRule.prototype = Object.create(CSSOM2.CSSGroupingRule.prototype); CSSOM2.CSSStyleRule.prototype.constructor = CSSOM2.CSSStyleRule; Object.setPrototypeOf(CSSOM2.CSSStyleRule, CSSOM2.CSSGroupingRule); Object.defineProperty(CSSOM2.CSSStyleRule.prototype, "type", { value: 1, writable: false }); Object.defineProperty(CSSOM2.CSSStyleRule.prototype, "selectorText", { get: function() { return this.__selectorText; }, set: function(value) { if (typeof value === "string") { var endsWithHexEscapeRegExp = regexPatterns.endsWithHexEscapeRegExp; var endsWithEscape = endsWithHexEscapeRegExp.test(value); var trimmedValue = endsWithEscape ? value.replace(/\s+$/, " ").trimStart() : value.trim(); if (trimmedValue === "") { return; } this.__selectorText = trimmedValue; } }, configurable: true }); Object.defineProperty(CSSOM2.CSSStyleRule.prototype, "style", { get: function() { return this.__style; }, set: function(value) { if (typeof value === "string") { this.__style.cssText = value; } else { this.__style = value; } }, configurable: true }); Object.defineProperty(CSSOM2.CSSStyleRule.prototype, "cssText", { get: function() { var text; if (this.selectorText) { var values = ""; if (this.cssRules.length) { var valuesArr = [" {"]; this.style.cssText && valuesArr.push(this.style.cssText); valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); values = valuesArr.join("\n ") + "\n}"; } else { values = " {" + (this.style.cssText ? " " + this.style.cssText : "") + " }"; } text = this.selectorText + values; } else { text = ""; } return text; } }); exports2.CSSStyleRule = CSSOM2.CSSStyleRule; } }); // node_modules/@acemir/cssom/lib/CSSStyleSheet.js var require_CSSStyleSheet = __commonJS({ "node_modules/@acemir/cssom/lib/CSSStyleSheet.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { MediaList: require_MediaList().MediaList, StyleSheet: require_StyleSheet().StyleSheet, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSStyleRule: require_CSSStyleRule().CSSStyleRule }; var errorUtils2 = require_errorUtils().errorUtils; CSSOM2.CSSStyleSheet = function CSSStyleSheet(opts) { CSSOM2.StyleSheet.call(this); this.__constructed = true; this.__cssRules = new CSSOM2.CSSRuleList(); this.__ownerRule = null; if (opts && typeof opts === "object") { if (opts.baseURL && typeof opts.baseURL === "string") { this.__baseURL = opts.baseURL; } if (opts.media && typeof opts.media === "string") { this.media.mediaText = opts.media; } if (typeof opts.disabled === "boolean") { this.disabled = opts.disabled; } } }; CSSOM2.CSSStyleSheet.prototype = Object.create(CSSOM2.StyleSheet.prototype); CSSOM2.CSSStyleSheet.prototype.constructor = CSSOM2.CSSStyleSheet; Object.setPrototypeOf(CSSOM2.CSSStyleSheet, CSSOM2.StyleSheet); Object.defineProperty(CSSOM2.CSSStyleSheet.prototype, "cssRules", { get: function() { return this.__cssRules; } }); Object.defineProperty(CSSOM2.CSSStyleSheet.prototype, "rules", { get: function() { return this.__cssRules; } }); Object.defineProperty(CSSOM2.CSSStyleSheet.prototype, "ownerRule", { get: function() { return this.__ownerRule; } }); CSSOM2.CSSStyleSheet.prototype.insertRule = function(rule, index2) { if (rule === void 0 && index2 === void 0) { errorUtils2.throwMissingArguments(this, "insertRule", this.constructor.name); } if (index2 === void 0) { index2 = 0; } index2 = Number(index2); if (index2 < 0) { index2 = 4294967296 + index2; } if (index2 > this.cssRules.length) { errorUtils2.throwIndexError(this, "insertRule", this.constructor.name, index2, this.cssRules.length); } var ruleToParse = String(rule); var parseErrors = []; var parsedSheet = CSSOM2.parse(ruleToParse, void 0, function(err) { parseErrors.push(err); }); if (parsedSheet.cssRules.length !== 1) { errorUtils2.throwParseError(this, "insertRule", this.constructor.name, ruleToParse, "SyntaxError"); } var cssRule = parsedSheet.cssRules[0]; function findLastIndexOfConstructor(rules, constructorName) { for (var i2 = rules.length - 1; i2 >= 0; i2--) { if (rules[i2].constructor.name === constructorName) { return i2; } } return -1; } function findFirstNonConstructorIndex(rules, constructorNames) { for (var i2 = 0; i2 < rules.length; i2++) { if (constructorNames.indexOf(rules[i2].constructor.name) === -1) { return i2; } } return rules.length; } if (cssRule.constructor.name === "CSSImportRule") { if (this.__constructed === true) { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Can't insert @import rules into a constructed stylesheet.", "SyntaxError" ); } var firstLayerIndex = findFirstNonConstructorIndex(this.cssRules, ["CSSImportRule"]); if (firstLayerIndex < this.cssRules.length && this.cssRules[firstLayerIndex].constructor.name === "CSSLayerStatementRule" && index2 > firstLayerIndex) { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Failed to insert the rule.", "HierarchyRequestError" ); } var firstNonImportIndex = findFirstNonConstructorIndex(this.cssRules, ["CSSImportRule"]); if (index2 > firstNonImportIndex && firstNonImportIndex < this.cssRules.length && this.cssRules[firstNonImportIndex].constructor.name !== "CSSLayerStatementRule") { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Failed to insert the rule.", "HierarchyRequestError" ); } } else if (cssRule.constructor.name === "CSSNamespaceRule") { var firstImportIndex = -1; for (var i = 0; i < this.cssRules.length; i++) { if (this.cssRules[i].constructor.name === "CSSImportRule") { firstImportIndex = i; break; } } var firstNonImportNamespaceIndex = findFirstNonConstructorIndex(this.cssRules, [ "CSSLayerStatementRule", "CSSImportRule", "CSSNamespaceRule" ]); if (firstImportIndex !== -1 && index2 <= firstImportIndex) { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Failed to insert the rule.", "HierarchyRequestError" ); } if (firstNonImportNamespaceIndex < this.cssRules.length) { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Failed to insert the rule.", "InvalidStateError" ); } if (index2 > firstNonImportNamespaceIndex) { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Failed to insert the rule.", "HierarchyRequestError" ); } } else if (cssRule.constructor.name === "CSSLayerStatementRule") { } else { var firstNonSpecialRuleIndex = findFirstNonConstructorIndex(this.cssRules, [ "CSSLayerStatementRule", "CSSImportRule", "CSSNamespaceRule" ]); if (index2 < firstNonSpecialRuleIndex) { errorUtils2.throwError( this, "DOMException", "Failed to execute 'insertRule' on '" + this.constructor.name + "': Failed to insert the rule.", "HierarchyRequestError" ); } if (parseErrors.filter(function(error) { return !error.isNested; }).length !== 0) { errorUtils2.throwParseError(this, "insertRule", this.constructor.name, ruleToParse, "SyntaxError"); } } cssRule.__parentStyleSheet = this; this.cssRules.splice(index2, 0, cssRule); return index2; }; CSSOM2.CSSStyleSheet.prototype.addRule = function(selector, styleBlock, index2) { if (index2 === void 0) { index2 = this.cssRules.length; } this.insertRule(selector + "{" + styleBlock + "}", index2); return -1; }; CSSOM2.CSSStyleSheet.prototype.deleteRule = function(index2) { if (index2 === void 0) { errorUtils2.throwMissingArguments(this, "deleteRule", this.constructor.name); } index2 = Number(index2); if (index2 < 0) { index2 = 4294967296 + index2; } if (index2 >= this.cssRules.length) { errorUtils2.throwIndexError(this, "deleteRule", this.constructor.name, index2, this.cssRules.length); } if (this.cssRules[index2]) { if (this.cssRules[index2].constructor.name == "CSSNamespaceRule") { var shouldContinue = this.cssRules.every(function(rule) { return ["CSSImportRule", "CSSLayerStatementRule", "CSSNamespaceRule"].indexOf(rule.constructor.name) !== -1; }); if (!shouldContinue) { errorUtils2.throwError(this, "DOMException", "Failed to execute 'deleteRule' on '" + this.constructor.name + "': Failed to delete rule.", "InvalidStateError"); } } if (this.cssRules[index2].constructor.name == "CSSImportRule") { this.cssRules[index2].styleSheet.__parentStyleSheet = null; } this.cssRules[index2].__parentStyleSheet = null; } this.cssRules.splice(index2, 1); }; CSSOM2.CSSStyleSheet.prototype.removeRule = function(index2) { if (index2 === void 0) { index2 = 0; } this.deleteRule(index2); }; CSSOM2.CSSStyleSheet.prototype.replace = function(text) { var _Promise; if (this.__globalObject && this.__globalObject["Promise"]) { _Promise = this.__globalObject["Promise"]; } else { _Promise = Promise; } var _setTimeout; if (this.__globalObject && this.__globalObject["setTimeout"]) { _setTimeout = this.__globalObject["setTimeout"]; } else { _setTimeout = setTimeout; } var sheet = this; return new _Promise(function(resolve, reject) { if (!sheet.__constructed || sheet.__disallowModification) { reject(errorUtils2.createError( sheet, "DOMException", "Failed to execute 'replaceSync' on '" + sheet.constructor.name + "': Not allowed.", "NotAllowedError" )); } sheet.__disallowModification = true; _setTimeout(function() { var rules = new CSSOM2.CSSRuleList(); CSSOM2.parse(text, { styleSheet: sheet, cssRules: rules }); var i = 0; while (i < rules.length) { if (rules[i].constructor.name === "CSSImportRule") { rules.splice(i, 1); } else { i++; } } sheet.__cssRules.splice.apply(sheet.__cssRules, [0, sheet.__cssRules.length].concat(rules)); delete sheet.__disallowModification; resolve(sheet); }); }); }; CSSOM2.CSSStyleSheet.prototype.replaceSync = function(text) { var sheet = this; if (!sheet.__constructed || sheet.__disallowModification) { errorUtils2.throwError( sheet, "DOMException", "Failed to execute 'replaceSync' on '" + sheet.constructor.name + "': Not allowed.", "NotAllowedError" ); } var rules = new CSSOM2.CSSRuleList(); CSSOM2.parse(text, { styleSheet: sheet, cssRules: rules }); var i = 0; while (i < rules.length) { if (rules[i].constructor.name === "CSSImportRule") { rules.splice(i, 1); } else { i++; } } sheet.__cssRules.splice.apply(sheet.__cssRules, [0, sheet.__cssRules.length].concat(rules)); }; CSSOM2.CSSStyleSheet.prototype.toString = function() { var result = ""; var rules = this.cssRules; for (var i = 0; i < rules.length; i++) { result += rules[i].cssText + "\n"; } return result; }; exports2.CSSStyleSheet = CSSOM2.CSSStyleSheet; CSSOM2.parse = require_parse3().parse; } }); // node_modules/@acemir/cssom/lib/CSSNestedDeclarations.js var require_CSSNestedDeclarations = __commonJS({ "node_modules/@acemir/cssom/lib/CSSNestedDeclarations.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration }; try { CSSOM2.CSSStyleDeclaration = require("cssstyle").CSSStyleDeclaration; } catch (e) { } CSSOM2.CSSNestedDeclarations = function CSSNestedDeclarations() { CSSOM2.CSSRule.call(this); this.__style = new CSSOM2.CSSStyleDeclaration(); this.__style.parentRule = this; }; CSSOM2.CSSNestedDeclarations.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSNestedDeclarations.prototype.constructor = CSSOM2.CSSNestedDeclarations; Object.setPrototypeOf(CSSOM2.CSSNestedDeclarations, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSNestedDeclarations.prototype, "type", { value: 0, writable: false }); Object.defineProperty(CSSOM2.CSSNestedDeclarations.prototype, "style", { get: function() { return this.__style; }, set: function(value) { if (typeof value === "string") { this.__style.cssText = value; } else { this.__style = value; } } }); Object.defineProperty(CSSOM2.CSSNestedDeclarations.prototype, "cssText", { get: function() { return this.style.cssText; } }); exports2.CSSNestedDeclarations = CSSOM2.CSSNestedDeclarations; } }); // node_modules/@acemir/cssom/lib/CSSImportRule.js var require_CSSImportRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSImportRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSStyleSheet: require_CSSStyleSheet().CSSStyleSheet, MediaList: require_MediaList().MediaList }; var regexPatterns = require_regexPatterns().regexPatterns; CSSOM2.CSSImportRule = function CSSImportRule() { CSSOM2.CSSRule.call(this); this.__href = ""; this.__media = new CSSOM2.MediaList(); this.__layerName = null; this.__supportsText = null; this.__styleSheet = new CSSOM2.CSSStyleSheet(); }; CSSOM2.CSSImportRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSImportRule.prototype.constructor = CSSOM2.CSSImportRule; Object.setPrototypeOf(CSSOM2.CSSImportRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "type", { value: 3, writable: false }); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "cssText", { get: function() { var mediaText = this.media.mediaText; return '@import url("' + this.href.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '")' + (this.layerName !== null ? " layer" + (this.layerName && "(" + this.layerName + ")") : "") + (this.supportsText ? " supports(" + this.supportsText + ")" : "") + (mediaText ? " " + mediaText : "") + ";"; } }); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "href", { get: function() { return this.__href; } }); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "media", { get: function() { return this.__media; }, set: function(value) { if (typeof value === "string") { this.__media.mediaText = value; } else { this.__media = value; } } }); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "layerName", { get: function() { return this.__layerName; } }); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "supportsText", { get: function() { return this.__supportsText; } }); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "styleSheet", { get: function() { return this.__styleSheet; } }); Object.defineProperty(CSSOM2.CSSImportRule.prototype, "parse", { value: function(cssText) { var i = 0; var state2 = ""; var buffer = ""; var index2; var layerRegExp = regexPatterns.layerRegExp; var layerRuleNameRegExp = regexPatterns.layerRuleNameRegExp; var doubleOrMoreSpacesRegExp = regexPatterns.doubleOrMoreSpacesRegExp; function extractSupportsContent(text) { var supportsIndex = text.indexOf("supports("); if (supportsIndex !== 0) { return null; } var depth = 0; var start = supportsIndex + "supports(".length; var i2 = start; for (; i2 < text.length; i2++) { if (text[i2] === "(") { depth++; } else if (text[i2] === ")") { if (depth === 0) { return { content: text.slice(start, i2), endIndex: i2 }; } depth--; } } return null; } for (var character; character = cssText.charAt(i); i++) { switch (character) { case " ": case " ": case "\r": case "\n": case "\f": if (state2 === "after-import") { state2 = "url"; } else { buffer += character; } break; case "@": if (!state2 && cssText.indexOf("@import", i) === i) { state2 = "after-import"; i += "import".length; buffer = ""; } break; case "u": if (state2 === "media") { buffer += character; } if (state2 === "url" && cssText.indexOf("url(", i) === i) { index2 = cssText.indexOf(")", i + 1); if (index2 === -1) { throw i + ': ")" not found'; } i += "url(".length; var url = cssText.slice(i, index2); if (url[0] === url[url.length - 1]) { if (url[0] === '"' || url[0] === "'") { url = url.slice(1, -1); } } this.__href = url; i = index2; state2 = "media"; } break; case '"': if (state2 === "after-import" || state2 === "url") { index2 = cssText.indexOf('"', i + 1); if (!index2) { throw i + `: '"' not found`; } this.__href = cssText.slice(i + 1, index2); i = index2; state2 = "media"; } break; case "'": if (state2 === "after-import" || state2 === "url") { index2 = cssText.indexOf("'", i + 1); if (!index2) { throw i + `: "'" not found`; } this.__href = cssText.slice(i + 1, index2); i = index2; state2 = "media"; } break; case ";": if (state2 === "media") { if (buffer) { var bufferTrimmed = buffer.trim(); if (bufferTrimmed.indexOf("layer") === 0) { var layerMatch = bufferTrimmed.match(layerRegExp); if (layerMatch) { var layerName = layerMatch[1].trim(); if (layerName.match(layerRuleNameRegExp) !== null) { this.__layerName = layerMatch[1].trim(); bufferTrimmed = bufferTrimmed.replace(layerRegExp, "").replace(doubleOrMoreSpacesRegExp, " ").trim(); } else { if (bufferTrimmed) { this.media.mediaText = bufferTrimmed; return; } } } else { this.__layerName = ""; bufferTrimmed = bufferTrimmed.substring("layer".length).trim(); } } var supportsResult = extractSupportsContent(bufferTrimmed); if (supportsResult) { this.__supportsText = supportsResult.content.trim(); bufferTrimmed = bufferTrimmed.slice(0, 0) + bufferTrimmed.slice(supportsResult.endIndex + 1); bufferTrimmed = bufferTrimmed.replace(doubleOrMoreSpacesRegExp, " ").trim(); } if (bufferTrimmed) { this.media.mediaText = bufferTrimmed; } } } break; default: if (state2 === "media") { buffer += character; } break; } } } }); exports2.CSSImportRule = CSSOM2.CSSImportRule; } }); // node_modules/@acemir/cssom/lib/CSSNamespaceRule.js var require_CSSNamespaceRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSNamespaceRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSStyleSheet: require_CSSStyleSheet().CSSStyleSheet }; CSSOM2.CSSNamespaceRule = function CSSNamespaceRule() { CSSOM2.CSSRule.call(this); this.__prefix = ""; this.__namespaceURI = ""; }; CSSOM2.CSSNamespaceRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSNamespaceRule.prototype.constructor = CSSOM2.CSSNamespaceRule; Object.setPrototypeOf(CSSOM2.CSSNamespaceRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSNamespaceRule.prototype, "type", { value: 10, writable: false }); Object.defineProperty(CSSOM2.CSSNamespaceRule.prototype, "cssText", { get: function() { return "@namespace" + (this.prefix && " " + this.prefix) + ' url("' + this.namespaceURI + '");'; } }); Object.defineProperty(CSSOM2.CSSNamespaceRule.prototype, "prefix", { get: function() { return this.__prefix; } }); Object.defineProperty(CSSOM2.CSSNamespaceRule.prototype, "namespaceURI", { get: function() { return this.__namespaceURI; } }); Object.defineProperty(CSSOM2.CSSNamespaceRule.prototype, "parse", { value: function(cssText) { var newPrefix = ""; var newNamespaceURI = ""; var text = cssText.trim(); if (text.indexOf("@namespace") === 0) { text = text.slice("@namespace".length).trim(); } if (text.charAt(text.length - 1) === ";") { text = text.slice(0, -1).trim(); } var re = /^(?:([a-zA-Z_][a-zA-Z0-9_-]*)\s+)?(?:url\(\s*(?:(['"])(.*?)\2\s*|([^)]*?))\s*\)|(['"])(.*?)\5)$/; var match = text.match(re); if (match) { if (match[1]) { newPrefix = match[1]; } if (typeof match[3] !== "undefined") { newNamespaceURI = match[3]; } else if (typeof match[4] !== "undefined") { newNamespaceURI = match[4].trim(); } else if (typeof match[6] !== "undefined") { newNamespaceURI = match[6]; } this.__prefix = newPrefix; this.__namespaceURI = newNamespaceURI; } else { throw new DOMException("Invalid @namespace rule", "InvalidStateError"); } } }); exports2.CSSNamespaceRule = CSSOM2.CSSNamespaceRule; } }); // node_modules/@acemir/cssom/lib/CSSConditionRule.js var require_CSSConditionRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSConditionRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule }; CSSOM2.CSSConditionRule = function CSSConditionRule() { CSSOM2.CSSGroupingRule.call(this); this.__conditionText = ""; }; CSSOM2.CSSConditionRule.prototype = Object.create(CSSOM2.CSSGroupingRule.prototype); CSSOM2.CSSConditionRule.prototype.constructor = CSSOM2.CSSConditionRule; Object.setPrototypeOf(CSSOM2.CSSConditionRule, CSSOM2.CSSGroupingRule); Object.defineProperty(CSSOM2.CSSConditionRule.prototype, "conditionText", { get: function() { return this.__conditionText; } }); exports2.CSSConditionRule = CSSOM2.CSSConditionRule; } }); // node_modules/@acemir/cssom/lib/CSSMediaRule.js var require_CSSMediaRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSMediaRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule, CSSConditionRule: require_CSSConditionRule().CSSConditionRule, MediaList: require_MediaList().MediaList }; CSSOM2.CSSMediaRule = function CSSMediaRule() { CSSOM2.CSSConditionRule.call(this); this.__media = new CSSOM2.MediaList(); }; CSSOM2.CSSMediaRule.prototype = Object.create(CSSOM2.CSSConditionRule.prototype); CSSOM2.CSSMediaRule.prototype.constructor = CSSOM2.CSSMediaRule; Object.setPrototypeOf(CSSOM2.CSSMediaRule, CSSOM2.CSSConditionRule); Object.defineProperty(CSSOM2.CSSMediaRule.prototype, "type", { value: 4, writable: false }); Object.defineProperties(CSSOM2.CSSMediaRule.prototype, { "media": { get: function() { return this.__media; }, set: function(value) { if (typeof value === "string") { this.__media.mediaText = value; } else { this.__media = value; } }, configurable: true, enumerable: true }, "conditionText": { get: function() { return this.media.mediaText; } }, "cssText": { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; return "@media " + this.media.mediaText + values; } } }); exports2.CSSMediaRule = CSSOM2.CSSMediaRule; } }); // node_modules/@acemir/cssom/lib/CSSCounterStyleRule.js var require_CSSCounterStyleRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSCounterStyleRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule }; CSSOM2.CSSCounterStyleRule = function CSSCounterStyleRule() { CSSOM2.CSSRule.call(this); this.name = ""; this.__props = ""; }; CSSOM2.CSSCounterStyleRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSCounterStyleRule.prototype.constructor = CSSOM2.CSSCounterStyleRule; Object.setPrototypeOf(CSSOM2.CSSCounterStyleRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSCounterStyleRule.prototype, "type", { value: 11, writable: false }); Object.defineProperty(CSSOM2.CSSCounterStyleRule.prototype, "cssText", { get: function() { return "@counter-style " + this.name + " { " + this.__props + " }"; } }); Object.defineProperty(CSSOM2.CSSCounterStyleRule.prototype, "parse", { value: function(cssText) { var match = cssText.match(/@counter-style\s+([^\s{]+)\s*\{([^]*)\}/); if (match) { this.name = match[1]; var propsText = match[2]; this.__props = propsText.trim().replace(/\n/g, " ").replace(/(['"])(?:\\.|[^\\])*?\1|(\s{2,})/g, function(match2, quote) { return quote ? match2 : " "; }); } } }); exports2.CSSCounterStyleRule = CSSOM2.CSSCounterStyleRule; } }); // node_modules/@acemir/cssom/lib/CSSPropertyRule.js var require_CSSPropertyRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSPropertyRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule }; CSSOM2.CSSPropertyRule = function CSSPropertyRule() { CSSOM2.CSSRule.call(this); this.__name = ""; this.__syntax = ""; this.__inherits = false; this.__initialValue = null; }; CSSOM2.CSSPropertyRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSPropertyRule.prototype.constructor = CSSOM2.CSSPropertyRule; Object.setPrototypeOf(CSSOM2.CSSPropertyRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSPropertyRule.prototype, "type", { value: 0, writable: false }); Object.defineProperty(CSSOM2.CSSPropertyRule.prototype, "cssText", { get: function() { var text = "@property " + this.name + " {"; if (this.syntax !== "") { text += ' syntax: "' + this.syntax.replace(/\\/g, "\\\\").replace(/"/g, '\\"') + '";'; } text += " inherits: " + (this.inherits ? "true" : "false") + ";"; if (this.initialValue !== null) { text += " initial-value: " + this.initialValue + ";"; } text += " }"; return text; } }); Object.defineProperty(CSSOM2.CSSPropertyRule.prototype, "name", { get: function() { return this.__name; } }); Object.defineProperty(CSSOM2.CSSPropertyRule.prototype, "syntax", { get: function() { return this.__syntax; } }); Object.defineProperty(CSSOM2.CSSPropertyRule.prototype, "inherits", { get: function() { return this.__inherits; } }); Object.defineProperty(CSSOM2.CSSPropertyRule.prototype, "initialValue", { get: function() { return this.__initialValue; } }); Object.defineProperty(CSSOM2.CSSPropertyRule.prototype, "parse", { value: function(cssText) { var match = cssText.match(/@property\s+(--[^\s{]+)\s*\{([^]*)\}/); if (!match) { return false; } this.__name = match[1]; var bodyText = match[2]; var syntaxMatch = bodyText.match(/syntax\s*:\s*(['"])([^]*?)\1\s*;/); if (!syntaxMatch) { return false; } this.__syntax = syntaxMatch[2]; if (this.__syntax === "") { return false; } var inheritsMatch = bodyText.match(/inherits\s*:\s*(true|false)\s*;/); if (!inheritsMatch) { return false; } this.__inherits = inheritsMatch[1] === "true"; var initialValueMatch = bodyText.match(/initial-value\s*:\s*([^;]+);/); if (initialValueMatch) { this.__initialValue = initialValueMatch[1].trim(); } else { if (this.__syntax !== "*") { return false; } } return true; } }); exports2.CSSPropertyRule = CSSOM2.CSSPropertyRule; } }); // node_modules/@acemir/cssom/lib/CSSContainerRule.js var require_CSSContainerRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSContainerRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule, CSSConditionRule: require_CSSConditionRule().CSSConditionRule }; CSSOM2.CSSContainerRule = function CSSContainerRule() { CSSOM2.CSSConditionRule.call(this); }; CSSOM2.CSSContainerRule.prototype = Object.create(CSSOM2.CSSConditionRule.prototype); CSSOM2.CSSContainerRule.prototype.constructor = CSSOM2.CSSContainerRule; Object.setPrototypeOf(CSSOM2.CSSContainerRule, CSSOM2.CSSConditionRule); Object.defineProperty(CSSOM2.CSSContainerRule.prototype, "type", { value: 17, writable: false }); Object.defineProperties(CSSOM2.CSSContainerRule.prototype, { "cssText": { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; return "@container " + this.conditionText + values; } }, "containerName": { get: function() { var parts = this.conditionText.trim().split(/\s+/); if (parts.length > 1 && parts[0] !== "(" && !parts[0].startsWith("(")) { return parts[0]; } return ""; } }, "containerQuery": { get: function() { var parts = this.conditionText.trim().split(/\s+/); if (parts.length > 1 && parts[0] !== "(" && !parts[0].startsWith("(")) { return parts.slice(1).join(" "); } return this.conditionText; } } }); exports2.CSSContainerRule = CSSOM2.CSSContainerRule; } }); // node_modules/@acemir/cssom/lib/CSSSupportsRule.js var require_CSSSupportsRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSSupportsRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule, CSSConditionRule: require_CSSConditionRule().CSSConditionRule }; CSSOM2.CSSSupportsRule = function CSSSupportsRule() { CSSOM2.CSSConditionRule.call(this); }; CSSOM2.CSSSupportsRule.prototype = Object.create(CSSOM2.CSSConditionRule.prototype); CSSOM2.CSSSupportsRule.prototype.constructor = CSSOM2.CSSSupportsRule; Object.setPrototypeOf(CSSOM2.CSSSupportsRule, CSSOM2.CSSConditionRule); Object.defineProperty(CSSOM2.CSSSupportsRule.prototype, "type", { value: 12, writable: false }); Object.defineProperty(CSSOM2.CSSSupportsRule.prototype, "cssText", { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; return "@supports " + this.conditionText + values; } }); exports2.CSSSupportsRule = CSSOM2.CSSSupportsRule; } }); // node_modules/@acemir/cssom/lib/CSSFontFaceRule.js var require_CSSFontFaceRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSFontFaceRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration, CSSRule: require_CSSRule().CSSRule }; try { CSSOM2.CSSStyleDeclaration = require("cssstyle").CSSStyleDeclaration; } catch (e) { } CSSOM2.CSSFontFaceRule = function CSSFontFaceRule() { CSSOM2.CSSRule.call(this); this.__style = new CSSOM2.CSSStyleDeclaration(); this.__style.parentRule = this; }; CSSOM2.CSSFontFaceRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSFontFaceRule.prototype.constructor = CSSOM2.CSSFontFaceRule; Object.setPrototypeOf(CSSOM2.CSSFontFaceRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSFontFaceRule.prototype, "type", { value: 5, writable: false }); Object.defineProperty(CSSOM2.CSSFontFaceRule.prototype, "style", { get: function() { return this.__style; }, set: function(value) { if (typeof value === "string") { this.__style.cssText = value; } else { this.__style = value; } } }); Object.defineProperty(CSSOM2.CSSFontFaceRule.prototype, "cssText", { get: function() { return "@font-face {" + (this.style.cssText ? " " + this.style.cssText : "") + " }"; } }); exports2.CSSFontFaceRule = CSSOM2.CSSFontFaceRule; } }); // node_modules/@acemir/cssom/lib/CSSHostRule.js var require_CSSHostRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSHostRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList }; CSSOM2.CSSHostRule = function CSSHostRule() { CSSOM2.CSSRule.call(this); this.cssRules = new CSSOM2.CSSRuleList(); }; CSSOM2.CSSHostRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSHostRule.prototype.constructor = CSSOM2.CSSHostRule; Object.setPrototypeOf(CSSOM2.CSSHostRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSHostRule.prototype, "type", { value: 1001, writable: false }); Object.defineProperty(CSSOM2.CSSHostRule.prototype, "cssText", { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; return "@host" + values; } }); exports2.CSSHostRule = CSSOM2.CSSHostRule; } }); // node_modules/@acemir/cssom/lib/CSSStartingStyleRule.js var require_CSSStartingStyleRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSStartingStyleRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule }; CSSOM2.CSSStartingStyleRule = function CSSStartingStyleRule() { CSSOM2.CSSGroupingRule.call(this); }; CSSOM2.CSSStartingStyleRule.prototype = Object.create(CSSOM2.CSSGroupingRule.prototype); CSSOM2.CSSStartingStyleRule.prototype.constructor = CSSOM2.CSSStartingStyleRule; Object.setPrototypeOf(CSSOM2.CSSStartingStyleRule, CSSOM2.CSSGroupingRule); Object.defineProperty(CSSOM2.CSSStartingStyleRule.prototype, "type", { value: 1002, writable: false }); Object.defineProperty(CSSOM2.CSSStartingStyleRule.prototype, "cssText", { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; return "@starting-style" + values; } }); exports2.CSSStartingStyleRule = CSSOM2.CSSStartingStyleRule; } }); // node_modules/@acemir/cssom/lib/CSSKeyframeRule.js var require_CSSKeyframeRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSKeyframeRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration }; try { CSSOM2.CSSStyleDeclaration = require("cssstyle").CSSStyleDeclaration; } catch (e) { } CSSOM2.CSSKeyframeRule = function CSSKeyframeRule() { CSSOM2.CSSRule.call(this); this.keyText = ""; this.__style = new CSSOM2.CSSStyleDeclaration(); this.__style.parentRule = this; }; CSSOM2.CSSKeyframeRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSKeyframeRule.prototype.constructor = CSSOM2.CSSKeyframeRule; Object.setPrototypeOf(CSSOM2.CSSKeyframeRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSKeyframeRule.prototype, "type", { value: 8, writable: false }); Object.defineProperty(CSSOM2.CSSKeyframeRule.prototype, "style", { get: function() { return this.__style; }, set: function(value) { if (typeof value === "string") { this.__style.cssText = value; } else { this.__style = value; } } }); Object.defineProperty(CSSOM2.CSSKeyframeRule.prototype, "cssText", { get: function() { return this.keyText + " {" + (this.style.cssText ? " " + this.style.cssText : "") + " }"; } }); exports2.CSSKeyframeRule = CSSOM2.CSSKeyframeRule; } }); // node_modules/@acemir/cssom/lib/CSSKeyframesRule.js var require_CSSKeyframesRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSKeyframesRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, parse: require_parse3().parse }; var errorUtils2 = require_errorUtils().errorUtils; CSSOM2.CSSKeyframesRule = function CSSKeyframesRule() { CSSOM2.CSSRule.call(this); this.name = ""; this.cssRules = new CSSOM2.CSSRuleList(); this._setupIndexedAccess(); var self2 = this; var originalPush = this.cssRules.push; var originalSplice = this.cssRules.splice; Object.defineProperty(this.cssRules, "push", { value: function() { var result = originalPush.apply(this, arguments); self2._setupIndexedAccess(); return result; }, writable: true, enumerable: false, configurable: true }); Object.defineProperty(this.cssRules, "splice", { value: function() { var result = originalSplice.apply(this, arguments); self2._setupIndexedAccess(); return result; }, writable: true, enumerable: false, configurable: true }); }; CSSOM2.CSSKeyframesRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSKeyframesRule.prototype.constructor = CSSOM2.CSSKeyframesRule; Object.setPrototypeOf(CSSOM2.CSSKeyframesRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSKeyframesRule.prototype, "type", { value: 7, writable: false }); Object.defineProperty(CSSOM2.CSSKeyframesRule.prototype, "cssText", { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; var cssWideKeywords = ["initial", "inherit", "revert", "revert-layer", "unset", "none"]; var processedName = cssWideKeywords.includes(this.name) ? '"' + this.name + '"' : this.name; return "@" + (this._vendorPrefix || "") + "keyframes " + processedName + values; } }); CSSOM2.CSSKeyframesRule.prototype.appendRule = function appendRule(rule) { if (arguments.length === 0) { errorUtils2.throwMissingArguments(this, "appendRule", "CSSKeyframesRule"); } var parsedRule; try { var tempStyleSheet = CSSOM2.parse("@keyframes temp { " + rule + " }"); if (tempStyleSheet.cssRules.length > 0 && tempStyleSheet.cssRules[0].cssRules.length > 0) { parsedRule = tempStyleSheet.cssRules[0].cssRules[0]; } else { throw new Error("Failed to parse keyframe rule"); } } catch (e) { errorUtils2.throwParseError(this, "appendRule", "CSSKeyframesRule", rule); } parsedRule.__parentRule = this; this.cssRules.push(parsedRule); }; CSSOM2.CSSKeyframesRule.prototype.deleteRule = function deleteRule(select) { if (arguments.length === 0) { errorUtils2.throwMissingArguments(this, "deleteRule", "CSSKeyframesRule"); } var normalizedSelect = this._normalizeKeyText(select); for (var i = 0; i < this.cssRules.length; i++) { var rule = this.cssRules[i]; if (this._normalizeKeyText(rule.keyText) === normalizedSelect) { rule.__parentRule = null; this.cssRules.splice(i, 1); return; } } }; CSSOM2.CSSKeyframesRule.prototype.findRule = function findRule(select) { if (arguments.length === 0) { errorUtils2.throwMissingArguments(this, "findRule", "CSSKeyframesRule"); } var normalizedSelect = this._normalizeKeyText(select); for (var i = this.cssRules.length - 1; i >= 0; i--) { var rule = this.cssRules[i]; if (this._normalizeKeyText(rule.keyText) === normalizedSelect) { return rule; } } return null; }; CSSOM2.CSSKeyframesRule.prototype._normalizeKeyText = function _normalizeKeyText(keyText) { if (!keyText) return ""; var normalized2 = keyText.toString().trim().toLowerCase(); if (normalized2 === "from") { return "0%"; } else if (normalized2 === "to") { return "100%"; } return normalized2; }; if (typeof Symbol !== "undefined" && Symbol.iterator) { CSSOM2.CSSKeyframesRule.prototype[Symbol.iterator] = function() { var index2 = 0; var cssRules = this.cssRules; return { next: function() { if (index2 < cssRules.length) { return { value: cssRules[index2++], done: false }; } else { return { done: true }; } } }; }; } CSSOM2.CSSKeyframesRule.prototype._setupIndexedAccess = function() { for (var i = 0; i < 1e3; i++) { if (this.hasOwnProperty(i)) { delete this[i]; } else { break; } } for (var i = 0; i < this.cssRules.length; i++) { (function(index2) { Object.defineProperty(this, index2, { get: function() { return this.cssRules[index2]; }, enumerable: false, configurable: true }); }).call(this, i); } Object.defineProperty(this, "length", { get: function() { return this.cssRules.length; }, enumerable: false, configurable: true }); }; exports2.CSSKeyframesRule = CSSOM2.CSSKeyframesRule; } }); // node_modules/@acemir/cssom/lib/CSSValue.js var require_CSSValue = __commonJS({ "node_modules/@acemir/cssom/lib/CSSValue.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = {}; CSSOM2.CSSValue = function CSSValue() { }; CSSOM2.CSSValue.prototype = { constructor: CSSOM2.CSSValue, // @see: http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSValue set cssText(text) { var name = this._getConstructorName(); throw new Error('DOMException: property "cssText" of "' + name + '" is readonly and can not be replaced with "' + text + '"!'); }, get cssText() { var name = this._getConstructorName(); throw new Error('getter "cssText" of "' + name + '" is not implemented!'); }, _getConstructorName: function() { var s = this.constructor.toString(), c = s.match(/function\s([^\(]+)/), name = c[1]; return name; } }; exports2.CSSValue = CSSOM2.CSSValue; } }); // node_modules/@acemir/cssom/lib/CSSValueExpression.js var require_CSSValueExpression = __commonJS({ "node_modules/@acemir/cssom/lib/CSSValueExpression.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSValue: require_CSSValue().CSSValue }; CSSOM2.CSSValueExpression = function CSSValueExpression(token, idx) { this._token = token; this._idx = idx; }; CSSOM2.CSSValueExpression.prototype = Object.create(CSSOM2.CSSValue.prototype); CSSOM2.CSSValueExpression.prototype.constructor = CSSOM2.CSSValueExpression; Object.setPrototypeOf(CSSOM2.CSSValueExpression, CSSOM2.CSSValue); CSSOM2.CSSValueExpression.prototype.parse = function() { var token = this._token, idx = this._idx; var character = "", expression = "", error = "", info, paren = []; for (; ; ++idx) { character = token.charAt(idx); if (character === "") { error = "css expression error: unfinished expression!"; break; } switch (character) { case "(": paren.push(character); expression += character; break; case ")": paren.pop(character); expression += character; break; case "/": if (info = this._parseJSComment(token, idx)) { if (info.error) { error = "css expression error: unfinished comment in expression!"; } else { idx = info.idx; } } else if (info = this._parseJSRexExp(token, idx)) { idx = info.idx; expression += info.text; } else { expression += character; } break; case "'": case '"': info = this._parseJSString(token, idx, character); if (info) { idx = info.idx; expression += info.text; } else { expression += character; } break; default: expression += character; break; } if (error) { break; } if (paren.length === 0) { break; } } var ret; if (error) { ret = { error }; } else { ret = { idx, expression }; } return ret; }; CSSOM2.CSSValueExpression.prototype._parseJSComment = function(token, idx) { var nextChar = token.charAt(idx + 1), text; if (nextChar === "/" || nextChar === "*") { var startIdx = idx, endIdx, commentEndChar; if (nextChar === "/") { commentEndChar = "\n"; } else if (nextChar === "*") { commentEndChar = "*/"; } endIdx = token.indexOf(commentEndChar, startIdx + 1 + 1); if (endIdx !== -1) { endIdx = endIdx + commentEndChar.length - 1; text = token.substring(idx, endIdx + 1); return { idx: endIdx, text }; } else { var error = "css expression error: unfinished comment in expression!"; return { error }; } } else { return false; } }; CSSOM2.CSSValueExpression.prototype._parseJSString = function(token, idx, sep) { var endIdx = this._findMatchedIdx(token, idx, sep), text; if (endIdx === -1) { return false; } else { text = token.substring(idx, endIdx + sep.length); return { idx: endIdx, text }; } }; CSSOM2.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) { var before = token.substring(0, idx).replace(/\s+$/, ""), legalRegx = [ /^$/, /\($/, /\[$/, /\!$/, /\+$/, /\-$/, /\*$/, /\/\s+/, /\%$/, /\=$/, /\>$/, /<$/, /\&$/, /\|$/, /\^$/, /\~$/, /\?$/, /\,$/, /delete$/, /in$/, /instanceof$/, /new$/, /typeof$/, /void$/ ]; var isLegal = legalRegx.some(function(reg) { return reg.test(before); }); if (!isLegal) { return false; } else { var sep = "/"; return this._parseJSString(token, idx, sep); } }; CSSOM2.CSSValueExpression.prototype._findMatchedIdx = function(token, idx, sep) { var startIdx = idx, endIdx; var NOT_FOUND = -1; while (true) { endIdx = token.indexOf(sep, startIdx + 1); if (endIdx === -1) { endIdx = NOT_FOUND; break; } else { var text = token.substring(idx + 1, endIdx), matched = text.match(/\\+$/); if (!matched || matched[0] % 2 === 0) { break; } else { startIdx = endIdx; } } } var nextNewLineIdx = token.indexOf("\n", idx + 1); if (nextNewLineIdx < endIdx) { endIdx = NOT_FOUND; } return endIdx; }; exports2.CSSValueExpression = CSSOM2.CSSValueExpression; } }); // node_modules/@acemir/cssom/lib/MatcherList.js var require_MatcherList = __commonJS({ "node_modules/@acemir/cssom/lib/MatcherList.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = {}; CSSOM2.MatcherList = function MatcherList() { this.length = 0; }; CSSOM2.MatcherList.prototype = { constructor: CSSOM2.MatcherList, /** * @return {string} */ get matcherText() { return Array.prototype.join.call(this, ", "); }, /** * @param {string} value */ set matcherText(value) { var values = value.split(","); var length = this.length = values.length; for (var i = 0; i < length; i++) { this[i] = values[i].trim(); } }, /** * @param {string} matcher */ appendMatcher: function(matcher) { if (Array.prototype.indexOf.call(this, matcher) === -1) { this[this.length] = matcher; this.length++; } }, /** * @param {string} matcher */ deleteMatcher: function(matcher) { var index2 = Array.prototype.indexOf.call(this, matcher); if (index2 !== -1) { Array.prototype.splice.call(this, index2, 1); } } }; exports2.MatcherList = CSSOM2.MatcherList; } }); // node_modules/@acemir/cssom/lib/CSSDocumentRule.js var require_CSSDocumentRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSDocumentRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, MatcherList: require_MatcherList().MatcherList }; CSSOM2.CSSDocumentRule = function CSSDocumentRule() { CSSOM2.CSSRule.call(this); this.matcher = new CSSOM2.MatcherList(); this.cssRules = new CSSOM2.CSSRuleList(); }; CSSOM2.CSSDocumentRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSDocumentRule.prototype.constructor = CSSOM2.CSSDocumentRule; Object.setPrototypeOf(CSSOM2.CSSDocumentRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSDocumentRule.prototype, "type", { value: 10, writable: false }); Object.defineProperty(CSSOM2.CSSDocumentRule.prototype, "cssText", { get: function() { var cssTexts = []; for (var i = 0, length = this.cssRules.length; i < length; i++) { cssTexts.push(this.cssRules[i].cssText); } return "@-moz-document " + this.matcher.matcherText + " {" + (cssTexts.length ? "\n " + cssTexts.join("\n ") : "") + "\n}"; } }); exports2.CSSDocumentRule = CSSOM2.CSSDocumentRule; } }); // node_modules/@acemir/cssom/lib/CSSScopeRule.js var require_CSSScopeRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSScopeRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule }; CSSOM2.CSSScopeRule = function CSSScopeRule() { CSSOM2.CSSGroupingRule.call(this); this.__start = null; this.__end = null; }; CSSOM2.CSSScopeRule.prototype = Object.create(CSSOM2.CSSGroupingRule.prototype); CSSOM2.CSSScopeRule.prototype.constructor = CSSOM2.CSSScopeRule; Object.setPrototypeOf(CSSOM2.CSSScopeRule, CSSOM2.CSSGroupingRule); Object.defineProperties(CSSOM2.CSSScopeRule.prototype, { type: { value: 0, writable: false }, cssText: { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; return "@scope" + (this.start ? " (" + this.start + ")" : "") + (this.end ? " to (" + this.end + ")" : "") + values; }, configurable: true, enumerable: true }, start: { get: function() { return this.__start; } }, end: { get: function() { return this.__end; } } }); exports2.CSSScopeRule = CSSOM2.CSSScopeRule; } }); // node_modules/@acemir/cssom/lib/CSSLayerBlockRule.js var require_CSSLayerBlockRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSLayerBlockRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule }; CSSOM2.CSSLayerBlockRule = function CSSLayerBlockRule() { CSSOM2.CSSGroupingRule.call(this); this.name = ""; }; CSSOM2.CSSLayerBlockRule.prototype = Object.create(CSSOM2.CSSGroupingRule.prototype); CSSOM2.CSSLayerBlockRule.prototype.constructor = CSSOM2.CSSLayerBlockRule; Object.setPrototypeOf(CSSOM2.CSSLayerBlockRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSLayerBlockRule.prototype, "type", { value: 18, writable: false }); Object.defineProperties(CSSOM2.CSSLayerBlockRule.prototype, { cssText: { get: function() { var values = ""; var valuesArr = [" {"]; if (this.cssRules.length) { valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); } values = valuesArr.join("\n ") + "\n}"; return "@layer" + (this.name ? " " + this.name : "") + values; } } }); exports2.CSSLayerBlockRule = CSSOM2.CSSLayerBlockRule; } }); // node_modules/@acemir/cssom/lib/CSSLayerStatementRule.js var require_CSSLayerStatementRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSLayerStatementRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSRule: require_CSSRule().CSSRule }; CSSOM2.CSSLayerStatementRule = function CSSLayerStatementRule() { CSSOM2.CSSRule.call(this); this.nameList = []; }; CSSOM2.CSSLayerStatementRule.prototype = Object.create(CSSOM2.CSSRule.prototype); CSSOM2.CSSLayerStatementRule.prototype.constructor = CSSOM2.CSSLayerStatementRule; Object.setPrototypeOf(CSSOM2.CSSLayerStatementRule, CSSOM2.CSSRule); Object.defineProperty(CSSOM2.CSSLayerStatementRule.prototype, "type", { value: 0, writable: false }); Object.defineProperties(CSSOM2.CSSLayerStatementRule.prototype, { cssText: { get: function() { return "@layer " + this.nameList.join(", ") + ";"; } } }); exports2.CSSLayerStatementRule = CSSOM2.CSSLayerStatementRule; } }); // node_modules/@acemir/cssom/lib/CSSPageRule.js var require_CSSPageRule = __commonJS({ "node_modules/@acemir/cssom/lib/CSSPageRule.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration, CSSRule: require_CSSRule().CSSRule, CSSRuleList: require_CSSRuleList().CSSRuleList, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule }; var regexPatterns = require_regexPatterns().regexPatterns; try { CSSOM2.CSSStyleDeclaration = require("cssstyle").CSSStyleDeclaration; } catch (e) { } CSSOM2.CSSPageRule = function CSSPageRule() { CSSOM2.CSSGroupingRule.call(this); this.__style = new CSSOM2.CSSStyleDeclaration(); this.__style.parentRule = this; }; CSSOM2.CSSPageRule.prototype = Object.create(CSSOM2.CSSGroupingRule.prototype); CSSOM2.CSSPageRule.prototype.constructor = CSSOM2.CSSPageRule; Object.setPrototypeOf(CSSOM2.CSSPageRule, CSSOM2.CSSGroupingRule); Object.defineProperty(CSSOM2.CSSPageRule.prototype, "type", { value: 6, writable: false }); Object.defineProperty(CSSOM2.CSSPageRule.prototype, "selectorText", { get: function() { return this.__selectorText; }, set: function(value) { if (typeof value === "string") { var trimmedValue = value.trim(); if (trimmedValue === "") { this.__selectorText = ""; return; } var atPageRuleSelectorRegExp = regexPatterns.atPageRuleSelectorRegExp; var cssCustomIdentifierRegExp = regexPatterns.cssCustomIdentifierRegExp; var match = trimmedValue.match(atPageRuleSelectorRegExp); if (match) { var pageName = match[1] || ""; var pseudoPages = match[2] || ""; if (pageName) { if (!cssCustomIdentifierRegExp.test(pageName)) { return; } } if (pseudoPages) { var pseudos2 = pseudoPages.split(":").filter(function(p) { return p; }); var validPseudos = ["left", "right", "first", "blank"]; var allValid = true; for (var j = 0; j < pseudos2.length; j++) { if (validPseudos.indexOf(pseudos2[j].toLowerCase()) === -1) { allValid = false; break; } } if (!allValid) { return; } } this.__selectorText = pageName + pseudoPages.toLowerCase(); } } } }); Object.defineProperty(CSSOM2.CSSPageRule.prototype, "style", { get: function() { return this.__style; }, set: function(value) { if (typeof value === "string") { this.__style.cssText = value; } else { this.__style = value; } } }); Object.defineProperty(CSSOM2.CSSPageRule.prototype, "cssText", { get: function() { var values = ""; if (this.cssRules.length) { var valuesArr = [" {"]; this.style.cssText && valuesArr.push(this.style.cssText); valuesArr.push(this.cssRules.reduce(function(acc, rule) { if (rule.cssText !== "") { acc.push(rule.cssText); } return acc; }, []).join("\n ")); values = valuesArr.join("\n ") + "\n}"; } else { values = " {" + (this.style.cssText ? " " + this.style.cssText : "") + " }"; } return "@page" + (this.selectorText ? " " + this.selectorText : "") + values; } }); exports2.CSSPageRule = CSSOM2.CSSPageRule; } }); // node_modules/@acemir/cssom/lib/cssstyleTryCatchBlock.js var require_cssstyleTryCatchBlock = __commonJS({ "node_modules/@acemir/cssom/lib/cssstyleTryCatchBlock.js"() { init_define_import_meta_env(); try { CSSOM.CSSStyleDeclaration = require("cssstyle").CSSStyleDeclaration; } catch (e) { } } }); // node_modules/@acemir/cssom/lib/parse.js var require_parse3 = __commonJS({ "node_modules/@acemir/cssom/lib/parse.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = {}; var regexPatterns = require_regexPatterns().regexPatterns; CSSOM2.parse = function parse3(token, opts, errorHandler) { errorHandler = errorHandler === true ? console && console.error : errorHandler; var i = 0; var state2 = "before-selector"; var index2; var buffer = ""; var valueParenthesisDepth = 0; var hasUnmatchedQuoteInSelector = false; var SIGNIFICANT_WHITESPACE = { "name": true, "before-name": true, "selector": true, "value": true, "value-parenthesis": true, "atRule": true, "importRule-begin": true, "importRule": true, "namespaceRule-begin": true, "namespaceRule": true, "atBlock": true, "containerBlock": true, "conditionBlock": true, "counterStyleBlock": true, "propertyBlock": true, "documentRule-begin": true, "scopeBlock": true, "layerBlock": true, "pageBlock": true }; var styleSheet; if (opts && opts.styleSheet) { styleSheet = opts.styleSheet; } else { if (opts && opts.globalObject && opts.globalObject.CSSStyleSheet) { styleSheet = new opts.globalObject.CSSStyleSheet(); } else { styleSheet = new CSSOM2.CSSStyleSheet(); } styleSheet.__constructed = false; } var topScope; if (opts && opts.cssRules) { topScope = { cssRules: opts.cssRules }; } else { topScope = styleSheet; } if (opts && opts.ownerNode) { styleSheet.__ownerNode = opts.ownerNode; var ownerNodeMedia = opts.ownerNode.media || opts.ownerNode.getAttribute && opts.ownerNode.getAttribute("media"); if (ownerNodeMedia) { styleSheet.media.mediaText = ownerNodeMedia; } var ownerNodeTitle = opts.ownerNode.title || opts.ownerNode.getAttribute && opts.ownerNode.getAttribute("title"); if (ownerNodeTitle) { styleSheet.__title = ownerNodeTitle; } } if (opts && opts.ownerRule) { styleSheet.__ownerRule = opts.ownerRule; } var currentScope = topScope; var parentRule; var ancestorRules = []; var prevScope; var name, priority = "", styleRule, mediaRule, containerRule, counterStyleRule, propertyRule, supportsRule, importRule, fontFaceRule, keyframesRule, documentRule, hostRule, startingStyleRule, scopeRule, pageRule, layerBlockRule, layerStatementRule, nestedSelectorRule, namespaceRule; var definedNamespacePrefixes = {}; var ruleIdCounter = 0; var addedToParent = {}; var addedToTopScope = {}; var addedToCurrentScope = {}; function getRuleId(rule) { if (!rule.__parseId) { rule.__parseId = ++ruleIdCounter; } return rule.__parseId; } var lastValidationBoundary = 0; var validationRegexCache = {}; function getValidationRegex(atRuleKey) { if (!validationRegexCache[atRuleKey]) { var sourceRuleRegExp = atRuleKey === "@import" ? forwardImportRuleValidationRegExp : forwardRuleValidationRegExp; validationRegexCache[atRuleKey] = new RegExp(atRuleKey + sourceRuleRegExp.source, sourceRuleRegExp.flags); } return validationRegexCache[atRuleKey]; } var atKeyframesRegExp = regexPatterns.atKeyframesRegExp; var beforeRulePortionRegExp = regexPatterns.beforeRulePortionRegExp; var beforeRuleValidationRegExp = regexPatterns.beforeRuleValidationRegExp; var forwardRuleValidationRegExp = regexPatterns.forwardRuleValidationRegExp; var forwardImportRuleValidationRegExp = regexPatterns.forwardImportRuleValidationRegExp; var regexBefore = new RegExp(beforeRulePortionRegExp.source, beforeRulePortionRegExp.flags); var forwardRuleClosingBraceRegExp = regexPatterns.forwardRuleClosingBraceRegExp; var forwardRuleSemicolonAndOpeningBraceRegExp = regexPatterns.forwardRuleSemicolonAndOpeningBraceRegExp; var cssCustomIdentifierRegExp = regexPatterns.cssCustomIdentifierRegExp; var startsWithCombinatorRegExp = regexPatterns.startsWithCombinatorRegExp; var atPageRuleSelectorRegExp = regexPatterns.atPageRuleSelectorRegExp; var startsWithHexEscapeRegExp = regexPatterns.startsWithHexEscapeRegExp; var identStartCharRegExp = regexPatterns.identStartCharRegExp; var identCharRegExp = regexPatterns.identCharRegExp; var specialCharsNeedEscapeRegExp = regexPatterns.specialCharsNeedEscapeRegExp; var combinatorOrSeparatorRegExp = regexPatterns.combinatorOrSeparatorRegExp; var afterHexEscapeSeparatorRegExp = regexPatterns.afterHexEscapeSeparatorRegExp; var trailingSpaceSeparatorRegExp = regexPatterns.trailingSpaceSeparatorRegExp; var endsWithHexEscapeRegExp = regexPatterns.endsWithHexEscapeRegExp; var attributeSelectorContentRegExp = regexPatterns.attributeSelectorContentRegExp; var pseudoElementRegExp = regexPatterns.pseudoElementRegExp; var invalidCombinatorLtGtRegExp = regexPatterns.invalidCombinatorLtGtRegExp; var invalidCombinatorDoubleGtRegExp = regexPatterns.invalidCombinatorDoubleGtRegExp; var consecutiveCombinatorsRegExp = regexPatterns.consecutiveCombinatorsRegExp; var invalidSlottedRegExp = regexPatterns.invalidSlottedRegExp; var invalidPartRegExp = regexPatterns.invalidPartRegExp; var invalidCueRegExp = regexPatterns.invalidCueRegExp; var invalidCueRegionRegExp = regexPatterns.invalidCueRegionRegExp; var invalidNestingPattern = regexPatterns.invalidNestingPattern; var emptyPseudoClassRegExp = regexPatterns.emptyPseudoClassRegExp; var whitespaceNormalizationRegExp = regexPatterns.whitespaceNormalizationRegExp; var newlineRemovalRegExp = regexPatterns.newlineRemovalRegExp; var whitespaceAndDotRegExp = regexPatterns.whitespaceAndDotRegExp; var declarationOrOpenBraceRegExp = regexPatterns.declarationOrOpenBraceRegExp; var ampersandRegExp = regexPatterns.ampersandRegExp; var hexEscapeSequenceRegExp = regexPatterns.hexEscapeSequenceRegExp; var attributeCaseFlagRegExp = regexPatterns.attributeCaseFlagRegExp; var prependedAmpersandRegExp = regexPatterns.prependedAmpersandRegExp; var openBraceGlobalRegExp = regexPatterns.openBraceGlobalRegExp; var closeBraceGlobalRegExp = regexPatterns.closeBraceGlobalRegExp; var scopePreludeSplitRegExp = regexPatterns.scopePreludeSplitRegExp; var leadingWhitespaceRegExp = regexPatterns.leadingWhitespaceRegExp; var doubleQuoteRegExp = regexPatterns.doubleQuoteRegExp; var backslashRegExp = regexPatterns.backslashRegExp; var invalidMediaOperatorWithoutSpaceRegExp = regexPatterns.invalidMediaOperatorWithoutSpaceRegExp; var invalidMediaNotAfterOperatorRegExp = regexPatterns.invalidMediaNotAfterOperatorRegExp; var invalidMediaNotIdentifierRegExp = regexPatterns.invalidMediaNotIdentifierRegExp; var invalidMediaNotAfterFeatureRegExp = regexPatterns.invalidMediaNotAfterFeatureRegExp; var invalidMediaOperatorBetweenParensRegExp = regexPatterns.invalidMediaOperatorBetweenParensRegExp; var invalidMediaNotWithMediaTypeRegExp = regexPatterns.invalidMediaNotWithMediaTypeRegExp; var mediaFeatureColonRegExp = regexPatterns.mediaFeatureColonRegExp; var identifierBeforeParenRegExp = regexPatterns.identifierBeforeParenRegExp; var mediaAndOperatorRegExp = regexPatterns.mediaAndOperatorRegExp; var mediaOrOperatorRegExp = regexPatterns.mediaOrOperatorRegExp; var mediaNotOperatorStartRegExp = regexPatterns.mediaNotOperatorStartRegExp; var mediaNotOperatorRegExp = regexPatterns.mediaNotOperatorRegExp; function atRulesStatemenRegExpES5Alternative(ruleSlice) { for (var i2 = 0; i2 < ruleSlice.length; i2++) { var char = ruleSlice[i2]; if (char === ";" || char === "}") { var sliceBefore = ruleSlice.substring(0, i2); var openBraceIndex = sliceBefore.indexOf("{"); if (openBraceIndex === -1) { var match = char; var j = i2 + 1; while (j < ruleSlice.length && /\s/.test(ruleSlice[j])) { match += ruleSlice[j]; j++; } var matchObj = [match]; matchObj.index = i2; matchObj.input = ruleSlice; return matchObj; } } } return null; } function matchBalancedBlock(str, fromIndex) { fromIndex = fromIndex || 0; var openIndex = str.indexOf("{", fromIndex); if (openIndex === -1) return null; var depth = 0; for (var i2 = openIndex; i2 < str.length; i2++) { if (str[i2] === "{") { depth++; } else if (str[i2] === "}") { depth--; if (depth === 0) { var matchedString = str.slice(openIndex, i2 + 1); return { 0: matchedString, index: openIndex, input: str }; } } } return null; } function ignoreBalancedBlock(i2, str, fromIndex) { var ruleClosingMatch2 = matchBalancedBlock(str, fromIndex); if (ruleClosingMatch2) { var ignoreRange = ruleClosingMatch2.index + ruleClosingMatch2[0].length; i2 += ignoreRange; if (token.charAt(i2) === "}") { i2 -= 1; } } else { i2 += str.length; } return i2; } function parseScopePrelude(preludeContent) { var parts = preludeContent.split(scopePreludeSplitRegExp); if (parts.length === 2) { parts[0] = parts[0] + ")"; parts[1] = "(" + parts[1]; } var hasStart = parts[0] && parts[0].charAt(0) === "(" && parts[0].charAt(parts[0].length - 1) === ")"; var hasEnd = parts[1] && parts[1].charAt(0) === "(" && parts[1].charAt(parts[1].length - 1) === ")"; var hasOnlyEnd = !hasStart && !hasEnd && parts[0].indexOf("to (") === 0 && parts[0].charAt(parts[0].length - 1) === ")"; var startSelector = ""; var endSelector = ""; if (hasStart) { startSelector = parts[0].slice(1, -1).trim(); } if (hasEnd) { endSelector = parts[1].slice(1, -1).trim(); } if (hasOnlyEnd) { endSelector = parts[0].slice(4, -1).trim(); } return { startSelector, endSelector, hasStart, hasEnd, hasOnlyEnd }; } ; function hasPseudoElement(selector2) { return pseudoElementRegExp.test(selector2); } ; function validateBalancedSyntax(selector2, trackAttributes, useStack) { var parenDepth = 0; var bracketDepth = 0; var inSingleQuote = false; var inDoubleQuote = false; var inAttr = false; var stack = useStack ? [] : null; for (var i2 = 0; i2 < selector2.length; i2++) { var char = selector2[i2]; if (char === "\\") { var escapeLen2 = getEscapeSequenceLength(selector2, i2); if (escapeLen2 > 0) { i2 += escapeLen2 - 1; continue; } } if (inSingleQuote) { if (char === "'") { inSingleQuote = false; } } else if (inDoubleQuote) { if (char === '"') { inDoubleQuote = false; } } else if (trackAttributes && inAttr) { if (char === "]") { inAttr = false; } else if (char === "'") { inSingleQuote = true; } else if (char === '"') { inDoubleQuote = true; } } else { if (trackAttributes && char === "[") { inAttr = true; } else if (char === "'") { inSingleQuote = true; } else if (char === '"') { inDoubleQuote = true; } else if (char === "(") { if (useStack) { stack.push("("); } else { parenDepth++; } } else if (char === ")") { if (useStack) { if (!stack.length || stack.pop() !== "(") { return false; } } else { parenDepth--; if (parenDepth < 0) { return false; } } } else if (char === "[") { bracketDepth++; } else if (char === "]") { bracketDepth--; if (bracketDepth < 0) { return false; } } } } if (useStack) { return stack.length === 0 && bracketDepth === 0 && !inSingleQuote && !inDoubleQuote && !inAttr; } else { return parenDepth === 0 && bracketDepth === 0 && !inSingleQuote && !inDoubleQuote; } } ; function hasBasicSyntaxError(selector2) { return !validateBalancedSyntax(selector2, false, false); } ; function hasInvalidCombinators(selector2) { if (invalidCombinatorLtGtRegExp.test(selector2)) return true; if (invalidCombinatorDoubleGtRegExp.test(selector2)) return true; if (consecutiveCombinatorsRegExp.test(selector2)) return true; return false; } ; function hasInvalidPseudoSyntax(selector2) { var invalidPatterns = [ invalidSlottedRegExp, invalidPartRegExp, invalidCueRegExp, invalidCueRegionRegExp ]; for (var i2 = 0; i2 < invalidPatterns.length; i2++) { if (invalidPatterns[i2].test(selector2)) { return true; } } return false; } ; function hasInvalidNestingSelector(selector2) { return invalidNestingPattern.test(selector2); } ; function canAtRuleBeNested() { if (currentScope === topScope) { return true; } var hasStyleRuleInChain = false; var hasValidParent = false; if (currentScope.constructor.name === "CSSStyleRule") { hasStyleRuleInChain = true; } else if (currentScope instanceof CSSOM2.CSSScopeRule || currentScope instanceof CSSOM2.CSSConditionRule) { hasValidParent = true; } if (!hasStyleRuleInChain) { for (var j = 0; j < ancestorRules.length; j++) { if (ancestorRules[j].constructor.name === "CSSStyleRule") { hasStyleRuleInChain = true; break; } if (ancestorRules[j] instanceof CSSOM2.CSSScopeRule || ancestorRules[j] instanceof CSSOM2.CSSConditionRule) { hasValidParent = true; } } } return hasValidParent && !hasStyleRuleInChain; } function validateAtRule(atRuleKey, validCallback, cannotBeNested2) { var isValid2 = false; var ruleRegExp = getValidationRegex(atRuleKey); var lookAheadLength = Math.min(100, token.length - i); var ruleSlice = token.slice(i, i + lookAheadLength); var shouldPerformCheck = cannotBeNested2 && currentScope !== topScope ? false : true; if (shouldPerformCheck && ruleSlice.search(ruleRegExp) === 0) { var searchStart = Math.max(0, lastValidationBoundary); var beforeSlice = token.slice(searchStart, i); var matches = beforeSlice.match(regexBefore); var lastI = matches ? searchStart + beforeSlice.lastIndexOf(matches[matches.length - 1]) : searchStart; var toCheckSlice = token.slice(lastI, i); var checkedSlice = toCheckSlice.search(beforeRuleValidationRegExp); if (checkedSlice === 0) { isValid2 = true; lastValidationBoundary = lastI; } } if (isValid2 && atRuleKey === "@scope") { var openBraceIndex = ruleSlice.indexOf("{"); if (openBraceIndex !== -1) { var rulePrelude = ruleSlice.slice(0, openBraceIndex).trim(); var preludeContent = rulePrelude.slice("@scope".length).trim(); if (preludeContent.length > 0) { var parsedScopePrelude2 = parseScopePrelude(preludeContent); var startSelector = parsedScopePrelude2.startSelector; var endSelector = parsedScopePrelude2.endSelector; var hasStart = parsedScopePrelude2.hasStart; var hasEnd = parsedScopePrelude2.hasEnd; var hasOnlyEnd = parsedScopePrelude2.hasOnlyEnd; if (hasStart && startSelector === "" || hasEnd && endSelector === "" || hasOnlyEnd && endSelector === "") { isValid2 = false; } else if (startSelector && hasPseudoElement(startSelector) || endSelector && hasPseudoElement(endSelector)) { isValid2 = false; } else if (startSelector && hasBasicSyntaxError(startSelector) || endSelector && hasBasicSyntaxError(endSelector)) { isValid2 = false; } else if (startSelector && hasInvalidCombinators(startSelector) || endSelector && hasInvalidCombinators(endSelector)) { isValid2 = false; } else if (startSelector && hasInvalidPseudoSyntax(startSelector) || endSelector && hasInvalidPseudoSyntax(endSelector)) { isValid2 = false; } else if (!hasStart && !hasOnlyEnd) { isValid2 = false; } } } } if (isValid2 && atRuleKey === "@page") { var openBraceIndex = ruleSlice.indexOf("{"); if (openBraceIndex !== -1) { var rulePrelude = ruleSlice.slice(0, openBraceIndex).trim(); var preludeContent = rulePrelude.slice("@page".length).trim(); if (preludeContent.length > 0) { var trimmedValue = preludeContent.trim(); if (trimmedValue !== "") { var match = trimmedValue.match(atPageRuleSelectorRegExp); if (match) { var pageName = match[1] || ""; var pseudoPages = match[2] || ""; if (pageName) { if (!cssCustomIdentifierRegExp.test(pageName)) { isValid2 = false; } } if (pseudoPages) { var pseudos2 = pseudoPages.split(":").filter(function(p) { return p; }); var validPseudos = ["left", "right", "first", "blank"]; var allValid = true; for (var j = 0; j < pseudos2.length; j++) { if (validPseudos.indexOf(pseudos2[j].toLowerCase()) === -1) { allValid = false; break; } } if (!allValid) { isValid2 = false; } } } else { isValid2 = false; } } } } } if (!isValid2) { var ruleStatementMatch = atRulesStatemenRegExpES5Alternative(ruleSlice); if (ruleStatementMatch && currentScope !== topScope) { var ignoreEnd = ruleStatementMatch[0].indexOf(";"); i += ruleStatementMatch.index + ignoreEnd; return; } if (atRuleKey === "@layer") { var ruleSemicolonAndOpeningBraceMatch = ruleSlice.match(forwardRuleSemicolonAndOpeningBraceRegExp); if (ruleSemicolonAndOpeningBraceMatch && ruleSemicolonAndOpeningBraceMatch[1] === ";") { i += ruleSemicolonAndOpeningBraceMatch.index + ruleSemicolonAndOpeningBraceMatch[0].length; state2 = "before-selector"; return; } } i = ignoreBalancedBlock(i, ruleSlice); state2 = "before-selector"; } else { validCallback.call(this); } } function isIdentStart(c) { return /[a-zA-Z_\u00A0-\uFFFF]/.test(c); } function isIdentChar(c) { return /[a-zA-Z0-9_\u00A0-\uFFFF\-]/.test(c); } function looseSelectorValidator(selector2) { if (!selector2 || selector2.length === 0) { return false; } var i2 = 0; var len = selector2.length; var hasMatchedComponent = false; function skipEscape() { if (i2 < len && selector2[i2] === "\\") { var escapeLen2 = getEscapeSequenceLength(selector2, i2); if (escapeLen2 > 0) { i2 += escapeLen2; return true; } } return false; } function parseIdentifier() { var start2 = i2; while (i2 < len) { if (skipEscape()) { continue; } else if (isIdentChar(selector2[i2])) { i2++; } else { break; } } return i2 > start2; } function parseNamespace() { var start2 = i2; if (i2 < len && selector2[i2] === "*") { i2++; } else if (i2 < len && (isIdentStart(selector2[i2]) || selector2[i2] === "\\")) { parseIdentifier(); } if (i2 < len && selector2[i2] === "|") { i2++; return true; } i2 = start2; return false; } function parsePseudoArgs() { if (i2 >= len || selector2[i2] !== "(") { return false; } i2++; var depth2 = 1; var inString = false; var stringChar = ""; while (i2 < len && depth2 > 0) { var c = selector2[i2]; if (c === "\\" && i2 + 1 < len) { i2 += 2; } else if (!inString && (c === '"' || c === "'")) { inString = true; stringChar = c; i2++; } else if (inString && c === stringChar) { inString = false; i2++; } else if (!inString && c === "(") { depth2++; i2++; } else if (!inString && c === ")") { depth2--; i2++; } else { i2++; } } return depth2 === 0; } while (i2 < len) { var matched = false; var start = i2; while (i2 < len && /\s/.test(selector2[i2])) { i2++; } if (i2 > start) { hasMatchedComponent = true; continue; } if (i2 < len && /[>+~]/.test(selector2[i2])) { i2++; hasMatchedComponent = true; while (i2 < len && /\s/.test(selector2[i2])) { i2++; } continue; } if (i2 < len && selector2[i2] === "&") { i2++; hasMatchedComponent = true; matched = true; } else if (i2 < len && selector2[i2] === ".") { i2++; if (parseIdentifier()) { hasMatchedComponent = true; matched = true; } } else if (i2 < len && selector2[i2] === "#") { i2++; if (parseIdentifier()) { hasMatchedComponent = true; matched = true; } } else if (i2 < len && selector2[i2] === ":") { i2++; if (i2 < len && selector2[i2] === ":") { i2++; } if (parseIdentifier()) { parsePseudoArgs(); hasMatchedComponent = true; matched = true; } } else if (i2 < len && selector2[i2] === "[") { i2++; var depth = 1; while (i2 < len && depth > 0) { if (selector2[i2] === "\\") { i2 += 2; } else if (selector2[i2] === "'") { i2++; while (i2 < len && selector2[i2] !== "'") { if (selector2[i2] === "\\") i2 += 2; else i2++; } if (i2 < len) i2++; } else if (selector2[i2] === '"') { i2++; while (i2 < len && selector2[i2] !== '"') { if (selector2[i2] === "\\") i2 += 2; else i2++; } if (i2 < len) i2++; } else if (selector2[i2] === "[") { depth++; i2++; } else if (selector2[i2] === "]") { depth--; i2++; } else { i2++; } } if (depth === 0) { hasMatchedComponent = true; matched = true; } } else if (i2 < len && (isIdentStart(selector2[i2]) || selector2[i2] === "\\" || selector2[i2] === "*" || selector2[i2] === "|" || selector2[i2] === "-")) { parseNamespace(); if (i2 < len && selector2[i2] === "*") { i2++; hasMatchedComponent = true; matched = true; } else if (i2 < len && (isIdentStart(selector2[i2]) || selector2[i2] === "\\" || selector2[i2] === "-")) { if (parseIdentifier()) { hasMatchedComponent = true; matched = true; } } } if (!matched && i2 === start) { return false; } } return hasMatchedComponent; } function basicSelectorValidator(selector2) { if (selector2.length > 1e4) { return false; } if (!validateBalancedSyntax(selector2, true, true)) { return false; } if (hasInvalidCombinators(selector2)) { return false; } if (hasInvalidPseudoSyntax(selector2)) { return false; } if (hasInvalidNestingSelector(selector2)) { return false; } var noQuotesPseudos = ["lang", "dir", "nth-child", "nth-last-child", "nth-of-type", "nth-last-of-type"]; for (var idx = 0; idx < selector2.length; idx++) { if (selector2[idx] === ":") { var pseudoStart = idx; idx++; if (idx < selector2.length && selector2[idx] === ":") { idx++; } var nameStart = idx; while (idx < selector2.length && /[a-zA-Z0-9\-]/.test(selector2[idx])) { idx++; } if (idx === nameStart) { continue; } var pseudoName = selector2.substring(nameStart, idx).toLowerCase(); if (idx < selector2.length && selector2[idx] === "(") { idx++; var contentStart = idx; var depth = 1; while (idx < selector2.length && depth > 0) { if (selector2[idx] === "\\") { idx += 2; } else if (selector2[idx] === "(") { depth++; idx++; } else if (selector2[idx] === ")") { depth--; idx++; } else { idx++; } } if (depth === 0) { var pseudoContent = selector2.substring(contentStart, idx - 1); for (var j = 0; j < noQuotesPseudos.length; j++) { if (pseudoName === noQuotesPseudos[j] && /['"]/.test(pseudoContent)) { return false; } } } } } } return looseSelectorValidator(selector2); } function extractPseudoClasses(selector2) { var matches = []; for (var i2 = 0; i2 < selector2.length; i2++) { if (selector2[i2] === ":") { var pseudoStart = i2; i2++; if (i2 < selector2.length && selector2[i2] === ":") { i2++; } var nameStart = i2; while (i2 < selector2.length && /[a-zA-Z\-]/.test(selector2[i2])) { i2++; } if (i2 === nameStart) { continue; } var pseudoName = selector2.substring(nameStart, i2); if (i2 < selector2.length && selector2[i2] === "(") { i2++; var argsStart = i2; var depth = 1; var inSingleQuote = false; var inDoubleQuote = false; while (i2 < selector2.length && depth > 0) { var ch = selector2[i2]; if (ch === "\\") { i2 += 2; } else if (ch === "'" && !inDoubleQuote) { inSingleQuote = !inSingleQuote; i2++; } else if (ch === '"' && !inSingleQuote) { inDoubleQuote = !inDoubleQuote; i2++; } else if (ch === "(" && !inSingleQuote && !inDoubleQuote) { depth++; i2++; } else if (ch === ")" && !inSingleQuote && !inDoubleQuote) { depth--; i2++; } else { i2++; } } if (depth === 0) { var pseudoArgs = selector2.substring(argsStart, i2 - 1); var fullMatch = selector2.substring(pseudoStart, i2); matches.push([fullMatch, pseudoName, pseudoArgs, pseudoStart]); } i2--; } } } return matches; } function parseAndSplitNestedSelectors(selector2) { var depth = 0; var buffer2 = ""; var parts = []; var inSingleQuote = false; var inDoubleQuote = false; var i2, char; for (i2 = 0; i2 < selector2.length; i2++) { char = selector2.charAt(i2); if (char === "\\" && i2 + 1 < selector2.length) { buffer2 += char; i2++; buffer2 += selector2.charAt(i2); continue; } if (char === "'" && !inDoubleQuote) { inSingleQuote = !inSingleQuote; buffer2 += char; } else if (char === '"' && !inSingleQuote) { inDoubleQuote = !inDoubleQuote; buffer2 += char; } else if (!inSingleQuote && !inDoubleQuote) { if (char === "(") { depth++; buffer2 += char; } else if (char === ")") { depth--; buffer2 += char; } else if (char === "," && depth === 0) { if (buffer2.trim()) { parts.push(buffer2.trim()); } buffer2 = ""; } else { buffer2 += char; } } else { buffer2 += char; } } var trimmed = buffer2.trim(); if (trimmed) { var endsWithHexEscape = endsWithHexEscapeRegExp.test(buffer2); parts.push(endsWithHexEscape ? buffer2.replace(leadingWhitespaceRegExp, "") : trimmed); } return parts; } var validatedSelectorsCache = {}; var selectorListPseudoClasses = { "not": true, "is": true, "has": true, "where": true }; function validateSelector(selector2) { if (validatedSelectorsCache.hasOwnProperty(selector2)) { return validatedSelectorsCache[selector2]; } var pseudoClassMatches = extractPseudoClasses(selector2); for (var j = 0; j < pseudoClassMatches.length; j++) { var pseudoClass = pseudoClassMatches[j][1]; if (selectorListPseudoClasses.hasOwnProperty(pseudoClass)) { var nestedSelectors = parseAndSplitNestedSelectors(pseudoClassMatches[j][2]); var hasAmpersand = false; for (var k = 0; k < nestedSelectors.length; k++) { if (ampersandRegExp.test(nestedSelectors[k])) { hasAmpersand = true; break; } } if (hasAmpersand) { continue; } for (var i2 = 0; i2 < nestedSelectors.length; i2++) { var nestedSelector = nestedSelectors[i2]; if (!validatedSelectorsCache.hasOwnProperty(nestedSelector)) { var nestedSelectorValidation = validateSelector(nestedSelector); validatedSelectorsCache[nestedSelector] = nestedSelectorValidation; if (!nestedSelectorValidation) { validatedSelectorsCache[selector2] = false; return false; } } else if (!validatedSelectorsCache[nestedSelector]) { validatedSelectorsCache[selector2] = false; return false; } } } } var basicSelectorValidation = basicSelectorValidator(selector2); validatedSelectorsCache[selector2] = basicSelectorValidation; return basicSelectorValidation; } function validateNamespaceSelector(selector2) { var pipeIndex = -1; var inAttr = false; var inSingleQuote = false; var inDoubleQuote = false; for (var i2 = 0; i2 < selector2.length; i2++) { var char = selector2[i2]; if (char === "\\") { var escapeLen2 = getEscapeSequenceLength(selector2, i2); if (escapeLen2 > 0) { i2 += escapeLen2 - 1; continue; } } if (inSingleQuote) { if (char === "'") { inSingleQuote = false; } } else if (inDoubleQuote) { if (char === '"') { inDoubleQuote = false; } } else if (inAttr) { if (char === "]") { inAttr = false; } else if (char === "'") { inSingleQuote = true; } else if (char === '"') { inDoubleQuote = true; } } else { if (char === "[") { inAttr = true; } else if (char === "|" && !inAttr) { pipeIndex = i2; break; } } } if (pipeIndex === -1) { return true; } var namespacePrefix = selector2.substring(0, pipeIndex); if (namespacePrefix === "*" || namespacePrefix === "") { return true; } return definedNamespacePrefixes.hasOwnProperty(namespacePrefix); } function normalizeSelectorEscapes(selector2) { var result = ""; var i2 = 0; var nextChar = ""; var inIdentifier = false; var inAttribute = false; var attributeDepth = 0; var needsEscapeForIdent = false; var lastWasHexEscape = false; while (i2 < selector2.length) { var char = selector2[i2]; if (char === "[" && !inAttribute) { inAttribute = true; attributeDepth = 1; result += char; i2++; needsEscapeForIdent = false; inIdentifier = false; lastWasHexEscape = false; continue; } if (inAttribute) { if (char === "[") attributeDepth++; if (char === "]") { attributeDepth--; if (attributeDepth === 0) inAttribute = false; } if (char === "\\" && i2 + 1 < selector2.length) { var escapeLen2 = getEscapeSequenceLength(selector2, i2); result += selector2.substr(i2, escapeLen2); i2 += escapeLen2; } else { result += char; i2++; } lastWasHexEscape = false; continue; } if (char === "\\") { var escapeLen2 = getEscapeSequenceLength(selector2, i2); if (escapeLen2 > 0) { var escapeSeq = selector2.substr(i2, escapeLen2); var decoded = decodeEscapeSequence(escapeSeq); var wasHexEscape = startsWithHexEscapeRegExp.test(escapeSeq); var hadTerminatingSpace = wasHexEscape && escapeSeq[escapeLen2 - 1] === " "; nextChar = selector2[i2 + escapeLen2] || ""; var needsEscape = false; var useHexEscape = false; if (needsEscapeForIdent) { if (isDigit(decoded)) { needsEscape = true; useHexEscape = true; } else if (decoded === "-") { var remainingSelector = selector2.substring(i2 + escapeLen2); var hasMoreIdentChars = remainingSelector && identCharRegExp.test(remainingSelector[0]); needsEscape = !hasMoreIdentChars; } else if (!identStartCharRegExp.test(decoded)) { needsEscape = true; } } else { if (specialCharsNeedEscapeRegExp.test(decoded)) { needsEscape = true; } } if (needsEscape) { if (useHexEscape) { var codePoint = decoded.charCodeAt(0); var hex = codePoint.toString(16); result += "\\" + hex; if (isHexDigit(nextChar) || !nextChar || afterHexEscapeSeparatorRegExp.test(nextChar)) { result += " "; lastWasHexEscape = false; } else { lastWasHexEscape = true; } } else { result += "\\" + decoded; lastWasHexEscape = false; } } else { if (lastWasHexEscape && !hadTerminatingSpace && isAlphanumeric(decoded)) { result += " "; } result += decoded; if (hadTerminatingSpace && (!nextChar || afterHexEscapeSeparatorRegExp.test(nextChar))) { result += " "; } lastWasHexEscape = false; } i2 += escapeLen2; needsEscapeForIdent = needsEscapeForIdent && decoded === "-"; inIdentifier = true; continue; } } if (char === "." || char === "#") { result += char; needsEscapeForIdent = true; inIdentifier = false; lastWasHexEscape = false; i2++; } else if (char === "-" && needsEscapeForIdent) { result += char; needsEscapeForIdent = true; lastWasHexEscape = false; i2++; } else if (isDigit(char) && needsEscapeForIdent) { var codePoint = char.charCodeAt(0); var hex = codePoint.toString(16); result += "\\" + hex; nextChar = selector2[i2 + 1] || ""; if (isHexDigit(nextChar) || !nextChar || afterHexEscapeSeparatorRegExp.test(nextChar)) { result += " "; lastWasHexEscape = false; } else { lastWasHexEscape = true; } needsEscapeForIdent = false; inIdentifier = true; i2++; } else if (char === ":" || combinatorOrSeparatorRegExp.test(char)) { if (!(char === " " && lastWasHexEscape && result[result.length - 1] === " ")) { result += char; } needsEscapeForIdent = false; inIdentifier = false; lastWasHexEscape = false; i2++; } else if (isLetter(char) && lastWasHexEscape) { result += " " + char; needsEscapeForIdent = false; inIdentifier = true; lastWasHexEscape = false; i2++; } else if (char === " " && lastWasHexEscape) { nextChar = selector2[i2 + 1] || ""; if (!nextChar || trailingSpaceSeparatorRegExp.test(nextChar)) { result += char; } needsEscapeForIdent = false; inIdentifier = false; lastWasHexEscape = false; i2++; } else { result += char; needsEscapeForIdent = false; inIdentifier = true; lastWasHexEscape = false; i2++; } } return result; } function decodeEscapeSequencesInString(str) { var result = ""; for (var i2 = 0; i2 < str.length; i2++) { if (str[i2] === "\\" && i2 + 1 < str.length) { var escapeLen2 = getEscapeSequenceLength(str, i2); if (escapeLen2 > 0) { var escapeSeq = str.substr(i2, escapeLen2); var decoded = decodeEscapeSequence(escapeSeq); result += decoded; i2 += escapeLen2 - 1; continue; } } result += str[i2]; } return result; } function decodeEscapeSequence(escapeSeq) { if (escapeSeq.length < 2 || escapeSeq[0] !== "\\") { return escapeSeq; } var content = escapeSeq.substring(1); var hexMatch = content.match(hexEscapeSequenceRegExp); if (hexMatch) { var codePoint = parseInt(hexMatch[1], 16); if (codePoint > 65535) { codePoint -= 65536; var high = 55296 + (codePoint >> 10); var low = 56320 + (codePoint & 1023); return String.fromCharCode(high, low); } return String.fromCharCode(codePoint); } return content[0] || ""; } function normalizeAttributeSelectors(selector2) { var result = ""; var i2 = 0; while (i2 < selector2.length) { if (selector2[i2] === "[") { result += "["; i2++; var attrContent = ""; var depth = 1; while (i2 < selector2.length && depth > 0) { if (selector2[i2] === "\\" && i2 + 1 < selector2.length) { attrContent += selector2.substring(i2, i2 + 2); i2 += 2; continue; } if (selector2[i2] === "[") depth++; if (selector2[i2] === "]") { depth--; if (depth === 0) break; } attrContent += selector2[i2]; i2++; } var normalized2 = normalizeAttributeContent(attrContent); if (normalized2 === null) { return null; } result += normalized2; if (i2 < selector2.length && selector2[i2] === "]") { result += "]"; i2++; } } else { result += selector2[i2]; i2++; } } return result; } function processQuotedAttributeValue(trimmedValue, quoteChar, attrName, operator, flag) { if (trimmedValue.length < 2) { return null; } var i2 = 1; var foundClose = false; while (i2 < trimmedValue.length) { if (trimmedValue[i2] === "\\" && i2 + 1 < trimmedValue.length) { var escapeLen2 = getEscapeSequenceLength(trimmedValue, i2); i2 += escapeLen2; continue; } if (trimmedValue[i2] === quoteChar) { foundClose = i2 === trimmedValue.length - 1; break; } i2++; } if (!foundClose) { return null; } var innerValue = trimmedValue.slice(1, -1); var decodedValue = decodeEscapeSequencesInString(innerValue); var escapedValue = decodedValue.replace(doubleQuoteRegExp, '\\"'); return attrName + operator + '"' + escapedValue + '"' + (flag ? " " + flag : ""); } function normalizeAttributeContent(content) { var match = content.match(attributeSelectorContentRegExp); if (!match) { return content; } var attrName = match[1]; var operator = match[2]; var valueAndFlag = match[3].trim(); var flagMatch = valueAndFlag.match(attributeCaseFlagRegExp); var value = flagMatch ? flagMatch[1] : valueAndFlag; var flag = flagMatch ? flagMatch[2] : ""; var trimmedValue = value.trim(); var firstChar = trimmedValue[0]; if (firstChar === '"') { return processQuotedAttributeValue(trimmedValue, '"', attrName, operator, flag); } if (firstChar === "'") { return processQuotedAttributeValue(trimmedValue, "'", attrName, operator, flag); } var hasUnescapedSpecialChar = false; for (var i2 = 0; i2 < trimmedValue.length; i2++) { var char = trimmedValue[i2]; if (char === "\\" && i2 + 1 < trimmedValue.length) { var escapeLen2 = getEscapeSequenceLength(trimmedValue, i2); if (escapeLen2 > 0) { i2 += escapeLen2 - 1; continue; } } if (specialCharsNeedEscapeRegExp.test(char)) { hasUnescapedSpecialChar = true; break; } } if (hasUnescapedSpecialChar) { return null; } var decodedValue = decodeEscapeSequencesInString(trimmedValue); var escapedValue = decodedValue.replace(backslashRegExp, "\\\\").replace(doubleQuoteRegExp, '\\"'); return attrName + operator + '"' + escapedValue + '"' + (flag ? " " + flag : ""); } function processSelectorText(selectorText) { var normalized2 = selectorText.replace(whitespaceNormalizationRegExp, function(match, _, newline) { if (newline) return " "; return match; }); normalized2 = normalizeSelectorEscapes(normalized2); normalized2 = normalizeAttributeSelectors(normalized2); if (normalized2 === null) { return ""; } return processNestedPseudoClasses(normalized2); } function processNestedPseudoClasses(selectorText, depth) { if (typeof depth === "undefined") { depth = 0; } if (depth > 10) { return selectorText; } var pseudoClassMatches = extractPseudoClasses(selectorText); if (pseudoClassMatches.length === 0) { return selectorText; } var result = selectorText; for (var j = pseudoClassMatches.length - 1; j >= 0; j--) { var pseudoClass = pseudoClassMatches[j][1]; if (selectorListPseudoClasses.hasOwnProperty(pseudoClass)) { var fullMatch = pseudoClassMatches[j][0]; var pseudoArgs = pseudoClassMatches[j][2]; var matchStart = pseudoClassMatches[j][3]; var nestedSelectorsRaw = parseAndSplitNestedSelectors(pseudoArgs); var hasAmpersand = false; for (var k = 0; k < nestedSelectorsRaw.length; k++) { if (ampersandRegExp.test(nestedSelectorsRaw[k])) { hasAmpersand = true; break; } } if (hasAmpersand) { continue; } var processedArgs = processNestedPseudoClasses(pseudoArgs, depth + 1); var nestedSelectors = parseAndSplitNestedSelectors(processedArgs); var validSelectors = []; for (var i2 = 0; i2 < nestedSelectors.length; i2++) { var nestedSelector = nestedSelectors[i2]; if (basicSelectorValidator(nestedSelector)) { validSelectors.push(nestedSelector); } } var newArgs = validSelectors.join(", "); var newPseudoClass = ":" + pseudoClass + "(" + newArgs + ")"; result = result.substring(0, matchStart) + newPseudoClass + result.substring(matchStart + fullMatch.length); } } return result; return normalized; } function hasNewlineInQuotedString(selectorText) { for (var i2 = 0; i2 < selectorText.length; i2++) { var char = selectorText[i2]; if (char === "'") { i2++; while (i2 < selectorText.length) { if (selectorText[i2] === "\\" && i2 + 1 < selectorText.length) { i2 += 2; continue; } if (selectorText[i2] === "'") { break; } if (selectorText[i2] === "\r" || selectorText[i2] === "\n") { return true; } i2++; } } else if (char === '"') { i2++; while (i2 < selectorText.length) { if (selectorText[i2] === "\\" && i2 + 1 < selectorText.length) { i2 += 2; continue; } if (selectorText[i2] === '"') { break; } if (selectorText[i2] === "\r" || selectorText[i2] === "\n") { return true; } i2++; } } } return false; } function isValidSelectorText(selectorText) { if (!selectorText || selectorText.trim() === "") { return false; } if (emptyPseudoClassRegExp.test(selectorText)) { return false; } if (hasNewlineInQuotedString(selectorText)) { return false; } var selectors = parseAndSplitNestedSelectors(selectorText); for (var i2 = 0; i2 < selectors.length; i2++) { var selector2 = selectors[i2].trim(); if (!validateSelector(selector2) || !validateNamespaceSelector(selector2)) { return false; } } return true; } function pushToAncestorRules(rule) { ancestorRules.push(rule); } function parseError(message, isNested) { var lines = token.substring(0, i).split("\n"); var lineCount = lines.length; var charCount = lines.pop().length + 1; var error = new Error(message + " (line " + lineCount + ", char " + charCount + ")"); error.line = lineCount; error["char"] = charCount; error.styleSheet = styleSheet; error.isNested = !!isNested; try { throw error; } catch (e) { errorHandler && errorHandler(e); } } ; function handleUnmatchedQuoteInSelector(nextState) { var ruleClosingMatch2 = token.slice(i).match(forwardRuleClosingBraceRegExp); if (ruleClosingMatch2) { i += ruleClosingMatch2.index + ruleClosingMatch2[0].length - 1; } styleRule = null; buffer = ""; hasUnmatchedQuoteInSelector = false; state2 = nextState; } function isSelectorStartChar(char) { return ".:#&*[\\".indexOf(char) !== -1; } function isWhitespaceChar(char) { return " \n\r".indexOf(char) !== -1; } function isDigit(char) { var code = char.charCodeAt(0); return code >= 48 && code <= 57; } function isHexDigit(char) { if (!char) return false; var code = char.charCodeAt(0); return code >= 48 && code <= 57 || // 0-9 code >= 65 && code <= 70 || // A-F code >= 97 && code <= 102; } function isLetter(char) { if (!char) return false; var code = char.charCodeAt(0); return code >= 65 && code <= 90 || // A-Z code >= 97 && code <= 122; } function isAlphanumeric(char) { var code = char.charCodeAt(0); return code >= 48 && code <= 57 || // 0-9 code >= 65 && code <= 90 || // A-Z code >= 97 && code <= 122; } function getEscapeSequenceLength(str, pos) { if (str[pos] !== "\\" || pos + 1 >= str.length) { return 0; } var nextChar = str[pos + 1]; if (isHexDigit(nextChar)) { var hexLength = 1; while (hexLength < 6 && pos + 1 + hexLength < str.length && isHexDigit(str[pos + 1 + hexLength])) { hexLength++; } if (pos + 1 + hexLength < str.length && isWhitespaceChar(str[pos + 1 + hexLength])) { return 1 + hexLength + 1; } return 1 + hexLength; } return 2; } function containsUnescaped(str, char) { for (var i2 = 0; i2 < str.length; i2++) { if (str[i2] === "\\") { var escapeLen2 = getEscapeSequenceLength(str, i2); if (escapeLen2 > 0) { i2 += escapeLen2 - 1; continue; } } if (str[i2] === char) { return true; } } return false; } function isInvalidConditionText(text) { return invalidMediaOperatorWithoutSpaceRegExp.test(text) || invalidMediaNotAfterOperatorRegExp.test(text) || invalidMediaNotIdentifierRegExp.test(text) || invalidMediaNotAfterFeatureRegExp.test(text) || invalidMediaOperatorBetweenParensRegExp.test(text) || invalidMediaNotWithMediaTypeRegExp.test(text); } function normalizeConditionText(text) { if (isInvalidConditionText(text)) { return "not all"; } var result = text; result = result.replace(mediaFeatureColonRegExp, function(match, openParen, name2, spaces, rest) { var beforeMatch = result.lastIndexOf(match); var beforeParen = beforeMatch > 0 ? result.charAt(beforeMatch - 1) : ""; if (identifierBeforeParenRegExp.test(beforeParen)) { return match; } return openParen + name2 + ": " + rest; }); result = result.replace(mediaAndOperatorRegExp, " and "); result = result.replace(mediaOrOperatorRegExp, " or "); result = result.replace(mediaNotOperatorStartRegExp, "not "); result = result.replace(mediaNotOperatorRegExp, " not "); return result.trim(); } var endingIndex = token.length - 1; var initialEndingIndex = endingIndex; for (var character; character = token.charAt(i); i++) { if (i === endingIndex) { switch (state2) { case "importRule": case "namespaceRule": case "layerBlock": if (character !== ";") { token += ";"; endingIndex += 1; } break; case "value": if (character !== "}") { if (character === ";") { token += "}"; } else { token += ";"; } endingIndex += 1; break; } case "name": case "before-name": if (character === "}") { token += " "; } else { token += "}"; } endingIndex += 1; break; case "before-selector": if (character !== "}" && currentScope !== styleSheet) { token += "}"; endingIndex += 1; break; } } } if (character === "\\" && i + 1 < token.length) { var escapeLen = getEscapeSequenceLength(token, i); if (escapeLen > 0) { buffer += token.substr(i, escapeLen); i += escapeLen - 1; continue; } } switch (character) { case " ": case " ": case "\r": case "\n": case "\f": if (SIGNIFICANT_WHITESPACE[state2]) { buffer += character; } break; // String case '"': index2 = i + 1; do { index2 = token.indexOf('"', index2) + 1; if (!index2) { parseError('Unmatched "'); if (state2 === "selector" || state2 === "atRule") { hasUnmatchedQuoteInSelector = true; } } } while (token[index2 - 2] === "\\"); if (index2 === 0) { break; } buffer += token.slice(i, index2); i = index2 - 1; switch (state2) { case "before-value": state2 = "value"; break; case "importRule-begin": state2 = "importRule"; if (i === endingIndex) { token += ";"; } break; case "namespaceRule-begin": state2 = "namespaceRule"; if (i === endingIndex) { token += ";"; } break; } break; case "'": index2 = i + 1; do { index2 = token.indexOf("'", index2) + 1; if (!index2) { parseError("Unmatched '"); if (state2 === "selector" || state2 === "atRule") { hasUnmatchedQuoteInSelector = true; } } } while (token[index2 - 2] === "\\"); if (index2 === 0) { break; } buffer += token.slice(i, index2); i = index2 - 1; switch (state2) { case "before-value": state2 = "value"; break; case "importRule-begin": state2 = "importRule"; break; case "namespaceRule-begin": state2 = "namespaceRule"; break; } break; // Comment case "/": if (token.charAt(i + 1) === "*") { i += 2; index2 = token.indexOf("*/", i); if (index2 === -1) { i = token.length - 1; buffer = ""; } else { i = index2 + 1; } } else { buffer += character; } if (state2 === "importRule-begin") { buffer += " "; state2 = "importRule"; } if (state2 === "namespaceRule-begin") { buffer += " "; state2 = "namespaceRule"; } break; // At-rule case "@": if (nestedSelectorRule) { if (styleRule && styleRule.constructor.name === "CSSNestedDeclarations") { currentScope.cssRules.push(styleRule); } if (styleRule !== nestedSelectorRule && nestedSelectorRule.parentRule && nestedSelectorRule.parentRule.constructor.name === "CSSStyleRule") { styleRule = nestedSelectorRule.parentRule; } } if (token.indexOf("@-moz-document", i) === i) { validateAtRule("@-moz-document", function() { state2 = "documentRule-begin"; documentRule = new CSSOM2.CSSDocumentRule(); documentRule.__starts = i; i += "-moz-document".length; }); buffer = ""; break; } else if (token.indexOf("@media", i) === i) { validateAtRule("@media", function() { state2 = "atBlock"; mediaRule = new CSSOM2.CSSMediaRule(); mediaRule.__starts = i; i += "media".length; }); buffer = ""; break; } else if (token.indexOf("@container", i) === i) { validateAtRule("@container", function() { state2 = "containerBlock"; containerRule = new CSSOM2.CSSContainerRule(); containerRule.__starts = i; i += "container".length; }); buffer = ""; break; } else if (token.indexOf("@counter-style", i) === i) { buffer = ""; var cannotBeNested = !canAtRuleBeNested(); validateAtRule("@counter-style", function() { state2 = "counterStyleBlock"; counterStyleRule = new CSSOM2.CSSCounterStyleRule(); counterStyleRule.__starts = i; i += "counter-style".length; }, cannotBeNested); break; } else if (token.indexOf("@property", i) === i) { buffer = ""; var cannotBeNested = !canAtRuleBeNested(); validateAtRule("@property", function() { state2 = "propertyBlock"; propertyRule = new CSSOM2.CSSPropertyRule(); propertyRule.__starts = i; i += "property".length; }, cannotBeNested); break; } else if (token.indexOf("@scope", i) === i) { validateAtRule("@scope", function() { state2 = "scopeBlock"; scopeRule = new CSSOM2.CSSScopeRule(); scopeRule.__starts = i; i += "scope".length; }); buffer = ""; break; } else if (token.indexOf("@layer", i) === i) { validateAtRule("@layer", function() { state2 = "layerBlock"; layerBlockRule = new CSSOM2.CSSLayerBlockRule(); layerBlockRule.__starts = i; i += "layer".length; }); buffer = ""; break; } else if (token.indexOf("@page", i) === i) { validateAtRule("@page", function() { state2 = "pageBlock"; pageRule = new CSSOM2.CSSPageRule(); pageRule.__starts = i; i += "page".length; }); buffer = ""; break; } else if (token.indexOf("@supports", i) === i) { validateAtRule("@supports", function() { state2 = "conditionBlock"; supportsRule = new CSSOM2.CSSSupportsRule(); supportsRule.__starts = i; i += "supports".length; }); buffer = ""; break; } else if (token.indexOf("@host", i) === i) { validateAtRule("@host", function() { state2 = "hostRule-begin"; i += "host".length; hostRule = new CSSOM2.CSSHostRule(); hostRule.__starts = i; }); buffer = ""; break; } else if (token.indexOf("@starting-style", i) === i) { validateAtRule("@starting-style", function() { state2 = "startingStyleRule-begin"; i += "starting-style".length; startingStyleRule = new CSSOM2.CSSStartingStyleRule(); startingStyleRule.__starts = i; }); buffer = ""; break; } else if (token.indexOf("@import", i) === i) { buffer = ""; validateAtRule("@import", function() { state2 = "importRule-begin"; i += "import".length; buffer += "@import"; }, true); break; } else if (token.indexOf("@namespace", i) === i) { buffer = ""; validateAtRule("@namespace", function() { state2 = "namespaceRule-begin"; i += "namespace".length; buffer += "@namespace"; }, true); break; } else if (token.indexOf("@font-face", i) === i) { buffer = ""; var cannotBeNested = !canAtRuleBeNested(); validateAtRule("@font-face", function() { state2 = "fontFaceRule-begin"; i += "font-face".length; fontFaceRule = new CSSOM2.CSSFontFaceRule(); fontFaceRule.__starts = i; }, cannotBeNested); break; } else { atKeyframesRegExp.lastIndex = i; var matchKeyframes = atKeyframesRegExp.exec(token); if (matchKeyframes && matchKeyframes.index === i) { state2 = "keyframesRule-begin"; keyframesRule = new CSSOM2.CSSKeyframesRule(); keyframesRule.__starts = i; keyframesRule._vendorPrefix = matchKeyframes[1]; i += matchKeyframes[0].length - 1; buffer = ""; break; } else if (state2 === "selector") { state2 = "atRule"; } } buffer += character; break; case "{": if (currentScope === topScope) { nestedSelectorRule = null; } if (state2 === "before-selector") { parseError("Unexpected {"); i = ignoreBalancedBlock(i, token.slice(i)); break; } if (state2 === "selector" || state2 === "atRule") { if (!nestedSelectorRule && containsUnescaped(buffer, ";")) { var ruleClosingMatch = token.slice(i).match(forwardRuleClosingBraceRegExp); if (ruleClosingMatch) { styleRule = null; buffer = ""; state2 = "before-selector"; i += ruleClosingMatch.index + ruleClosingMatch[0].length; break; } } if (!styleRule) { styleRule = new CSSOM2.CSSStyleRule(); styleRule.__starts = i; } if (hasUnmatchedQuoteInSelector) { handleUnmatchedQuoteInSelector("before-selector"); break; } var originalParentRule = parentRule; if (parentRule) { styleRule.__parentRule = parentRule; pushToAncestorRules(parentRule); } currentScope = parentRule = styleRule; var processedSelectorText = processSelectorText(buffer.trim()); if (originalParentRule && originalParentRule.constructor.name === "CSSStyleRule") { styleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).map(function(sel) { return sel.indexOf("&") === -1 || startsWithCombinatorRegExp.test(sel) ? "& " + sel : sel; }).join(", "); } else { styleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).join(", "); } styleRule.style.__starts = i; styleRule.__parentStyleSheet = styleSheet; buffer = ""; state2 = "before-name"; } else if (state2 === "atBlock") { mediaRule.media.mediaText = normalizeConditionText(buffer.trim()); if (parentRule) { mediaRule.__parentRule = parentRule; pushToAncestorRules(parentRule); if (parentRule.constructor.name === "CSSStyleRule" && !nestedSelectorRule) { nestedSelectorRule = parentRule; } } currentScope = parentRule = mediaRule; pushToAncestorRules(mediaRule); mediaRule.__parentStyleSheet = styleSheet; if (!styleRule || styleRule.constructor.name !== "CSSStyleRule" || !styleRule.__parentRule) { styleRule = null; } buffer = ""; state2 = "before-selector"; } else if (state2 === "containerBlock") { containerRule.__conditionText = normalizeConditionText(buffer.trim()); if (parentRule) { containerRule.__parentRule = parentRule; pushToAncestorRules(parentRule); if (parentRule.constructor.name === "CSSStyleRule" && !nestedSelectorRule) { nestedSelectorRule = parentRule; } } currentScope = parentRule = containerRule; pushToAncestorRules(containerRule); containerRule.__parentStyleSheet = styleSheet; styleRule = null; buffer = ""; state2 = "before-selector"; } else if (state2 === "counterStyleBlock") { var counterStyleName = buffer.trim().replace(newlineRemovalRegExp, ""); var isValidCounterStyleName = counterStyleName.length > 0 && !whitespaceAndDotRegExp.test(counterStyleName); if (isValidCounterStyleName) { counterStyleRule.name = counterStyleName; if (parentRule) { counterStyleRule.__parentRule = parentRule; } counterStyleRule.__parentStyleSheet = styleSheet; styleRule = counterStyleRule; } buffer = ""; } else if (state2 === "propertyBlock") { var propertyName = buffer.trim().replace(newlineRemovalRegExp, ""); var isValidPropertyName = propertyName.indexOf("--") === 0; if (isValidPropertyName) { propertyRule.__name = propertyName; if (parentRule) { propertyRule.__parentRule = parentRule; } propertyRule.__parentStyleSheet = styleSheet; styleRule = propertyRule; } buffer = ""; } else if (state2 === "conditionBlock") { supportsRule.__conditionText = normalizeConditionText(buffer.trim()); if (parentRule) { supportsRule.__parentRule = parentRule; pushToAncestorRules(parentRule); if (parentRule.constructor.name === "CSSStyleRule" && !nestedSelectorRule) { nestedSelectorRule = parentRule; } } currentScope = parentRule = supportsRule; pushToAncestorRules(supportsRule); supportsRule.__parentStyleSheet = styleSheet; styleRule = null; buffer = ""; state2 = "before-selector"; } else if (state2 === "scopeBlock") { var parsedScopePrelude = parseScopePrelude(buffer.trim()); if (parsedScopePrelude.hasStart) { scopeRule.__start = parsedScopePrelude.startSelector; } if (parsedScopePrelude.hasEnd) { scopeRule.__end = parsedScopePrelude.endSelector; } if (parsedScopePrelude.hasOnlyEnd) { scopeRule.__end = parsedScopePrelude.endSelector; } if (parentRule) { scopeRule.__parentRule = parentRule; pushToAncestorRules(parentRule); if (parentRule.constructor.name === "CSSStyleRule" && !nestedSelectorRule) { nestedSelectorRule = parentRule; } } currentScope = parentRule = scopeRule; pushToAncestorRules(scopeRule); scopeRule.__parentStyleSheet = styleSheet; styleRule = null; buffer = ""; state2 = "before-selector"; } else if (state2 === "layerBlock") { layerBlockRule.name = buffer.trim(); var isValidName = layerBlockRule.name.length === 0 || layerBlockRule.name.match(cssCustomIdentifierRegExp) !== null; if (isValidName) { if (parentRule) { layerBlockRule.__parentRule = parentRule; pushToAncestorRules(parentRule); if (parentRule.constructor.name === "CSSStyleRule" && !nestedSelectorRule) { nestedSelectorRule = parentRule; } } currentScope = parentRule = layerBlockRule; pushToAncestorRules(layerBlockRule); layerBlockRule.__parentStyleSheet = styleSheet; } styleRule = null; buffer = ""; state2 = "before-selector"; } else if (state2 === "pageBlock") { pageRule.selectorText = buffer.trim(); if (parentRule) { pageRule.__parentRule = parentRule; pushToAncestorRules(parentRule); } currentScope = parentRule = pageRule; pageRule.__parentStyleSheet = styleSheet; styleRule = pageRule; buffer = ""; state2 = "before-name"; } else if (state2 === "hostRule-begin") { if (parentRule) { pushToAncestorRules(parentRule); } currentScope = parentRule = hostRule; pushToAncestorRules(hostRule); hostRule.__parentStyleSheet = styleSheet; buffer = ""; state2 = "before-selector"; } else if (state2 === "startingStyleRule-begin") { if (parentRule) { startingStyleRule.__parentRule = parentRule; pushToAncestorRules(parentRule); if (parentRule.constructor.name === "CSSStyleRule" && !nestedSelectorRule) { nestedSelectorRule = parentRule; } } currentScope = parentRule = startingStyleRule; pushToAncestorRules(startingStyleRule); startingStyleRule.__parentStyleSheet = styleSheet; styleRule = null; buffer = ""; state2 = "before-selector"; } else if (state2 === "fontFaceRule-begin") { if (parentRule) { fontFaceRule.__parentRule = parentRule; } fontFaceRule.__parentStyleSheet = styleSheet; styleRule = fontFaceRule; buffer = ""; state2 = "before-name"; } else if (state2 === "keyframesRule-begin") { keyframesRule.name = buffer.trim(); if (parentRule) { pushToAncestorRules(parentRule); keyframesRule.__parentRule = parentRule; } keyframesRule.__parentStyleSheet = styleSheet; currentScope = parentRule = keyframesRule; buffer = ""; state2 = "keyframeRule-begin"; } else if (state2 === "keyframeRule-begin") { styleRule = new CSSOM2.CSSKeyframeRule(); styleRule.keyText = buffer.trim(); styleRule.__starts = i; buffer = ""; state2 = "before-name"; } else if (state2 === "documentRule-begin") { documentRule.matcher.matcherText = buffer.trim(); if (parentRule) { pushToAncestorRules(parentRule); documentRule.__parentRule = parentRule; } currentScope = parentRule = documentRule; pushToAncestorRules(documentRule); documentRule.__parentStyleSheet = styleSheet; buffer = ""; state2 = "before-selector"; } else if (state2 === "before-name" || state2 === "name") { if (styleRule.constructor.name === "CSSFontFaceRule" || styleRule.constructor.name === "CSSKeyframeRule" || styleRule.constructor.name === "CSSPageRule" && parentRule === styleRule) { var ruleClosingMatch = token.slice(i).match(forwardRuleClosingBraceRegExp); if (ruleClosingMatch) { i += ruleClosingMatch.index + ruleClosingMatch[0].length - 1; buffer = ""; state2 = "before-name"; break; } } if (styleRule.constructor.name === "CSSNestedDeclarations") { if (styleRule.style.length) { parentRule.cssRules.push(styleRule); styleRule.__parentRule = parentRule; styleRule.__parentStyleSheet = styleSheet; pushToAncestorRules(parentRule); } else { pushToAncestorRules(parentRule); } } else { currentScope = parentRule = styleRule; pushToAncestorRules(parentRule); styleRule.__parentStyleSheet = styleSheet; } styleRule = new CSSOM2.CSSStyleRule(); if (hasUnmatchedQuoteInSelector) { handleUnmatchedQuoteInSelector("before-name"); break; } var processedSelectorText = processSelectorText(buffer.trim()); if (parentRule.constructor.name === "CSSScopeRule" || parentRule.constructor.name !== "CSSStyleRule" && parentRule.parentRule === null) { styleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).join(", "); } else { styleRule.selectorText = parseAndSplitNestedSelectors(processedSelectorText).map(function(sel) { return sel.indexOf("&") === -1 || startsWithCombinatorRegExp.test(sel) ? "& " + sel : sel; }).join(", "); } styleRule.style.__starts = i - buffer.length; styleRule.__parentRule = parentRule; if (parentRule.constructor.name === "CSSStyleRule" || parentRule.constructor.name === "CSSScopeRule") { nestedSelectorRule = styleRule; } styleRule.__parentStyleSheet = styleSheet; currentScope = parentRule = styleRule; buffer = ""; state2 = "before-name"; } break; case ":": if (state2 === "name") { var openBraceBeforeMatch = token.slice(i).match(declarationOrOpenBraceRegExp); var hasOpenBraceBefore = openBraceBeforeMatch && openBraceBeforeMatch[0] === "{"; if (hasOpenBraceBefore) { buffer += character; } else { name = buffer.trim(); buffer = ""; state2 = "before-value"; } } else { buffer += character; } break; case "(": if (state2 === "value") { if (buffer.trim() === "expression") { var info = new CSSOM2.CSSValueExpression(token, i).parse(); if (info.error) { parseError(info.error); } else { buffer += info.expression; i = info.idx; } } else { state2 = "value-parenthesis"; valueParenthesisDepth = 1; buffer += character; } } else if (state2 === "value-parenthesis") { valueParenthesisDepth++; buffer += character; } else { buffer += character; } break; case ")": if (state2 === "value-parenthesis") { valueParenthesisDepth--; if (valueParenthesisDepth === 0) state2 = "value"; } buffer += character; break; case "!": if (state2 === "value" && token.indexOf("!important", i) === i) { priority = "important"; i += "important".length; } else { buffer += character; } break; case ";": switch (state2) { case "before-value": case "before-name": parseError("Unexpected ;"); buffer = ""; state2 = "before-name"; break; case "value": styleRule.style.setProperty(name, buffer.trim(), priority, parseError); priority = ""; buffer = ""; state2 = "before-name"; break; case "atRule": buffer = ""; state2 = "before-selector"; break; case "importRule": var isValid = topScope.cssRules.length === 0 || topScope.cssRules.some(function(rule) { return ["CSSImportRule", "CSSLayerStatementRule"].indexOf(rule.constructor.name) !== -1; }); if (isValid) { importRule = new CSSOM2.CSSImportRule(); if (opts && opts.globalObject && opts.globalObject.CSSStyleSheet) { importRule.__styleSheet = new opts.globalObject.CSSStyleSheet(); } importRule.styleSheet.__constructed = false; importRule.__parentStyleSheet = importRule.styleSheet.__parentStyleSheet = styleSheet; importRule.parse(buffer + character); topScope.cssRules.push(importRule); } buffer = ""; state2 = "before-selector"; break; case "namespaceRule": var isValid = topScope.cssRules.length === 0 || topScope.cssRules.every(function(rule) { return ["CSSImportRule", "CSSLayerStatementRule", "CSSNamespaceRule"].indexOf(rule.constructor.name) !== -1; }); if (isValid) { try { var testNamespaceRule = new CSSOM2.CSSNamespaceRule(); testNamespaceRule.parse(buffer + character); namespaceRule = testNamespaceRule; namespaceRule.__parentStyleSheet = styleSheet; topScope.cssRules.push(namespaceRule); if (namespaceRule.prefix) { definedNamespacePrefixes[namespaceRule.prefix] = namespaceRule.namespaceURI; } } catch (e) { parseError(e.message); } } buffer = ""; state2 = "before-selector"; break; case "layerBlock": var nameListStr = buffer.trim().split(",").map(function(name2) { return name2.trim(); }); var isInvalid = nameListStr.some(function(name2) { return name2.trim().match(cssCustomIdentifierRegExp) === null; }); var hasStyleRuleParent = false; if (parentRule) { var checkParent = parentRule; while (checkParent) { if (checkParent.constructor.name === "CSSStyleRule") { hasStyleRuleParent = true; break; } checkParent = checkParent.__parentRule; } } if (!isInvalid && !hasStyleRuleParent) { layerStatementRule = new CSSOM2.CSSLayerStatementRule(); layerStatementRule.__parentStyleSheet = styleSheet; layerStatementRule.__starts = layerBlockRule.__starts; layerStatementRule.__ends = i; layerStatementRule.nameList = nameListStr; if (parentRule) { layerStatementRule.__parentRule = parentRule; parentRule.cssRules.push(layerStatementRule); } else { topScope.cssRules.push(layerStatementRule); } } buffer = ""; state2 = "before-selector"; break; default: buffer += character; break; } break; case "}": if (state2 === "counterStyleBlock") { if (counterStyleRule.name) { counterStyleRule.parse("@counter-style " + counterStyleRule.name + " { " + buffer + " }"); counterStyleRule.__ends = i + 1; if (counterStyleRule.__parentRule) { counterStyleRule.__parentRule.cssRules.push(counterStyleRule); } else { topScope.cssRules.push(counterStyleRule); } } if (counterStyleRule.__parentRule) { currentScope = counterStyleRule.__parentRule; } styleRule = null; buffer = ""; state2 = "before-selector"; break; } if (state2 === "propertyBlock") { if (propertyRule.__name) { var parseSuccess = propertyRule.parse("@property " + propertyRule.__name + " { " + buffer + " }"); if (parseSuccess) { propertyRule.__ends = i + 1; if (propertyRule.__parentRule) { propertyRule.__parentRule.cssRules.push(propertyRule); } else { topScope.cssRules.push(propertyRule); } } } if (propertyRule.__parentRule) { currentScope = propertyRule.__parentRule; } styleRule = null; buffer = ""; state2 = "before-selector"; break; } switch (state2) { case "value": styleRule.style.setProperty(name, buffer.trim(), priority, parseError); priority = ""; /* falls through */ case "before-value": case "before-name": case "name": styleRule.__ends = i + 1; if (parentRule === styleRule) { parentRule = ancestorRules.pop(); } if (parentRule) { styleRule.__parentRule = parentRule; } styleRule.__parentStyleSheet = styleSheet; if (currentScope === styleRule) { currentScope = parentRule || topScope; } if (styleRule.constructor.name === "CSSStyleRule" && !isValidSelectorText(styleRule.selectorText)) { if (styleRule === nestedSelectorRule) { nestedSelectorRule = null; } parseError('Invalid CSSStyleRule (selectorText = "' + styleRule.selectorText + '")', styleRule.parentRule !== null); } else { if (styleRule.parentRule) { styleRule.parentRule.cssRules.push(styleRule); } else { currentScope.cssRules.push(styleRule); } } buffer = ""; if (currentScope.constructor === CSSOM2.CSSKeyframesRule) { state2 = "keyframeRule-begin"; } else { state2 = "before-selector"; } if (styleRule.constructor.name === "CSSNestedDeclarations") { if (currentScope !== topScope) { if (currentScope.constructor.name === "CSSStyleRule" || currentScope.constructor.name === "CSSScopeRule") { nestedSelectorRule = currentScope; } } styleRule = null; } else { if (styleRule === nestedSelectorRule) { var selector = styleRule.selectorText && styleRule.selectorText.trim(); var isPrependedAmpersand = selector && selector.match(prependedAmpersandRegExp); var isGroupingRule = currentScope && currentScope instanceof CSSOM2.CSSGroupingRule; if (!isPrependedAmpersand && isGroupingRule) { if (currentScope.constructor.name === "CSSStyleRule" || currentScope.constructor.name === "CSSScopeRule") { nestedSelectorRule = currentScope; } } else { nestedSelectorRule = null; } } else if (nestedSelectorRule && currentScope instanceof CSSOM2.CSSGroupingRule) { } styleRule = null; break; } case "keyframeRule-begin": case "before-selector": case "selector": if (!parentRule) { parseError("Unexpected }"); var hasPreviousStyleRule = currentScope.cssRules.length && currentScope.cssRules[currentScope.cssRules.length - 1].constructor.name === "CSSStyleRule"; if (hasPreviousStyleRule) { i = ignoreBalancedBlock(i, token.slice(i), 1); } break; } while (ancestorRules.length > 0) { parentRule = ancestorRules.pop(); if (parentRule === currentScope) { continue; } if (!(parentRule instanceof CSSOM2.CSSGroupingRule && (parentRule.constructor.name !== "CSSStyleRule" || parentRule.__parentRule))) { continue; } var isClosingNestedSelectorContext = nestedSelectorRule && (currentScope === nestedSelectorRule || nestedSelectorRule.__parentRule === currentScope); if (isClosingNestedSelectorContext) { if (nestedSelectorRule.parentRule) { prevScope = nestedSelectorRule; currentScope = nestedSelectorRule.parentRule; var scopeId = getRuleId(prevScope); if (!addedToCurrentScope[scopeId]) { currentScope.cssRules.push(prevScope); addedToCurrentScope[scopeId] = true; } nestedSelectorRule = currentScope; break; } else { prevScope = currentScope; var actualParent = ancestorRules.length > 0 ? ancestorRules[ancestorRules.length - 1] : nestedSelectorRule; if (actualParent !== prevScope) { actualParent.cssRules.push(prevScope); } currentScope = actualParent; parentRule = actualParent; break; } } else { prevScope = currentScope; if (parentRule !== prevScope) { parentRule.cssRules.push(prevScope); } break; } } if (ancestorRules.length === 0 && currentScope.__parentRule && currentScope.__parentRule.cssRules) { var parentId = getRuleId(currentScope); if (!addedToParent[parentId]) { currentScope.__parentRule.cssRules.push(currentScope); addedToParent[parentId] = true; } } if (ancestorRules.length === 0 && currentScope.parentRule == null) { currentScope.__ends = i + 1; var topId = getRuleId(currentScope); if (currentScope !== topScope && !addedToTopScope[topId]) { topScope.cssRules.push(currentScope); addedToTopScope[topId] = true; } currentScope = topScope; if (nestedSelectorRule === parentRule) { var nestedSelectorTokenToCurrentSelectorToken = token.slice(nestedSelectorRule.__starts, i + 1); var openingBraceMatch = nestedSelectorTokenToCurrentSelectorToken.match(openBraceGlobalRegExp); var closingBraceMatch = nestedSelectorTokenToCurrentSelectorToken.match(closeBraceGlobalRegExp); var openingBraceLen = openingBraceMatch && openingBraceMatch.length; var closingBraceLen = closingBraceMatch && closingBraceMatch.length; if (openingBraceLen === closingBraceLen) { nestedSelectorRule.__ends = i + 1; nestedSelectorRule = null; parentRule = null; } } else { parentRule = null; } } else { currentScope = parentRule; } buffer = ""; state2 = "before-selector"; break; } break; default: switch (state2) { case "before-selector": state2 = "selector"; if ((styleRule || scopeRule) && parentRule) { if (!isSelectorStartChar(character) && !isWhitespaceChar(character) && parentRule instanceof CSSOM2.CSSGroupingRule) { state2 = "before-name"; if (styleRule !== parentRule) { styleRule = new CSSOM2.CSSNestedDeclarations(); styleRule.__starts = i; } } } else if (nestedSelectorRule && parentRule && parentRule instanceof CSSOM2.CSSGroupingRule) { if (isSelectorStartChar(character)) { styleRule = new CSSOM2.CSSStyleRule(); styleRule.__starts = i; } else if (!isWhitespaceChar(character)) { state2 = "before-name"; if (parentRule.cssRules.length || nestedSelectorRule) { currentScope = parentRule; if (parentRule.constructor.name === "CSSStyleRule" || parentRule.constructor.name === "CSSScopeRule") { nestedSelectorRule = parentRule; } styleRule = new CSSOM2.CSSNestedDeclarations(); styleRule.__starts = i; } else { if (parentRule.constructor.name === "CSSStyleRule") { styleRule = parentRule; } else { styleRule = new CSSOM2.CSSStyleRule(); styleRule.__starts = i; } } } } break; case "before-name": state2 = "name"; break; case "before-value": state2 = "value"; break; case "importRule-begin": state2 = "importRule"; break; case "namespaceRule-begin": state2 = "namespaceRule"; break; } buffer += character; break; } if (i === initialEndingIndex && (currentScope !== topScope || ancestorRules.length > 0)) { var needsClosing = ancestorRules.length; if (currentScope !== topScope && ancestorRules.indexOf(currentScope) === -1) { needsClosing += 1; } for (var closeIdx = 0; closeIdx < needsClosing; closeIdx++) { token += "}"; endingIndex += 1; } } } if (buffer.trim() !== "") { parseError("Unexpected end of input"); } return styleSheet; }; exports2.parse = CSSOM2.parse; CSSOM2.CSSStyleSheet = require_CSSStyleSheet().CSSStyleSheet; CSSOM2.CSSStyleRule = require_CSSStyleRule().CSSStyleRule; CSSOM2.CSSNestedDeclarations = require_CSSNestedDeclarations().CSSNestedDeclarations; CSSOM2.CSSImportRule = require_CSSImportRule().CSSImportRule; CSSOM2.CSSNamespaceRule = require_CSSNamespaceRule().CSSNamespaceRule; CSSOM2.CSSGroupingRule = require_CSSGroupingRule().CSSGroupingRule; CSSOM2.CSSMediaRule = require_CSSMediaRule().CSSMediaRule; CSSOM2.CSSCounterStyleRule = require_CSSCounterStyleRule().CSSCounterStyleRule; CSSOM2.CSSPropertyRule = require_CSSPropertyRule().CSSPropertyRule; CSSOM2.CSSContainerRule = require_CSSContainerRule().CSSContainerRule; CSSOM2.CSSConditionRule = require_CSSConditionRule().CSSConditionRule; CSSOM2.CSSSupportsRule = require_CSSSupportsRule().CSSSupportsRule; CSSOM2.CSSFontFaceRule = require_CSSFontFaceRule().CSSFontFaceRule; CSSOM2.CSSHostRule = require_CSSHostRule().CSSHostRule; CSSOM2.CSSStartingStyleRule = require_CSSStartingStyleRule().CSSStartingStyleRule; CSSOM2.CSSStyleDeclaration = require_CSSStyleDeclaration().CSSStyleDeclaration; CSSOM2.CSSKeyframeRule = require_CSSKeyframeRule().CSSKeyframeRule; CSSOM2.CSSKeyframesRule = require_CSSKeyframesRule().CSSKeyframesRule; CSSOM2.CSSValueExpression = require_CSSValueExpression().CSSValueExpression; CSSOM2.CSSDocumentRule = require_CSSDocumentRule().CSSDocumentRule; CSSOM2.CSSScopeRule = require_CSSScopeRule().CSSScopeRule; CSSOM2.CSSLayerBlockRule = require_CSSLayerBlockRule().CSSLayerBlockRule; CSSOM2.CSSLayerStatementRule = require_CSSLayerStatementRule().CSSLayerStatementRule; CSSOM2.CSSPageRule = require_CSSPageRule().CSSPageRule; require_cssstyleTryCatchBlock(); } }); // node_modules/@acemir/cssom/lib/CSSStyleDeclaration.js var require_CSSStyleDeclaration = __commonJS({ "node_modules/@acemir/cssom/lib/CSSStyleDeclaration.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = {}; var regexPatterns = require_regexPatterns().regexPatterns; var indexedPropertyNameRegExp = /^(0|[1-9][0-9]*)$/; CSSOM2.CSSStyleDeclaration = function CSSStyleDeclaration() { this.length = 0; this.parentRule = null; this._importants = {}; }; CSSOM2.CSSStyleDeclaration.prototype = { constructor: CSSOM2.CSSStyleDeclaration, /** * * @param {string} name * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-getPropertyValue * @return {string} the value of the property if it has been explicitly set for this declaration block. * Returns the empty string if the property has not been set. */ getPropertyValue: function(name) { return this[name] || ""; }, /** * * @param {string} name * @param {string} value * @param {string} [priority=null] "important" or null * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-setProperty */ setProperty: function(name, value, priority, parseErrorHandler) { if (name === "length" || name === "parentRule" || name === "_importants" || name === "__starts" || name in CSSOM2.CSSStyleDeclaration.prototype || indexedPropertyNameRegExp.test(name)) { return; } var basicStylePropertyValueValidationRegExp = regexPatterns.basicStylePropertyValueValidationRegExp; if (basicStylePropertyValueValidationRegExp.test(value)) { parseErrorHandler && parseErrorHandler('Invalid CSSStyleDeclaration property (name = "' + name + '", value = "' + value + '")'); } else if (this[name]) { var index2 = Array.prototype.indexOf.call(this, name); if (index2 < 0) { this[this.length] = name; this.length++; } if (priority || !this._importants[name]) { this.removeProperty(name); this[this.length] = name; this.length++; this[name] = value + ""; this._importants[name] = priority; } } else { this[this.length] = name; this.length++; this[name] = value + ""; this._importants[name] = priority; } }, /** * * @param {string} name * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleDeclaration-removeProperty * @return {string} the value of the property if it has been explicitly set for this declaration block. * Returns the empty string if the property has not been set or the property name does not correspond to a known CSS property. */ removeProperty: function(name) { if (!(name in this)) { return ""; } var index2 = Array.prototype.indexOf.call(this, name); if (index2 < 0) { return ""; } var prevValue = this[name]; this[name] = ""; Array.prototype.splice.call(this, index2, 1); return prevValue; }, getPropertyCSSValue: function() { }, /** * * @param {String} name */ getPropertyPriority: function(name) { return this._importants[name] || ""; }, /** * element.style.overflow = "auto" * element.style.getPropertyShorthand("overflow-x") * -> "overflow" */ getPropertyShorthand: function() { }, isPropertyImplicit: function() { }, // Doesn't work in IE < 9 get cssText() { var properties = []; for (var i = 0, length = this.length; i < length; ++i) { var name = this[i]; var value = this.getPropertyValue(name); var priority = this.getPropertyPriority(name); if (priority) { priority = " !" + priority; } properties[i] = name + ": " + value + priority + ";"; } return properties.join(" "); }, set cssText(text) { var i, name; for (i = this.length; i--; ) { name = this[i]; this[name] = ""; } Array.prototype.splice.call(this, 0, this.length); this._importants = {}; var dummyRule = CSSOM2.parse("#bogus{" + text + "}").cssRules[0].style; var length = dummyRule.length; for (i = 0; i < length; ++i) { name = dummyRule[i]; this.setProperty(dummyRule[i], dummyRule.getPropertyValue(name), dummyRule.getPropertyPriority(name)); } } }; exports2.CSSStyleDeclaration = CSSOM2.CSSStyleDeclaration; CSSOM2.parse = require_parse3().parse; } }); // node_modules/@acemir/cssom/lib/clone.js var require_clone = __commonJS({ "node_modules/@acemir/cssom/lib/clone.js"(exports2) { init_define_import_meta_env(); var CSSOM2 = { CSSStyleSheet: require_CSSStyleSheet().CSSStyleSheet, CSSRule: require_CSSRule().CSSRule, CSSNestedDeclarations: require_CSSNestedDeclarations().CSSNestedDeclarations, CSSStyleRule: require_CSSStyleRule().CSSStyleRule, CSSGroupingRule: require_CSSGroupingRule().CSSGroupingRule, CSSConditionRule: require_CSSConditionRule().CSSConditionRule, CSSMediaRule: require_CSSMediaRule().CSSMediaRule, CSSContainerRule: require_CSSContainerRule().CSSContainerRule, CSSSupportsRule: require_CSSSupportsRule().CSSSupportsRule, CSSStyleDeclaration: require_CSSStyleDeclaration().CSSStyleDeclaration, CSSKeyframeRule: require_CSSKeyframeRule().CSSKeyframeRule, CSSKeyframesRule: require_CSSKeyframesRule().CSSKeyframesRule, CSSScopeRule: require_CSSScopeRule().CSSScopeRule, CSSLayerBlockRule: require_CSSLayerBlockRule().CSSLayerBlockRule, CSSLayerStatementRule: require_CSSLayerStatementRule().CSSLayerStatementRule }; try { CSSOM2.CSSStyleDeclaration = require("cssstyle").CSSStyleDeclaration; } catch (e) { } CSSOM2.clone = function clone(stylesheet) { var cloned = new CSSOM2.CSSStyleSheet(); var rules = stylesheet.cssRules; if (!rules) { return cloned; } for (var i = 0, rulesLength = rules.length; i < rulesLength; i++) { var rule = rules[i]; var ruleClone = cloned.cssRules[i] = new rule.constructor(); var style = rule.style; if (style) { var styleClone = ruleClone.style = new CSSOM2.CSSStyleDeclaration(); for (var j = 0, styleLength = style.length; j < styleLength; j++) { var name = style[j]; styleClone.setProperty(name, style.getPropertyValue(name), style.getPropertyPriority(name)); } } if (rule.hasOwnProperty("keyText")) { ruleClone.keyText = rule.keyText; } if (rule.hasOwnProperty("selectorText")) { ruleClone.selectorText = rule.selectorText; } if (rule.hasOwnProperty("mediaText")) { ruleClone.mediaText = rule.mediaText; } if (rule.hasOwnProperty("supportsText")) { ruleClone.supports = rule.supports; } if (rule.hasOwnProperty("conditionText")) { ruleClone.conditionText = rule.conditionText; } if (rule.hasOwnProperty("layerName")) { ruleClone.layerName = rule.layerName; } if (rule.hasOwnProperty("href")) { ruleClone.href = rule.href; } if (rule.hasOwnProperty("name")) { ruleClone.name = rule.name; } if (rule.hasOwnProperty("nameList")) { ruleClone.nameList = rule.nameList; } if (rule.hasOwnProperty("cssRules")) { ruleClone.cssRules = clone(rule).cssRules; } } return cloned; }; exports2.clone = CSSOM2.clone; } }); // node_modules/@acemir/cssom/lib/index.js var require_lib10 = __commonJS({ "node_modules/@acemir/cssom/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); exports2.setup = require_CSSOM().setup; require_errorUtils(); require_regexPatterns(); exports2.CSSStyleDeclaration = require_CSSStyleDeclaration().CSSStyleDeclaration; require_cssstyleTryCatchBlock(); exports2.CSSRule = require_CSSRule().CSSRule; exports2.CSSRuleList = require_CSSRuleList().CSSRuleList; exports2.CSSNestedDeclarations = require_CSSNestedDeclarations().CSSNestedDeclarations; exports2.CSSGroupingRule = require_CSSGroupingRule().CSSGroupingRule; exports2.CSSCounterStyleRule = require_CSSCounterStyleRule().CSSCounterStyleRule; exports2.CSSPropertyRule = require_CSSPropertyRule().CSSPropertyRule; exports2.CSSConditionRule = require_CSSConditionRule().CSSConditionRule; exports2.CSSStyleRule = require_CSSStyleRule().CSSStyleRule; exports2.MediaList = require_MediaList().MediaList; exports2.CSSMediaRule = require_CSSMediaRule().CSSMediaRule; exports2.CSSContainerRule = require_CSSContainerRule().CSSContainerRule; exports2.CSSSupportsRule = require_CSSSupportsRule().CSSSupportsRule; exports2.CSSImportRule = require_CSSImportRule().CSSImportRule; exports2.CSSNamespaceRule = require_CSSNamespaceRule().CSSNamespaceRule; exports2.CSSFontFaceRule = require_CSSFontFaceRule().CSSFontFaceRule; exports2.CSSHostRule = require_CSSHostRule().CSSHostRule; exports2.CSSStartingStyleRule = require_CSSStartingStyleRule().CSSStartingStyleRule; exports2.StyleSheet = require_StyleSheet().StyleSheet; exports2.CSSStyleSheet = require_CSSStyleSheet().CSSStyleSheet; exports2.CSSKeyframesRule = require_CSSKeyframesRule().CSSKeyframesRule; exports2.CSSKeyframeRule = require_CSSKeyframeRule().CSSKeyframeRule; exports2.MatcherList = require_MatcherList().MatcherList; exports2.CSSDocumentRule = require_CSSDocumentRule().CSSDocumentRule; exports2.CSSValue = require_CSSValue().CSSValue; exports2.CSSValueExpression = require_CSSValueExpression().CSSValueExpression; exports2.CSSScopeRule = require_CSSScopeRule().CSSScopeRule; exports2.CSSLayerBlockRule = require_CSSLayerBlockRule().CSSLayerBlockRule; exports2.CSSLayerStatementRule = require_CSSLayerStatementRule().CSSLayerStatementRule; exports2.CSSPageRule = require_CSSPageRule().CSSPageRule; exports2.parse = require_parse3().parse; exports2.clone = require_clone().clone; } }); // node_modules/linkedom/cjs/html/style-element.js var require_style_element = __commonJS({ "node_modules/linkedom/cjs/html/style-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { parse: parse3 } = require_lib10(); var { registerHTMLClass } = require_register_html_class(); var { SHEET } = require_symbols(); var { TextElement } = require_text_element(); var tagName = "style"; var HTMLStyleElement = class extends TextElement { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); this[SHEET] = null; } get sheet() { const sheet = this[SHEET]; if (sheet !== null) { return sheet; } return this[SHEET] = parse3(this.textContent); } get innerHTML() { return super.innerHTML || ""; } set innerHTML(value) { super.textContent = value; this[SHEET] = null; } get innerText() { return super.innerText || ""; } set innerText(value) { super.textContent = value; this[SHEET] = null; } get textContent() { return super.textContent || ""; } set textContent(value) { super.textContent = value; this[SHEET] = null; } }; registerHTMLClass(tagName, HTMLStyleElement); exports2.HTMLStyleElement = HTMLStyleElement; } }); // node_modules/linkedom/cjs/html/time-element.js var require_time_element = __commonJS({ "node_modules/linkedom/cjs/html/time-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { stringAttribute } = require_attributes(); var { registerHTMLClass } = require_register_html_class(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLTimeElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "time") { super(ownerDocument, localName); } /** * @type {string} */ get dateTime() { return stringAttribute.get(this, "datetime"); } set dateTime(value) { stringAttribute.set(this, "datetime", value); } }; registerHTMLClass("time", HTMLTimeElement); exports2.HTMLTimeElement = HTMLTimeElement; } }); // node_modules/linkedom/cjs/html/field-set-element.js var require_field_set_element = __commonJS({ "node_modules/linkedom/cjs/html/field-set-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLFieldSetElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "fieldset") { super(ownerDocument, localName); } }; exports2.HTMLFieldSetElement = HTMLFieldSetElement; } }); // node_modules/linkedom/cjs/html/embed-element.js var require_embed_element = __commonJS({ "node_modules/linkedom/cjs/html/embed-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLEmbedElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "embed") { super(ownerDocument, localName); } }; exports2.HTMLEmbedElement = HTMLEmbedElement; } }); // node_modules/linkedom/cjs/html/hr-element.js var require_hr_element = __commonJS({ "node_modules/linkedom/cjs/html/hr-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLHRElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "hr") { super(ownerDocument, localName); } }; exports2.HTMLHRElement = HTMLHRElement; } }); // node_modules/linkedom/cjs/html/progress-element.js var require_progress_element = __commonJS({ "node_modules/linkedom/cjs/html/progress-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLProgressElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "progress") { super(ownerDocument, localName); } }; exports2.HTMLProgressElement = HTMLProgressElement; } }); // node_modules/linkedom/cjs/html/paragraph-element.js var require_paragraph_element = __commonJS({ "node_modules/linkedom/cjs/html/paragraph-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLParagraphElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "p") { super(ownerDocument, localName); } }; exports2.HTMLParagraphElement = HTMLParagraphElement; } }); // node_modules/linkedom/cjs/html/table-element.js var require_table_element = __commonJS({ "node_modules/linkedom/cjs/html/table-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLTableElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "table") { super(ownerDocument, localName); } }; exports2.HTMLTableElement = HTMLTableElement; } }); // node_modules/linkedom/cjs/html/frame-set-element.js var require_frame_set_element = __commonJS({ "node_modules/linkedom/cjs/html/frame-set-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLFrameSetElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "frameset") { super(ownerDocument, localName); } }; exports2.HTMLFrameSetElement = HTMLFrameSetElement; } }); // node_modules/linkedom/cjs/html/li-element.js var require_li_element = __commonJS({ "node_modules/linkedom/cjs/html/li-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLLIElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "li") { super(ownerDocument, localName); } }; exports2.HTMLLIElement = HTMLLIElement; } }); // node_modules/linkedom/cjs/html/base-element.js var require_base_element = __commonJS({ "node_modules/linkedom/cjs/html/base-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLBaseElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "base") { super(ownerDocument, localName); } }; exports2.HTMLBaseElement = HTMLBaseElement; } }); // node_modules/linkedom/cjs/html/data-list-element.js var require_data_list_element = __commonJS({ "node_modules/linkedom/cjs/html/data-list-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLDataListElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "datalist") { super(ownerDocument, localName); } }; exports2.HTMLDataListElement = HTMLDataListElement; } }); // node_modules/linkedom/cjs/html/input-element.js var require_input_element = __commonJS({ "node_modules/linkedom/cjs/html/input-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { booleanAttribute, stringAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "input"; var HTMLInputElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get autofocus() { return booleanAttribute.get(this, "autofocus") || -1; } set autofocus(value) { booleanAttribute.set(this, "autofocus", value); } get disabled() { return booleanAttribute.get(this, "disabled"); } set disabled(value) { booleanAttribute.set(this, "disabled", value); } get name() { return this.getAttribute("name"); } set name(value) { this.setAttribute("name", value); } get placeholder() { return this.getAttribute("placeholder"); } set placeholder(value) { this.setAttribute("placeholder", value); } get type() { return this.getAttribute("type"); } set type(value) { this.setAttribute("type", value); } get value() { return stringAttribute.get(this, "value"); } set value(value) { stringAttribute.set(this, "value", value); } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLInputElement); exports2.HTMLInputElement = HTMLInputElement; } }); // node_modules/linkedom/cjs/html/param-element.js var require_param_element = __commonJS({ "node_modules/linkedom/cjs/html/param-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLParamElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "param") { super(ownerDocument, localName); } }; exports2.HTMLParamElement = HTMLParamElement; } }); // node_modules/linkedom/cjs/html/media-element.js var require_media_element = __commonJS({ "node_modules/linkedom/cjs/html/media-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLMediaElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "media") { super(ownerDocument, localName); } }; exports2.HTMLMediaElement = HTMLMediaElement; } }); // node_modules/linkedom/cjs/html/audio-element.js var require_audio_element = __commonJS({ "node_modules/linkedom/cjs/html/audio-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLAudioElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "audio") { super(ownerDocument, localName); } }; exports2.HTMLAudioElement = HTMLAudioElement; } }); // node_modules/linkedom/cjs/html/heading-element.js var require_heading_element = __commonJS({ "node_modules/linkedom/cjs/html/heading-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "h1"; var HTMLHeadingElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } }; registerHTMLClass([tagName, "h2", "h3", "h4", "h5", "h6"], HTMLHeadingElement); exports2.HTMLHeadingElement = HTMLHeadingElement; } }); // node_modules/linkedom/cjs/html/directory-element.js var require_directory_element = __commonJS({ "node_modules/linkedom/cjs/html/directory-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLDirectoryElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "dir") { super(ownerDocument, localName); } }; exports2.HTMLDirectoryElement = HTMLDirectoryElement; } }); // node_modules/linkedom/cjs/html/quote-element.js var require_quote_element = __commonJS({ "node_modules/linkedom/cjs/html/quote-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLQuoteElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "quote") { super(ownerDocument, localName); } }; exports2.HTMLQuoteElement = HTMLQuoteElement; } }); // node_modules/linkedom/commonjs/canvas-shim.cjs var require_canvas_shim = __commonJS({ "node_modules/linkedom/commonjs/canvas-shim.cjs"(exports2, module2) { init_define_import_meta_env(); var Canvas = class { constructor(width, height) { this.width = width; this.height = height; } getContext() { return null; } toDataURL() { return ""; } }; module2.exports = { createCanvas: (width, height) => new Canvas(width, height) }; } }); // node_modules/linkedom/commonjs/canvas.cjs var require_canvas = __commonJS({ "node_modules/linkedom/commonjs/canvas.cjs"(exports2, module2) { init_define_import_meta_env(); try { module2.exports = require("canvas"); } catch (fallback) { module2.exports = require_canvas_shim(); } } }); // node_modules/linkedom/cjs/html/canvas-element.js var require_canvas_element = __commonJS({ "node_modules/linkedom/cjs/html/canvas-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { IMAGE } = require_symbols(); var { registerHTMLClass } = require_register_html_class(); var { numericAttribute } = require_attributes(); var Canvas = require_canvas(); var { HTMLElement: HTMLElement2 } = require_element3(); var { createCanvas } = Canvas; var tagName = "canvas"; var HTMLCanvasElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); this[IMAGE] = createCanvas(300, 150); } get width() { return this[IMAGE].width; } set width(value) { numericAttribute.set(this, "width", value); this[IMAGE].width = value; } get height() { return this[IMAGE].height; } set height(value) { numericAttribute.set(this, "height", value); this[IMAGE].height = value; } getContext(type) { return this[IMAGE].getContext(type); } toDataURL(...args) { return this[IMAGE].toDataURL(...args); } }; registerHTMLClass(tagName, HTMLCanvasElement); exports2.HTMLCanvasElement = HTMLCanvasElement; } }); // node_modules/linkedom/cjs/html/legend-element.js var require_legend_element = __commonJS({ "node_modules/linkedom/cjs/html/legend-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLLegendElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "legend") { super(ownerDocument, localName); } }; exports2.HTMLLegendElement = HTMLLegendElement; } }); // node_modules/linkedom/cjs/html/option-element.js var require_option_element = __commonJS({ "node_modules/linkedom/cjs/html/option-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var { booleanAttribute, stringAttribute } = require_attributes(); var { registerHTMLClass } = require_register_html_class(); var tagName = "option"; var HTMLOptionElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get value() { return stringAttribute.get(this, "value"); } set value(value) { stringAttribute.set(this, "value", value); } /* c8 ignore stop */ get selected() { return booleanAttribute.get(this, "selected"); } set selected(value) { const option = this.parentElement?.querySelector("option[selected]"); if (option && option !== this) option.selected = false; booleanAttribute.set(this, "selected", value); } }; registerHTMLClass(tagName, HTMLOptionElement); exports2.HTMLOptionElement = HTMLOptionElement; } }); // node_modules/linkedom/cjs/html/span-element.js var require_span_element = __commonJS({ "node_modules/linkedom/cjs/html/span-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLSpanElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "span") { super(ownerDocument, localName); } }; exports2.HTMLSpanElement = HTMLSpanElement; } }); // node_modules/linkedom/cjs/html/meter-element.js var require_meter_element = __commonJS({ "node_modules/linkedom/cjs/html/meter-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLMeterElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "meter") { super(ownerDocument, localName); } }; exports2.HTMLMeterElement = HTMLMeterElement; } }); // node_modules/linkedom/cjs/html/video-element.js var require_video_element = __commonJS({ "node_modules/linkedom/cjs/html/video-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLVideoElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "video") { super(ownerDocument, localName); } }; exports2.HTMLVideoElement = HTMLVideoElement; } }); // node_modules/linkedom/cjs/html/table-cell-element.js var require_table_cell_element = __commonJS({ "node_modules/linkedom/cjs/html/table-cell-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLTableCellElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "td") { super(ownerDocument, localName); } }; exports2.HTMLTableCellElement = HTMLTableCellElement; } }); // node_modules/linkedom/cjs/html/title-element.js var require_title_element = __commonJS({ "node_modules/linkedom/cjs/html/title-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { TextElement } = require_text_element(); var tagName = "title"; var HTMLTitleElement = class extends TextElement { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } }; registerHTMLClass(tagName, HTMLTitleElement); exports2.HTMLTitleElement = HTMLTitleElement; } }); // node_modules/linkedom/cjs/html/output-element.js var require_output_element = __commonJS({ "node_modules/linkedom/cjs/html/output-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLOutputElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "output") { super(ownerDocument, localName); } }; exports2.HTMLOutputElement = HTMLOutputElement; } }); // node_modules/linkedom/cjs/html/table-row-element.js var require_table_row_element = __commonJS({ "node_modules/linkedom/cjs/html/table-row-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLTableRowElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "tr") { super(ownerDocument, localName); } }; exports2.HTMLTableRowElement = HTMLTableRowElement; } }); // node_modules/linkedom/cjs/html/data-element.js var require_data_element = __commonJS({ "node_modules/linkedom/cjs/html/data-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLDataElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "data") { super(ownerDocument, localName); } }; exports2.HTMLDataElement = HTMLDataElement; } }); // node_modules/linkedom/cjs/html/menu-element.js var require_menu_element = __commonJS({ "node_modules/linkedom/cjs/html/menu-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLMenuElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "menu") { super(ownerDocument, localName); } }; exports2.HTMLMenuElement = HTMLMenuElement; } }); // node_modules/linkedom/cjs/html/select-element.js var require_select_element = __commonJS({ "node_modules/linkedom/cjs/html/select-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { booleanAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var { NodeList } = require_node_list(); var tagName = "select"; var HTMLSelectElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } get options() { let children = new NodeList(); let { firstElementChild } = this; while (firstElementChild) { if (firstElementChild.tagName === "OPTGROUP") children.push(...firstElementChild.children); else children.push(firstElementChild); firstElementChild = firstElementChild.nextElementSibling; } return children; } /* c8 ignore start */ get disabled() { return booleanAttribute.get(this, "disabled"); } set disabled(value) { booleanAttribute.set(this, "disabled", value); } get name() { return this.getAttribute("name"); } set name(value) { this.setAttribute("name", value); } /* c8 ignore stop */ get value() { return this.querySelector("option[selected]")?.value; } }; registerHTMLClass(tagName, HTMLSelectElement); exports2.HTMLSelectElement = HTMLSelectElement; } }); // node_modules/linkedom/cjs/html/br-element.js var require_br_element = __commonJS({ "node_modules/linkedom/cjs/html/br-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLBRElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "br") { super(ownerDocument, localName); } }; exports2.HTMLBRElement = HTMLBRElement; } }); // node_modules/linkedom/cjs/html/button-element.js var require_button_element = __commonJS({ "node_modules/linkedom/cjs/html/button-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { booleanAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "button"; var HTMLButtonElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get disabled() { return booleanAttribute.get(this, "disabled"); } set disabled(value) { booleanAttribute.set(this, "disabled", value); } get name() { return this.getAttribute("name"); } set name(value) { this.setAttribute("name", value); } get type() { return this.getAttribute("type"); } set type(value) { this.setAttribute("type", value); } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLButtonElement); exports2.HTMLButtonElement = HTMLButtonElement; } }); // node_modules/linkedom/cjs/html/map-element.js var require_map_element = __commonJS({ "node_modules/linkedom/cjs/html/map-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLMapElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "map") { super(ownerDocument, localName); } }; exports2.HTMLMapElement = HTMLMapElement; } }); // node_modules/linkedom/cjs/html/opt-group-element.js var require_opt_group_element = __commonJS({ "node_modules/linkedom/cjs/html/opt-group-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLOptGroupElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "optgroup") { super(ownerDocument, localName); } }; exports2.HTMLOptGroupElement = HTMLOptGroupElement; } }); // node_modules/linkedom/cjs/html/d-list-element.js var require_d_list_element = __commonJS({ "node_modules/linkedom/cjs/html/d-list-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLDListElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "dl") { super(ownerDocument, localName); } }; exports2.HTMLDListElement = HTMLDListElement; } }); // node_modules/linkedom/cjs/html/text-area-element.js var require_text_area_element = __commonJS({ "node_modules/linkedom/cjs/html/text-area-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { booleanAttribute } = require_attributes(); var { TextElement } = require_text_element(); var tagName = "textarea"; var HTMLTextAreaElement = class extends TextElement { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get disabled() { return booleanAttribute.get(this, "disabled"); } set disabled(value) { booleanAttribute.set(this, "disabled", value); } get name() { return this.getAttribute("name"); } set name(value) { this.setAttribute("name", value); } get placeholder() { return this.getAttribute("placeholder"); } set placeholder(value) { this.setAttribute("placeholder", value); } get type() { return this.getAttribute("type"); } set type(value) { this.setAttribute("type", value); } get value() { return this.textContent; } set value(content) { this.textContent = content; } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLTextAreaElement); exports2.HTMLTextAreaElement = HTMLTextAreaElement; } }); // node_modules/linkedom/cjs/html/font-element.js var require_font_element = __commonJS({ "node_modules/linkedom/cjs/html/font-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLFontElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "font") { super(ownerDocument, localName); } }; exports2.HTMLFontElement = HTMLFontElement; } }); // node_modules/linkedom/cjs/html/div-element.js var require_div_element = __commonJS({ "node_modules/linkedom/cjs/html/div-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLDivElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "div") { super(ownerDocument, localName); } }; exports2.HTMLDivElement = HTMLDivElement; } }); // node_modules/linkedom/cjs/html/link-element.js var require_link_element = __commonJS({ "node_modules/linkedom/cjs/html/link-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { booleanAttribute, stringAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "link"; var HTMLLinkElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ // copy paste from img.src, already covered get disabled() { return booleanAttribute.get(this, "disabled"); } set disabled(value) { booleanAttribute.set(this, "disabled", value); } get href() { return stringAttribute.get(this, "href").trim(); } set href(value) { stringAttribute.set(this, "href", value); } get hreflang() { return stringAttribute.get(this, "hreflang"); } set hreflang(value) { stringAttribute.set(this, "hreflang", value); } get media() { return stringAttribute.get(this, "media"); } set media(value) { stringAttribute.set(this, "media", value); } get rel() { return stringAttribute.get(this, "rel"); } set rel(value) { stringAttribute.set(this, "rel", value); } get type() { return stringAttribute.get(this, "type"); } set type(value) { stringAttribute.set(this, "type", value); } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLLinkElement); exports2.HTMLLinkElement = HTMLLinkElement; } }); // node_modules/linkedom/cjs/html/slot-element.js var require_slot_element = __commonJS({ "node_modules/linkedom/cjs/html/slot-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var { registerHTMLClass } = require_register_html_class(); var tagName = "slot"; var HTMLSlotElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get name() { return this.getAttribute("name"); } set name(value) { this.setAttribute("name", value); } assign() { } assignedNodes(options) { const isNamedSlot = !!this.name; const hostChildNodes = this.getRootNode().host?.childNodes ?? []; let slottables; if (isNamedSlot) { slottables = [...hostChildNodes].filter((node) => node.slot === this.name); } else { slottables = [...hostChildNodes].filter((node) => !node.slot); } if (options?.flatten) { const result = []; for (let slottable of slottables) { if (slottable.localName === "slot") { result.push(...slottable.assignedNodes({ flatten: true })); } else { result.push(slottable); } } slottables = result; } return slottables.length ? slottables : [...this.childNodes]; } assignedElements(options) { const slottables = this.assignedNodes(options).filter((n) => n.nodeType === 1); return slottables.length ? slottables : [...this.children]; } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLSlotElement); exports2.HTMLSlotElement = HTMLSlotElement; } }); // node_modules/linkedom/cjs/html/form-element.js var require_form_element = __commonJS({ "node_modules/linkedom/cjs/html/form-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLFormElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "form") { super(ownerDocument, localName); } }; exports2.HTMLFormElement = HTMLFormElement; } }); // node_modules/linkedom/cjs/html/image-element.js var require_image_element = __commonJS({ "node_modules/linkedom/cjs/html/image-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { numericAttribute, stringAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "img"; var HTMLImageElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get alt() { return stringAttribute.get(this, "alt"); } set alt(value) { stringAttribute.set(this, "alt", value); } get sizes() { return stringAttribute.get(this, "sizes"); } set sizes(value) { stringAttribute.set(this, "sizes", value); } get src() { return stringAttribute.get(this, "src"); } set src(value) { stringAttribute.set(this, "src", value); } get srcset() { return stringAttribute.get(this, "srcset"); } set srcset(value) { stringAttribute.set(this, "srcset", value); } get title() { return stringAttribute.get(this, "title"); } set title(value) { stringAttribute.set(this, "title", value); } get width() { return numericAttribute.get(this, "width"); } set width(value) { numericAttribute.set(this, "width", value); } get height() { return numericAttribute.get(this, "height"); } set height(value) { numericAttribute.set(this, "height", value); } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLImageElement); exports2.HTMLImageElement = HTMLImageElement; } }); // node_modules/linkedom/cjs/html/pre-element.js var require_pre_element = __commonJS({ "node_modules/linkedom/cjs/html/pre-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLPreElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "pre") { super(ownerDocument, localName); } }; exports2.HTMLPreElement = HTMLPreElement; } }); // node_modules/linkedom/cjs/html/u-list-element.js var require_u_list_element = __commonJS({ "node_modules/linkedom/cjs/html/u-list-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLUListElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "ul") { super(ownerDocument, localName); } }; exports2.HTMLUListElement = HTMLUListElement; } }); // node_modules/linkedom/cjs/html/meta-element.js var require_meta_element = __commonJS({ "node_modules/linkedom/cjs/html/meta-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var { registerHTMLClass } = require_register_html_class(); var { stringAttribute } = require_attributes(); var tagName = "meta"; var HTMLMetaElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get name() { return stringAttribute.get(this, "name"); } set name(value) { stringAttribute.set(this, "name", value); } get httpEquiv() { return stringAttribute.get(this, "http-equiv"); } set httpEquiv(value) { stringAttribute.set(this, "http-equiv", value); } get content() { return stringAttribute.get(this, "content"); } set content(value) { stringAttribute.set(this, "content", value); } get charset() { return stringAttribute.get(this, "charset"); } set charset(value) { stringAttribute.set(this, "charset", value); } get media() { return stringAttribute.get(this, "media"); } set media(value) { stringAttribute.set(this, "media", value); } /* c8 ignore stop */ }; exports2.HTMLMetaElement = HTMLMetaElement; registerHTMLClass(tagName, HTMLMetaElement); } }); // node_modules/linkedom/cjs/html/picture-element.js var require_picture_element = __commonJS({ "node_modules/linkedom/cjs/html/picture-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLPictureElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "picture") { super(ownerDocument, localName); } }; exports2.HTMLPictureElement = HTMLPictureElement; } }); // node_modules/linkedom/cjs/html/area-element.js var require_area_element = __commonJS({ "node_modules/linkedom/cjs/html/area-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLAreaElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "area") { super(ownerDocument, localName); } }; exports2.HTMLAreaElement = HTMLAreaElement; } }); // node_modules/linkedom/cjs/html/o-list-element.js var require_o_list_element = __commonJS({ "node_modules/linkedom/cjs/html/o-list-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLOListElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "ol") { super(ownerDocument, localName); } }; exports2.HTMLOListElement = HTMLOListElement; } }); // node_modules/linkedom/cjs/html/table-caption-element.js var require_table_caption_element = __commonJS({ "node_modules/linkedom/cjs/html/table-caption-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLTableCaptionElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "caption") { super(ownerDocument, localName); } }; exports2.HTMLTableCaptionElement = HTMLTableCaptionElement; } }); // node_modules/linkedom/cjs/html/anchor-element.js var require_anchor_element = __commonJS({ "node_modules/linkedom/cjs/html/anchor-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { stringAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "a"; var HTMLAnchorElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ // copy paste from img.src, already covered get href() { return encodeURI(decodeURI(stringAttribute.get(this, "href"))).trim(); } set href(value) { stringAttribute.set(this, "href", decodeURI(value)); } get download() { return encodeURI(decodeURI(stringAttribute.get(this, "download"))); } set download(value) { stringAttribute.set(this, "download", decodeURI(value)); } get target() { return stringAttribute.get(this, "target"); } set target(value) { stringAttribute.set(this, "target", value); } get type() { return stringAttribute.get(this, "type"); } set type(value) { stringAttribute.set(this, "type", value); } get rel() { return stringAttribute.get(this, "rel"); } set rel(value) { stringAttribute.set(this, "rel", value); } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLAnchorElement); exports2.HTMLAnchorElement = HTMLAnchorElement; } }); // node_modules/linkedom/cjs/html/label-element.js var require_label_element = __commonJS({ "node_modules/linkedom/cjs/html/label-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLLabelElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "label") { super(ownerDocument, localName); } }; exports2.HTMLLabelElement = HTMLLabelElement; } }); // node_modules/linkedom/cjs/html/unknown-element.js var require_unknown_element = __commonJS({ "node_modules/linkedom/cjs/html/unknown-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLUnknownElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "unknown") { super(ownerDocument, localName); } }; exports2.HTMLUnknownElement = HTMLUnknownElement; } }); // node_modules/linkedom/cjs/html/mod-element.js var require_mod_element = __commonJS({ "node_modules/linkedom/cjs/html/mod-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLModElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "mod") { super(ownerDocument, localName); } }; exports2.HTMLModElement = HTMLModElement; } }); // node_modules/linkedom/cjs/html/details-element.js var require_details_element = __commonJS({ "node_modules/linkedom/cjs/html/details-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLDetailsElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "details") { super(ownerDocument, localName); } }; exports2.HTMLDetailsElement = HTMLDetailsElement; } }); // node_modules/linkedom/cjs/html/source-element.js var require_source_element = __commonJS({ "node_modules/linkedom/cjs/html/source-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { registerHTMLClass } = require_register_html_class(); var { stringAttribute } = require_attributes(); var { HTMLElement: HTMLElement2 } = require_element3(); var tagName = "source"; var HTMLSourceElement = class extends HTMLElement2 { constructor(ownerDocument, localName = tagName) { super(ownerDocument, localName); } /* c8 ignore start */ get src() { return stringAttribute.get(this, "src"); } set src(value) { stringAttribute.set(this, "src", value); } get srcset() { return stringAttribute.get(this, "srcset"); } set srcset(value) { stringAttribute.set(this, "srcset", value); } get sizes() { return stringAttribute.get(this, "sizes"); } set sizes(value) { stringAttribute.set(this, "sizes", value); } get type() { return stringAttribute.get(this, "type"); } set type(value) { stringAttribute.set(this, "type", value); } /* c8 ignore stop */ }; registerHTMLClass(tagName, HTMLSourceElement); exports2.HTMLSourceElement = HTMLSourceElement; } }); // node_modules/linkedom/cjs/html/track-element.js var require_track_element = __commonJS({ "node_modules/linkedom/cjs/html/track-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLTrackElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "track") { super(ownerDocument, localName); } }; exports2.HTMLTrackElement = HTMLTrackElement; } }); // node_modules/linkedom/cjs/html/marquee-element.js var require_marquee_element = __commonJS({ "node_modules/linkedom/cjs/html/marquee-element.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var HTMLMarqueeElement = class extends HTMLElement2 { constructor(ownerDocument, localName = "marquee") { super(ownerDocument, localName); } }; exports2.HTMLMarqueeElement = HTMLMarqueeElement; } }); // node_modules/linkedom/cjs/shared/html-classes.js var require_html_classes = __commonJS({ "node_modules/linkedom/cjs/shared/html-classes.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLElement: HTMLElement2 } = require_element3(); var { HTMLTemplateElement } = require_template_element(); var { HTMLHtmlElement } = require_html_element(); var { HTMLScriptElement } = require_script_element(); var { HTMLFrameElement } = require_frame_element(); var { HTMLIFrameElement } = require_i_frame_element(); var { HTMLObjectElement } = require_object_element(); var { HTMLHeadElement } = require_head_element(); var { HTMLBodyElement } = require_body_element(); var { HTMLStyleElement } = require_style_element(); var { HTMLTimeElement } = require_time_element(); var { HTMLFieldSetElement } = require_field_set_element(); var { HTMLEmbedElement } = require_embed_element(); var { HTMLHRElement } = require_hr_element(); var { HTMLProgressElement } = require_progress_element(); var { HTMLParagraphElement } = require_paragraph_element(); var { HTMLTableElement } = require_table_element(); var { HTMLFrameSetElement } = require_frame_set_element(); var { HTMLLIElement } = require_li_element(); var { HTMLBaseElement } = require_base_element(); var { HTMLDataListElement } = require_data_list_element(); var { HTMLInputElement } = require_input_element(); var { HTMLParamElement } = require_param_element(); var { HTMLMediaElement } = require_media_element(); var { HTMLAudioElement } = require_audio_element(); var { HTMLHeadingElement } = require_heading_element(); var { HTMLDirectoryElement } = require_directory_element(); var { HTMLQuoteElement } = require_quote_element(); var { HTMLCanvasElement } = require_canvas_element(); var { HTMLLegendElement } = require_legend_element(); var { HTMLOptionElement } = require_option_element(); var { HTMLSpanElement } = require_span_element(); var { HTMLMeterElement } = require_meter_element(); var { HTMLVideoElement } = require_video_element(); var { HTMLTableCellElement } = require_table_cell_element(); var { HTMLTitleElement } = require_title_element(); var { HTMLOutputElement } = require_output_element(); var { HTMLTableRowElement } = require_table_row_element(); var { HTMLDataElement } = require_data_element(); var { HTMLMenuElement } = require_menu_element(); var { HTMLSelectElement } = require_select_element(); var { HTMLBRElement } = require_br_element(); var { HTMLButtonElement } = require_button_element(); var { HTMLMapElement } = require_map_element(); var { HTMLOptGroupElement } = require_opt_group_element(); var { HTMLDListElement } = require_d_list_element(); var { HTMLTextAreaElement } = require_text_area_element(); var { HTMLFontElement } = require_font_element(); var { HTMLDivElement } = require_div_element(); var { HTMLLinkElement } = require_link_element(); var { HTMLSlotElement } = require_slot_element(); var { HTMLFormElement } = require_form_element(); var { HTMLImageElement } = require_image_element(); var { HTMLPreElement } = require_pre_element(); var { HTMLUListElement } = require_u_list_element(); var { HTMLMetaElement } = require_meta_element(); var { HTMLPictureElement } = require_picture_element(); var { HTMLAreaElement } = require_area_element(); var { HTMLOListElement } = require_o_list_element(); var { HTMLTableCaptionElement } = require_table_caption_element(); var { HTMLAnchorElement } = require_anchor_element(); var { HTMLLabelElement } = require_label_element(); var { HTMLUnknownElement } = require_unknown_element(); var { HTMLModElement } = require_mod_element(); var { HTMLDetailsElement } = require_details_element(); var { HTMLSourceElement } = require_source_element(); var { HTMLTrackElement } = require_track_element(); var { HTMLMarqueeElement } = require_marquee_element(); exports2.HTMLElement = HTMLElement2; exports2.HTMLTemplateElement = HTMLTemplateElement; exports2.HTMLHtmlElement = HTMLHtmlElement; exports2.HTMLScriptElement = HTMLScriptElement; exports2.HTMLFrameElement = HTMLFrameElement; exports2.HTMLIFrameElement = HTMLIFrameElement; exports2.HTMLObjectElement = HTMLObjectElement; exports2.HTMLHeadElement = HTMLHeadElement; exports2.HTMLBodyElement = HTMLBodyElement; exports2.HTMLStyleElement = HTMLStyleElement; exports2.HTMLTimeElement = HTMLTimeElement; exports2.HTMLFieldSetElement = HTMLFieldSetElement; exports2.HTMLEmbedElement = HTMLEmbedElement; exports2.HTMLHRElement = HTMLHRElement; exports2.HTMLProgressElement = HTMLProgressElement; exports2.HTMLParagraphElement = HTMLParagraphElement; exports2.HTMLTableElement = HTMLTableElement; exports2.HTMLFrameSetElement = HTMLFrameSetElement; exports2.HTMLLIElement = HTMLLIElement; exports2.HTMLBaseElement = HTMLBaseElement; exports2.HTMLDataListElement = HTMLDataListElement; exports2.HTMLInputElement = HTMLInputElement; exports2.HTMLParamElement = HTMLParamElement; exports2.HTMLMediaElement = HTMLMediaElement; exports2.HTMLAudioElement = HTMLAudioElement; exports2.HTMLHeadingElement = HTMLHeadingElement; exports2.HTMLDirectoryElement = HTMLDirectoryElement; exports2.HTMLQuoteElement = HTMLQuoteElement; exports2.HTMLCanvasElement = HTMLCanvasElement; exports2.HTMLLegendElement = HTMLLegendElement; exports2.HTMLOptionElement = HTMLOptionElement; exports2.HTMLSpanElement = HTMLSpanElement; exports2.HTMLMeterElement = HTMLMeterElement; exports2.HTMLVideoElement = HTMLVideoElement; exports2.HTMLTableCellElement = HTMLTableCellElement; exports2.HTMLTitleElement = HTMLTitleElement; exports2.HTMLOutputElement = HTMLOutputElement; exports2.HTMLTableRowElement = HTMLTableRowElement; exports2.HTMLDataElement = HTMLDataElement; exports2.HTMLMenuElement = HTMLMenuElement; exports2.HTMLSelectElement = HTMLSelectElement; exports2.HTMLBRElement = HTMLBRElement; exports2.HTMLButtonElement = HTMLButtonElement; exports2.HTMLMapElement = HTMLMapElement; exports2.HTMLOptGroupElement = HTMLOptGroupElement; exports2.HTMLDListElement = HTMLDListElement; exports2.HTMLTextAreaElement = HTMLTextAreaElement; exports2.HTMLFontElement = HTMLFontElement; exports2.HTMLDivElement = HTMLDivElement; exports2.HTMLLinkElement = HTMLLinkElement; exports2.HTMLSlotElement = HTMLSlotElement; exports2.HTMLFormElement = HTMLFormElement; exports2.HTMLImageElement = HTMLImageElement; exports2.HTMLPreElement = HTMLPreElement; exports2.HTMLUListElement = HTMLUListElement; exports2.HTMLMetaElement = HTMLMetaElement; exports2.HTMLPictureElement = HTMLPictureElement; exports2.HTMLAreaElement = HTMLAreaElement; exports2.HTMLOListElement = HTMLOListElement; exports2.HTMLTableCaptionElement = HTMLTableCaptionElement; exports2.HTMLAnchorElement = HTMLAnchorElement; exports2.HTMLLabelElement = HTMLLabelElement; exports2.HTMLUnknownElement = HTMLUnknownElement; exports2.HTMLModElement = HTMLModElement; exports2.HTMLDetailsElement = HTMLDetailsElement; exports2.HTMLSourceElement = HTMLSourceElement; exports2.HTMLTrackElement = HTMLTrackElement; exports2.HTMLMarqueeElement = HTMLMarqueeElement; var HTMLClasses = { HTMLElement: HTMLElement2, HTMLTemplateElement, HTMLHtmlElement, HTMLScriptElement, HTMLFrameElement, HTMLIFrameElement, HTMLObjectElement, HTMLHeadElement, HTMLBodyElement, HTMLStyleElement, HTMLTimeElement, HTMLFieldSetElement, HTMLEmbedElement, HTMLHRElement, HTMLProgressElement, HTMLParagraphElement, HTMLTableElement, HTMLFrameSetElement, HTMLLIElement, HTMLBaseElement, HTMLDataListElement, HTMLInputElement, HTMLParamElement, HTMLMediaElement, HTMLAudioElement, HTMLHeadingElement, HTMLDirectoryElement, HTMLQuoteElement, HTMLCanvasElement, HTMLLegendElement, HTMLOptionElement, HTMLSpanElement, HTMLMeterElement, HTMLVideoElement, HTMLTableCellElement, HTMLTitleElement, HTMLOutputElement, HTMLTableRowElement, HTMLDataElement, HTMLMenuElement, HTMLSelectElement, HTMLBRElement, HTMLButtonElement, HTMLMapElement, HTMLOptGroupElement, HTMLDListElement, HTMLTextAreaElement, HTMLFontElement, HTMLDivElement, HTMLLinkElement, HTMLSlotElement, HTMLFormElement, HTMLImageElement, HTMLPreElement, HTMLUListElement, HTMLMetaElement, HTMLPictureElement, HTMLAreaElement, HTMLOListElement, HTMLTableCaptionElement, HTMLAnchorElement, HTMLLabelElement, HTMLUnknownElement, HTMLModElement, HTMLDetailsElement, HTMLSourceElement, HTMLTrackElement, HTMLMarqueeElement }; exports2.HTMLClasses = HTMLClasses; } }); // node_modules/linkedom/cjs/shared/mime.js var require_mime2 = __commonJS({ "node_modules/linkedom/cjs/shared/mime.js"(exports2) { "use strict"; init_define_import_meta_env(); var voidElements2 = { test: () => true }; var Mime = { "text/html": { docType: "<!DOCTYPE html>", ignoreCase: true, voidElements: /^(?:area|base|br|col|embed|hr|img|input|keygen|link|menuitem|meta|param|source|track|wbr)$/i }, "image/svg+xml": { docType: '<?xml version="1.0" encoding="utf-8"?>', ignoreCase: false, voidElements: voidElements2 }, "text/xml": { docType: '<?xml version="1.0" encoding="utf-8"?>', ignoreCase: false, voidElements: voidElements2 }, "application/xml": { docType: '<?xml version="1.0" encoding="utf-8"?>', ignoreCase: false, voidElements: voidElements2 }, "application/xhtml+xml": { docType: '<?xml version="1.0" encoding="utf-8"?>', ignoreCase: false, voidElements: voidElements2 } }; exports2.Mime = Mime; } }); // node_modules/linkedom/cjs/interface/custom-event.js var require_custom_event = __commonJS({ "node_modules/linkedom/cjs/interface/custom-event.js"(exports2) { "use strict"; init_define_import_meta_env(); var { Event: Event2 } = require_event(); var CustomEvent2 = class extends Event2 { constructor(type, eventInitDict = {}) { super(type, eventInitDict); this.detail = eventInitDict.detail; } }; exports2.CustomEvent = CustomEvent2; } }); // node_modules/linkedom/cjs/interface/input-event.js var require_input_event = __commonJS({ "node_modules/linkedom/cjs/interface/input-event.js"(exports2) { "use strict"; init_define_import_meta_env(); var { Event: Event2 } = require_event(); var InputEvent = class extends Event2 { constructor(type, inputEventInit = {}) { super(type, inputEventInit); this.inputType = inputEventInit.inputType; this.data = inputEventInit.data; this.dataTransfer = inputEventInit.dataTransfer; this.isComposing = inputEventInit.isComposing || false; this.ranges = inputEventInit.ranges; } }; exports2.InputEvent = InputEvent; } }); // node_modules/linkedom/cjs/interface/image.js var require_image = __commonJS({ "node_modules/linkedom/cjs/interface/image.js"(exports2) { "use strict"; init_define_import_meta_env(); var { HTMLImageElement } = require_image_element(); var ImageClass = (ownerDocument) => ( /** * @implements globalThis.Image */ class Image extends HTMLImageElement { constructor(width, height) { super(ownerDocument); switch (arguments.length) { case 1: this.height = width; this.width = width; break; case 2: this.height = height; this.width = width; break; } } } ); exports2.ImageClass = ImageClass; } }); // node_modules/linkedom/cjs/interface/range.js var require_range2 = __commonJS({ "node_modules/linkedom/cjs/interface/range.js"(exports2) { "use strict"; init_define_import_meta_env(); var { END, NEXT, PREV, START } = require_symbols(); var { SVGElement } = require_element2(); var { getEnd, htmlToFragment, setAdjacent } = require_utils4(); var deleteContents = ({ [START]: start, [END]: end }, fragment = null) => { setAdjacent(start[PREV], end[NEXT]); do { const after = getEnd(start); const next = after === end ? after : after[NEXT]; if (fragment) fragment.insertBefore(start, fragment[END]); else start.remove(); start = next; } while (start !== end); }; var Range = class _Range { constructor() { this[START] = null; this[END] = null; this.commonAncestorContainer = null; } /* TODO: this is more complicated than it looks setStart(node, offset) { this[START] = node.childNodes[offset]; } setEnd(node, offset) { this[END] = getEnd(node.childNodes[offset]); } //*/ insertNode(newNode) { this[END].parentNode.insertBefore(newNode, this[START]); } selectNode(node) { this[START] = node; this[END] = getEnd(node); } // TODO: SVG elements should then create contextual fragments // that return SVG nodes selectNodeContents(node) { this.selectNode(node); this.commonAncestorContainer = node; } surroundContents(parentNode) { parentNode.replaceChildren(this.extractContents()); } setStartBefore(node) { this[START] = node; } setStartAfter(node) { this[START] = node.nextSibling; } setEndBefore(node) { this[END] = getEnd(node.previousSibling); } setEndAfter(node) { this[END] = getEnd(node); } cloneContents() { let { [START]: start, [END]: end } = this; const fragment = start.ownerDocument.createDocumentFragment(); while (start !== end) { fragment.insertBefore(start.cloneNode(true), fragment[END]); start = getEnd(start); if (start !== end) start = start[NEXT]; } return fragment; } deleteContents() { deleteContents(this); } extractContents() { const fragment = this[START].ownerDocument.createDocumentFragment(); deleteContents(this, fragment); return fragment; } createContextualFragment(html) { const { commonAncestorContainer: doc } = this; const isSVG = "ownerSVGElement" in doc; const document2 = isSVG ? doc.ownerDocument : doc; let content = htmlToFragment(document2, html); if (isSVG) { const childNodes = [...content.childNodes]; content = document2.createDocumentFragment(); Object.setPrototypeOf(content, SVGElement.prototype); content.ownerSVGElement = document2; for (const child of childNodes) { Object.setPrototypeOf(child, SVGElement.prototype); child.ownerSVGElement = document2; content.appendChild(child); } } else this.selectNode(content); return content; } cloneRange() { const range = new _Range(); range[START] = this[START]; range[END] = this[END]; return range; } }; exports2.Range = Range; } }); // node_modules/linkedom/cjs/interface/tree-walker.js var require_tree_walker = __commonJS({ "node_modules/linkedom/cjs/interface/tree-walker.js"(exports2) { "use strict"; init_define_import_meta_env(); var { DOCUMENT_NODE, ELEMENT_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, SHOW_ALL, SHOW_ELEMENT, SHOW_CDATA_SECTION, SHOW_COMMENT, SHOW_TEXT } = require_constants(); var { PRIVATE, END, NEXT } = require_symbols(); var isOK = ({ nodeType }, mask) => { switch (nodeType) { case ELEMENT_NODE: return mask & SHOW_ELEMENT; case TEXT_NODE: return mask & SHOW_TEXT; case COMMENT_NODE: return mask & SHOW_COMMENT; case CDATA_SECTION_NODE: return mask & SHOW_CDATA_SECTION; } return 0; }; var TreeWalker = class { constructor(root, whatToShow = SHOW_ALL) { this.root = root; this.currentNode = root; this.whatToShow = whatToShow; let { [NEXT]: next, [END]: end } = root; if (root.nodeType === DOCUMENT_NODE) { const { documentElement } = root; next = documentElement; end = documentElement[END]; } const nodes = []; while (next && next !== end) { if (isOK(next, whatToShow)) nodes.push(next); next = next[NEXT]; } this[PRIVATE] = { i: 0, nodes }; } nextNode() { const $ = this[PRIVATE]; this.currentNode = $.i < $.nodes.length ? $.nodes[$.i++] : null; return this.currentNode; } }; exports2.TreeWalker = TreeWalker; } }); // node_modules/linkedom/cjs/interface/document.js var require_document = __commonJS({ "node_modules/linkedom/cjs/interface/document.js"(exports2) { "use strict"; init_define_import_meta_env(); var { DOCUMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, SVG_NAMESPACE } = require_constants(); var { CUSTOM_ELEMENTS, DOM_PARSER, GLOBALS, IMAGE, MUTATION_OBSERVER, DOCTYPE, END, NEXT, MIME, EVENT_TARGET, UPGRADE } = require_symbols(); var { Facades, illegalConstructor } = require_facades(); var { HTMLClasses } = require_html_classes(); var { Mime } = require_mime2(); var { knownSiblings } = require_utils4(); var { assign, create, defineProperties, setPrototypeOf } = require_object(); var { NonElementParentNode } = require_non_element_parent_node(); var { SVGElement } = require_element2(); var { Attr } = require_attr(); var { CDATASection } = require_cdata_section(); var { Comment: Comment4 } = require_comment(); var { CustomElementRegistry } = require_custom_element_registry(); var { CustomEvent: CustomEvent2 } = require_custom_event(); var { DocumentFragment } = require_document_fragment(); var { DocumentType } = require_document_type(); var { Element } = require_element(); var { Event: Event2 } = require_event(); var { EventTarget } = require_event_target(); var { InputEvent } = require_input_event(); var { ImageClass } = require_image(); var { MutationObserverClass } = require_mutation_observer(); var { NamedNodeMap } = require_named_node_map(); var { NodeList } = require_node_list(); var { Range } = require_range2(); var { Text: Text4 } = require_text2(); var { TreeWalker } = require_tree_walker(); var query = (method, ownerDocument, selectors) => { let { [NEXT]: next, [END]: end } = ownerDocument; return method.call({ ownerDocument, [NEXT]: next, [END]: end }, selectors); }; var globalExports = assign( {}, Facades, HTMLClasses, { CustomEvent: CustomEvent2, Event: Event2, EventTarget, InputEvent, NamedNodeMap, NodeList } ); var window2 = /* @__PURE__ */ new WeakMap(); var Document = class extends NonElementParentNode { constructor(type) { super(null, "#document", DOCUMENT_NODE); this[CUSTOM_ELEMENTS] = { active: false, registry: null }; this[MUTATION_OBSERVER] = { active: false, class: null }; this[MIME] = Mime[type]; this[DOCTYPE] = null; this[DOM_PARSER] = null; this[GLOBALS] = null; this[IMAGE] = null; this[UPGRADE] = null; } /** * @type {globalThis.Document['defaultView']} */ get defaultView() { if (!window2.has(this)) window2.set(this, new Proxy(globalThis, { set: (target, name, value) => { switch (name) { case "addEventListener": case "removeEventListener": case "dispatchEvent": this[EVENT_TARGET][name] = value; break; default: target[name] = value; break; } return true; }, get: (globalThis2, name) => { switch (name) { case "addEventListener": case "removeEventListener": case "dispatchEvent": if (!this[EVENT_TARGET]) { const et = this[EVENT_TARGET] = new EventTarget(); et.dispatchEvent = et.dispatchEvent.bind(et); et.addEventListener = et.addEventListener.bind(et); et.removeEventListener = et.removeEventListener.bind(et); } return this[EVENT_TARGET][name]; case "document": return this; /* c8 ignore start */ case "navigator": return { userAgent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" }; /* c8 ignore stop */ case "window": return window2.get(this); case "customElements": if (!this[CUSTOM_ELEMENTS].registry) this[CUSTOM_ELEMENTS] = new CustomElementRegistry(this); return this[CUSTOM_ELEMENTS]; case "performance": return globalThis2.performance; case "DOMParser": return this[DOM_PARSER]; case "Image": if (!this[IMAGE]) this[IMAGE] = ImageClass(this); return this[IMAGE]; case "MutationObserver": if (!this[MUTATION_OBSERVER].class) this[MUTATION_OBSERVER] = new MutationObserverClass(this); return this[MUTATION_OBSERVER].class; } return this[GLOBALS] && this[GLOBALS][name] || globalExports[name] || globalThis2[name]; } })); return window2.get(this); } get doctype() { const docType = this[DOCTYPE]; if (docType) return docType; const { firstChild } = this; if (firstChild && firstChild.nodeType === DOCUMENT_TYPE_NODE) return this[DOCTYPE] = firstChild; return null; } set doctype(value) { if (/^([a-z:]+)(\s+system|\s+public(\s+"([^"]+)")?)?(\s+"([^"]+)")?/i.test(value)) { const { $1: name, $4: publicId, $6: systemId } = RegExp; this[DOCTYPE] = new DocumentType(this, name, publicId, systemId); knownSiblings(this, this[DOCTYPE], this[NEXT]); } } get documentElement() { return this.firstElementChild; } get isConnected() { return true; } /** * @protected */ _getParent() { return this[EVENT_TARGET]; } createAttribute(name) { return new Attr(this, name); } createCDATASection(data) { return new CDATASection(this, data); } createComment(textContent2) { return new Comment4(this, textContent2); } createDocumentFragment() { return new DocumentFragment(this); } createDocumentType(name, publicId, systemId) { return new DocumentType(this, name, publicId, systemId); } createElement(localName) { return new Element(this, localName); } createRange() { const range = new Range(); range.commonAncestorContainer = this; return range; } createTextNode(textContent2) { return new Text4(this, textContent2); } createTreeWalker(root, whatToShow = -1) { return new TreeWalker(root, whatToShow); } createNodeIterator(root, whatToShow = -1) { return this.createTreeWalker(root, whatToShow); } createEvent(name) { const event = create(name === "Event" ? new Event2("") : new CustomEvent2("")); event.initEvent = event.initCustomEvent = (type, canBubble = false, cancelable = false, detail) => { event.bubbles = !!canBubble; defineProperties(event, { type: { value: type }, canBubble: { value: canBubble }, cancelable: { value: cancelable }, detail: { value: detail } }); }; return event; } cloneNode(deep = false) { const { constructor, [CUSTOM_ELEMENTS]: customElements, [DOCTYPE]: doctype } = this; const document2 = new constructor(); document2[CUSTOM_ELEMENTS] = customElements; if (deep) { const end = document2[END]; const { childNodes } = this; for (let { length } = childNodes, i = 0; i < length; i++) document2.insertBefore(childNodes[i].cloneNode(true), end); if (doctype) document2[DOCTYPE] = childNodes[0]; } return document2; } importNode(externalNode) { const deep = 1 < arguments.length && !!arguments[1]; const node = externalNode.cloneNode(deep); const { [CUSTOM_ELEMENTS]: customElements } = this; const { active } = customElements; const upgrade = (element) => { const { ownerDocument, nodeType } = element; element.ownerDocument = this; if (active && ownerDocument !== this && nodeType === ELEMENT_NODE) customElements.upgrade(element); }; upgrade(node); if (deep) { switch (node.nodeType) { case ELEMENT_NODE: case DOCUMENT_FRAGMENT_NODE: { let { [NEXT]: next, [END]: end } = node; while (next !== end) { if (next.nodeType === ELEMENT_NODE) upgrade(next); next = next[NEXT]; } break; } } } return node; } toString() { return this.childNodes.join(""); } querySelector(selectors) { return query(super.querySelector, this, selectors); } querySelectorAll(selectors) { return query(super.querySelectorAll, this, selectors); } /* c8 ignore start */ getElementsByTagNameNS(_, name) { return this.getElementsByTagName(name); } createAttributeNS(_, name) { return this.createAttribute(name); } createElementNS(nsp, localName, options) { return nsp === SVG_NAMESPACE ? new SVGElement(this, localName, null) : this.createElement(localName, options); } /* c8 ignore stop */ }; exports2.Document = Document; setPrototypeOf( globalExports.Document = function Document2() { illegalConstructor(); }, Document ).prototype = Document.prototype; } }); // node_modules/linkedom/cjs/html/document.js var require_document2 = __commonJS({ "node_modules/linkedom/cjs/html/document.js"(exports2) { "use strict"; init_define_import_meta_env(); var { ELEMENT_NODE } = require_constants(); var { CUSTOM_ELEMENTS, END, NEXT } = require_symbols(); var { htmlClasses } = require_register_html_class(); var { Document } = require_document(); var { NodeList } = require_node_list(); var { customElements } = require_custom_element_registry(); var { HTMLElement: HTMLElement2 } = require_element3(); var createHTMLElement = (ownerDocument, builtin, localName, options) => { if (!builtin && htmlClasses.has(localName)) { const Class = htmlClasses.get(localName); return new Class(ownerDocument, localName); } const { [CUSTOM_ELEMENTS]: { active, registry } } = ownerDocument; if (active) { const ce = builtin ? options.is : localName; if (registry.has(ce)) { const { Class } = registry.get(ce); const element = new Class(ownerDocument, localName); customElements.set(element, { connected: false }); return element; } } return new HTMLElement2(ownerDocument, localName); }; var HTMLDocument = class extends Document { constructor() { super("text/html"); } get all() { const nodeList = new NodeList(); let { [NEXT]: next, [END]: end } = this; while (next !== end) { switch (next.nodeType) { case ELEMENT_NODE: nodeList.push(next); break; } next = next[NEXT]; } return nodeList; } /** * @type HTMLHeadElement */ get head() { const { documentElement } = this; let { firstElementChild } = documentElement; if (!firstElementChild || firstElementChild.tagName !== "HEAD") { firstElementChild = this.createElement("head"); documentElement.prepend(firstElementChild); } return firstElementChild; } /** * @type HTMLBodyElement */ get body() { const { head } = this; let { nextElementSibling: nextElementSibling2 } = head; if (!nextElementSibling2 || nextElementSibling2.tagName !== "BODY") { nextElementSibling2 = this.createElement("body"); head.after(nextElementSibling2); } return nextElementSibling2; } /** * @type HTMLTitleElement */ get title() { const { head } = this; return head.getElementsByTagName("title").at(0)?.textContent || ""; } set title(textContent2) { const { head } = this; let title = head.getElementsByTagName("title").at(0); if (title) title.textContent = textContent2; else { head.insertBefore( this.createElement("title"), head.firstChild ).textContent = textContent2; } } createElement(localName, options) { const builtin = !!(options && options.is); const element = createHTMLElement(this, builtin, localName, options); if (builtin) element.setAttribute("is", options.is); return element; } }; exports2.HTMLDocument = HTMLDocument; } }); // node_modules/linkedom/cjs/svg/document.js var require_document3 = __commonJS({ "node_modules/linkedom/cjs/svg/document.js"(exports2) { "use strict"; init_define_import_meta_env(); var { MIME } = require_symbols(); var { Document } = require_document(); var SVGDocument = class extends Document { constructor() { super("image/svg+xml"); } toString() { return this[MIME].docType + super.toString(); } }; exports2.SVGDocument = SVGDocument; } }); // node_modules/linkedom/cjs/xml/document.js var require_document4 = __commonJS({ "node_modules/linkedom/cjs/xml/document.js"(exports2) { "use strict"; init_define_import_meta_env(); var { MIME } = require_symbols(); var { Document } = require_document(); var XMLDocument = class extends Document { constructor() { super("text/xml"); } toString() { return this[MIME].docType + super.toString(); } }; exports2.XMLDocument = XMLDocument; } }); // node_modules/linkedom/cjs/dom/parser.js var require_parser = __commonJS({ "node_modules/linkedom/cjs/dom/parser.js"(exports2) { "use strict"; init_define_import_meta_env(); var { DOM_PARSER, GLOBALS } = require_symbols(); var { parseFromString } = require_parse_from_string(); var { HTMLDocument } = require_document2(); var { SVGDocument } = require_document3(); var { XMLDocument } = require_document4(); var DOMParser3 = class _DOMParser { /** @typedef {{ "text/html": HTMLDocument, "image/svg+xml": SVGDocument, "text/xml": XMLDocument }} MimeToDoc */ /** * @template {keyof MimeToDoc} MIME * @param {string} markupLanguage * @param {MIME} mimeType * @returns {MimeToDoc[MIME]} */ parseFromString(markupLanguage, mimeType, globals = null) { let isHTML = false, document2; if (mimeType === "text/html") { isHTML = true; document2 = new HTMLDocument(); } else if (mimeType === "image/svg+xml") document2 = new SVGDocument(); else document2 = new XMLDocument(); document2[DOM_PARSER] = _DOMParser; if (globals) document2[GLOBALS] = globals; if (isHTML && markupLanguage === "...") markupLanguage = "<!doctype html><html><head></head><body></body></html>"; return markupLanguage ? parseFromString(document2, isHTML, markupLanguage) : document2; } }; exports2.DOMParser = DOMParser3; } }); // node_modules/linkedom/cjs/shared/parse-json.js var require_parse_json = __commonJS({ "node_modules/linkedom/cjs/shared/parse-json.js"(exports2) { "use strict"; init_define_import_meta_env(); var { NODE_END, ELEMENT_NODE, ATTRIBUTE_NODE, TEXT_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, DOCUMENT_FRAGMENT_NODE } = require_constants(); var { END, PREV } = require_symbols(); var { htmlClasses } = require_register_html_class(); var { knownBoundaries, knownSiblings } = require_utils4(); var { Attr } = require_attr(); var { CDATASection } = require_cdata_section(); var { Comment: Comment4 } = require_comment(); var { DocumentType } = require_document_type(); var { Text: Text4 } = require_text2(); var { HTMLDocument } = require_document2(); var { HTMLElement: HTMLElement2 } = require_element3(); var { SVGElement } = require_element2(); var { parse: parse3 } = JSON; var append2 = (parentNode, node, end) => { node.parentNode = parentNode; knownSiblings(end[PREV], node, end); }; var createHTMLElement = (ownerDocument, localName) => { if (htmlClasses.has(localName)) { const Class = htmlClasses.get(localName); return new Class(ownerDocument, localName); } return new HTMLElement2(ownerDocument, localName); }; var parseJSON = (value) => { const array = typeof value === "string" ? parse3(value) : value; const { length } = array; const document2 = new HTMLDocument(); let parentNode = document2, end = parentNode[END], svg = false, i = 0; while (i < length) { let nodeType = array[i++]; switch (nodeType) { case ELEMENT_NODE: { const localName = array[i++]; const isSVG = svg || localName === "svg" || localName === "SVG"; const element = isSVG ? new SVGElement(document2, localName, parentNode.ownerSVGElement || null) : createHTMLElement(document2, localName); knownBoundaries(end[PREV], element, end); element.parentNode = parentNode; parentNode = element; end = parentNode[END]; svg = isSVG; break; } case ATTRIBUTE_NODE: { const name = array[i++]; const value2 = typeof array[i] === "string" ? array[i++] : ""; const attr = new Attr(document2, name, value2); attr.ownerElement = parentNode; knownSiblings(end[PREV], attr, end); break; } case TEXT_NODE: append2(parentNode, new Text4(document2, array[i++]), end); break; case COMMENT_NODE: append2(parentNode, new Comment4(document2, array[i++]), end); break; case CDATA_SECTION_NODE: append2(parentNode, new CDATASection(document2, array[i++]), end); break; case DOCUMENT_TYPE_NODE: { const args = [document2]; while (typeof array[i] === "string") args.push(array[i++]); if (args.length === 3 && /\.dtd$/i.test(args[2])) args.splice(2, 0, ""); append2(parentNode, new DocumentType(...args), end); break; } case DOCUMENT_FRAGMENT_NODE: parentNode = document2.createDocumentFragment(); end = parentNode[END]; /* eslint no-fallthrough:0 */ case DOCUMENT_NODE: break; default: do { nodeType -= NODE_END; if (svg && !parentNode.ownerSVGElement) svg = false; parentNode = parentNode.parentNode || parentNode; } while (nodeType < 0); end = parentNode[END]; break; } } switch (i && array[0]) { case ELEMENT_NODE: return document2.firstElementChild; case DOCUMENT_FRAGMENT_NODE: return parentNode; } return document2; }; exports2.parseJSON = parseJSON; var toJSON = (node) => node.toJSON(); exports2.toJSON = toJSON; } }); // node_modules/linkedom/cjs/interface/node-filter.js var require_node_filter = __commonJS({ "node_modules/linkedom/cjs/interface/node-filter.js"(exports2) { "use strict"; init_define_import_meta_env(); var { SHOW_ALL, SHOW_ELEMENT, SHOW_COMMENT, SHOW_CDATA_SECTION, SHOW_TEXT } = require_constants(); var NodeFilter = class { static get SHOW_ALL() { return SHOW_ALL; } static get SHOW_ELEMENT() { return SHOW_ELEMENT; } static get SHOW_COMMENT() { return SHOW_COMMENT; } static get SHOW_CDATA_SECTION() { return SHOW_CDATA_SECTION; } static get SHOW_TEXT() { return SHOW_TEXT; } }; exports2.NodeFilter = NodeFilter; } }); // node_modules/linkedom/cjs/index.js var require_cjs2 = __commonJS({ "node_modules/linkedom/cjs/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var { DOMParser: DOMParser3 } = require_parser(); var { Document: _Document } = require_document(); var { illegalConstructor } = require_facades(); var { setPrototypeOf } = require_object(); ((m) => { exports2.parseJSON = m.parseJSON; exports2.toJSON = m.toJSON; })(require_parse_json()); ((m) => Object.keys(m).map((k) => k !== "default" && (exports2[k] = m[k])))(require_facades()); ((m) => Object.keys(m).map((k) => k !== "default" && (exports2[k] = m[k])))(require_html_classes()); exports2.DOMParser = DOMParser3; ((m) => { exports2.CustomEvent = m.CustomEvent; })(require_custom_event()); ((m) => { exports2.Event = m.Event; })(require_event()); ((m) => { exports2.EventTarget = m.EventTarget; })(require_event_target()); ((m) => { exports2.InputEvent = m.InputEvent; })(require_input_event()); ((m) => { exports2.NodeList = m.NodeList; })(require_node_list()); ((m) => { exports2.NodeFilter = m.NodeFilter; })(require_node_filter()); var parseHTML = (html, globals = null) => new DOMParser3().parseFromString( html, "text/html", globals ).defaultView; exports2.parseHTML = parseHTML; function Document() { illegalConstructor(); } exports2.Document = Document; setPrototypeOf(Document, _Document).prototype = _Document.prototype; } }); // node_modules/telegram/inspect.js var require_inspect = __commonJS({ "node_modules/telegram/inspect.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.inspect = void 0; var util_1 = require("util"); Object.defineProperty(exports2, "inspect", { enumerable: true, get: function() { return util_1.inspect; } }); } }); // node_modules/big-integer/BigInteger.js var require_BigInteger = __commonJS({ "node_modules/big-integer/BigInteger.js"(exports2, module2) { init_define_import_meta_env(); var bigInt2 = (function(undefined2) { "use strict"; var BASE2 = 1e7, LOG_BASE = 7, MAX_INT = 9007199254740992, MAX_INT_ARR = smallToArray(MAX_INT), DEFAULT_ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyz"; var supportsNativeBigInt = typeof BigInt === "function"; function Integer(v, radix, alphabet, caseSensitive) { if (typeof v === "undefined") return Integer[0]; if (typeof radix !== "undefined") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive); return parseValue(v); } function BigInteger(value, sign) { this.value = value; this.sign = sign; this.isSmall = false; } BigInteger.prototype = Object.create(Integer.prototype); function SmallInteger(value) { this.value = value; this.sign = value < 0; this.isSmall = true; } SmallInteger.prototype = Object.create(Integer.prototype); function NativeBigInt(value) { this.value = value; } NativeBigInt.prototype = Object.create(Integer.prototype); function isPrecise(n) { return -MAX_INT < n && n < MAX_INT; } function smallToArray(n) { if (n < 1e7) return [n]; if (n < 1e14) return [n % 1e7, Math.floor(n / 1e7)]; return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)]; } function arrayToSmall(arr) { trim(arr); var length = arr.length; if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) { switch (length) { case 0: return 0; case 1: return arr[0]; case 2: return arr[0] + arr[1] * BASE2; default: return arr[0] + (arr[1] + arr[2] * BASE2) * BASE2; } } return arr; } function trim(v) { var i2 = v.length; while (v[--i2] === 0) ; v.length = i2 + 1; } function createArray(length) { var x = new Array(length); var i2 = -1; while (++i2 < length) { x[i2] = 0; } return x; } function truncate(n) { if (n > 0) return Math.floor(n); return Math.ceil(n); } function add(a, b) { var l_a = a.length, l_b = b.length, r = new Array(l_a), carry = 0, base = BASE2, sum, i2; for (i2 = 0; i2 < l_b; i2++) { sum = a[i2] + b[i2] + carry; carry = sum >= base ? 1 : 0; r[i2] = sum - carry * base; } while (i2 < l_a) { sum = a[i2] + carry; carry = sum === base ? 1 : 0; r[i2++] = sum - carry * base; } if (carry > 0) r.push(carry); return r; } function addAny(a, b) { if (a.length >= b.length) return add(a, b); return add(b, a); } function addSmall(a, carry) { var l = a.length, r = new Array(l), base = BASE2, sum, i2; for (i2 = 0; i2 < l; i2++) { sum = a[i2] - base + carry; carry = Math.floor(sum / base); r[i2] = sum - carry * base; carry += 1; } while (carry > 0) { r[i2++] = carry % base; carry = Math.floor(carry / base); } return r; } BigInteger.prototype.add = function(v) { var n = parseValue(v); if (this.sign !== n.sign) { return this.subtract(n.negate()); } var a = this.value, b = n.value; if (n.isSmall) { return new BigInteger(addSmall(a, Math.abs(b)), this.sign); } return new BigInteger(addAny(a, b), this.sign); }; BigInteger.prototype.plus = BigInteger.prototype.add; SmallInteger.prototype.add = function(v) { var n = parseValue(v); var a = this.value; if (a < 0 !== n.sign) { return this.subtract(n.negate()); } var b = n.value; if (n.isSmall) { if (isPrecise(a + b)) return new SmallInteger(a + b); b = smallToArray(Math.abs(b)); } return new BigInteger(addSmall(b, Math.abs(a)), a < 0); }; SmallInteger.prototype.plus = SmallInteger.prototype.add; NativeBigInt.prototype.add = function(v) { return new NativeBigInt(this.value + parseValue(v).value); }; NativeBigInt.prototype.plus = NativeBigInt.prototype.add; function subtract(a, b) { var a_l = a.length, b_l = b.length, r = new Array(a_l), borrow = 0, base = BASE2, i2, difference; for (i2 = 0; i2 < b_l; i2++) { difference = a[i2] - borrow - b[i2]; if (difference < 0) { difference += base; borrow = 1; } else borrow = 0; r[i2] = difference; } for (i2 = b_l; i2 < a_l; i2++) { difference = a[i2] - borrow; if (difference < 0) difference += base; else { r[i2++] = difference; break; } r[i2] = difference; } for (; i2 < a_l; i2++) { r[i2] = a[i2]; } trim(r); return r; } function subtractAny(a, b, sign) { var value; if (compareAbs(a, b) >= 0) { value = subtract(a, b); } else { value = subtract(b, a); sign = !sign; } value = arrayToSmall(value); if (typeof value === "number") { if (sign) value = -value; return new SmallInteger(value); } return new BigInteger(value, sign); } function subtractSmall(a, b, sign) { var l = a.length, r = new Array(l), carry = -b, base = BASE2, i2, difference; for (i2 = 0; i2 < l; i2++) { difference = a[i2] + carry; carry = Math.floor(difference / base); difference %= base; r[i2] = difference < 0 ? difference + base : difference; } r = arrayToSmall(r); if (typeof r === "number") { if (sign) r = -r; return new SmallInteger(r); } return new BigInteger(r, sign); } BigInteger.prototype.subtract = function(v) { var n = parseValue(v); if (this.sign !== n.sign) { return this.add(n.negate()); } var a = this.value, b = n.value; if (n.isSmall) return subtractSmall(a, Math.abs(b), this.sign); return subtractAny(a, b, this.sign); }; BigInteger.prototype.minus = BigInteger.prototype.subtract; SmallInteger.prototype.subtract = function(v) { var n = parseValue(v); var a = this.value; if (a < 0 !== n.sign) { return this.add(n.negate()); } var b = n.value; if (n.isSmall) { return new SmallInteger(a - b); } return subtractSmall(b, Math.abs(a), a >= 0); }; SmallInteger.prototype.minus = SmallInteger.prototype.subtract; NativeBigInt.prototype.subtract = function(v) { return new NativeBigInt(this.value - parseValue(v).value); }; NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract; BigInteger.prototype.negate = function() { return new BigInteger(this.value, !this.sign); }; SmallInteger.prototype.negate = function() { var sign = this.sign; var small = new SmallInteger(-this.value); small.sign = !sign; return small; }; NativeBigInt.prototype.negate = function() { return new NativeBigInt(-this.value); }; BigInteger.prototype.abs = function() { return new BigInteger(this.value, false); }; SmallInteger.prototype.abs = function() { return new SmallInteger(Math.abs(this.value)); }; NativeBigInt.prototype.abs = function() { return new NativeBigInt(this.value >= 0 ? this.value : -this.value); }; function multiplyLong(a, b) { var a_l = a.length, b_l = b.length, l = a_l + b_l, r = createArray(l), base = BASE2, product, carry, i2, a_i, b_j; for (i2 = 0; i2 < a_l; ++i2) { a_i = a[i2]; for (var j = 0; j < b_l; ++j) { b_j = b[j]; product = a_i * b_j + r[i2 + j]; carry = Math.floor(product / base); r[i2 + j] = product - carry * base; r[i2 + j + 1] += carry; } } trim(r); return r; } function multiplySmall(a, b) { var l = a.length, r = new Array(l), base = BASE2, carry = 0, product, i2; for (i2 = 0; i2 < l; i2++) { product = a[i2] * b + carry; carry = Math.floor(product / base); r[i2] = product - carry * base; } while (carry > 0) { r[i2++] = carry % base; carry = Math.floor(carry / base); } return r; } function shiftLeft(x, n) { var r = []; while (n-- > 0) r.push(0); return r.concat(x); } function multiplyKaratsuba(x, y) { var n = Math.max(x.length, y.length); if (n <= 30) return multiplyLong(x, y); n = Math.ceil(n / 2); var b = x.slice(n), a = x.slice(0, n), d = y.slice(n), c = y.slice(0, n); var ac = multiplyKaratsuba(a, c), bd = multiplyKaratsuba(b, d), abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d)); var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n)); trim(product); return product; } function useKaratsuba(l1, l2) { return -0.012 * l1 - 0.012 * l2 + 15e-6 * l1 * l2 > 0; } BigInteger.prototype.multiply = function(v) { var n = parseValue(v), a = this.value, b = n.value, sign = this.sign !== n.sign, abs; if (n.isSmall) { if (b === 0) return Integer[0]; if (b === 1) return this; if (b === -1) return this.negate(); abs = Math.abs(b); if (abs < BASE2) { return new BigInteger(multiplySmall(a, abs), sign); } b = smallToArray(abs); } if (useKaratsuba(a.length, b.length)) return new BigInteger(multiplyKaratsuba(a, b), sign); return new BigInteger(multiplyLong(a, b), sign); }; BigInteger.prototype.times = BigInteger.prototype.multiply; function multiplySmallAndArray(a, b, sign) { if (a < BASE2) { return new BigInteger(multiplySmall(b, a), sign); } return new BigInteger(multiplyLong(b, smallToArray(a)), sign); } SmallInteger.prototype._multiplyBySmall = function(a) { if (isPrecise(a.value * this.value)) { return new SmallInteger(a.value * this.value); } return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign); }; BigInteger.prototype._multiplyBySmall = function(a) { if (a.value === 0) return Integer[0]; if (a.value === 1) return this; if (a.value === -1) return this.negate(); return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign); }; SmallInteger.prototype.multiply = function(v) { return parseValue(v)._multiplyBySmall(this); }; SmallInteger.prototype.times = SmallInteger.prototype.multiply; NativeBigInt.prototype.multiply = function(v) { return new NativeBigInt(this.value * parseValue(v).value); }; NativeBigInt.prototype.times = NativeBigInt.prototype.multiply; function square(a) { var l = a.length, r = createArray(l + l), base = BASE2, product, carry, i2, a_i, a_j; for (i2 = 0; i2 < l; i2++) { a_i = a[i2]; carry = 0 - a_i * a_i; for (var j = i2; j < l; j++) { a_j = a[j]; product = 2 * (a_i * a_j) + r[i2 + j] + carry; carry = Math.floor(product / base); r[i2 + j] = product - carry * base; } r[i2 + l] = carry; } trim(r); return r; } BigInteger.prototype.square = function() { return new BigInteger(square(this.value), false); }; SmallInteger.prototype.square = function() { var value = this.value * this.value; if (isPrecise(value)) return new SmallInteger(value); return new BigInteger(square(smallToArray(Math.abs(this.value))), false); }; NativeBigInt.prototype.square = function(v) { return new NativeBigInt(this.value * this.value); }; function divMod1(a, b) { var a_l = a.length, b_l = b.length, base = BASE2, result = createArray(b.length), divisorMostSignificantDigit = b[b_l - 1], lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)), remainder = multiplySmall(a, lambda), divisor = multiplySmall(b, lambda), quotientDigit, shift, carry, borrow, i2, l, q; if (remainder.length <= a_l) remainder.push(0); divisor.push(0); divisorMostSignificantDigit = divisor[b_l - 1]; for (shift = a_l - b_l; shift >= 0; shift--) { quotientDigit = base - 1; if (remainder[shift + b_l] !== divisorMostSignificantDigit) { quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit); } carry = 0; borrow = 0; l = divisor.length; for (i2 = 0; i2 < l; i2++) { carry += quotientDigit * divisor[i2]; q = Math.floor(carry / base); borrow += remainder[shift + i2] - (carry - q * base); carry = q; if (borrow < 0) { remainder[shift + i2] = borrow + base; borrow = -1; } else { remainder[shift + i2] = borrow; borrow = 0; } } while (borrow !== 0) { quotientDigit -= 1; carry = 0; for (i2 = 0; i2 < l; i2++) { carry += remainder[shift + i2] - base + divisor[i2]; if (carry < 0) { remainder[shift + i2] = carry + base; carry = 0; } else { remainder[shift + i2] = carry; carry = 1; } } borrow += carry; } result[shift] = quotientDigit; } remainder = divModSmall(remainder, lambda)[0]; return [arrayToSmall(result), arrayToSmall(remainder)]; } function divMod2(a, b) { var a_l = a.length, b_l = b.length, result = [], part = [], base = BASE2, guess, xlen, highx, highy, check2; while (a_l) { part.unshift(a[--a_l]); trim(part); if (compareAbs(part, b) < 0) { result.push(0); continue; } xlen = part.length; highx = part[xlen - 1] * base + part[xlen - 2]; highy = b[b_l - 1] * base + b[b_l - 2]; if (xlen > b_l) { highx = (highx + 1) * base; } guess = Math.ceil(highx / highy); do { check2 = multiplySmall(b, guess); if (compareAbs(check2, part) <= 0) break; guess--; } while (guess); result.push(guess); part = subtract(part, check2); } result.reverse(); return [arrayToSmall(result), arrayToSmall(part)]; } function divModSmall(value, lambda) { var length = value.length, quotient = createArray(length), base = BASE2, i2, q, remainder, divisor; remainder = 0; for (i2 = length - 1; i2 >= 0; --i2) { divisor = remainder * base + value[i2]; q = truncate(divisor / lambda); remainder = divisor - q * lambda; quotient[i2] = q | 0; } return [quotient, remainder | 0]; } function divModAny(self2, v) { var value, n = parseValue(v); if (supportsNativeBigInt) { return [new NativeBigInt(self2.value / n.value), new NativeBigInt(self2.value % n.value)]; } var a = self2.value, b = n.value; var quotient; if (b === 0) throw new Error("Cannot divide by zero"); if (self2.isSmall) { if (n.isSmall) { return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)]; } return [Integer[0], self2]; } if (n.isSmall) { if (b === 1) return [self2, Integer[0]]; if (b == -1) return [self2.negate(), Integer[0]]; var abs = Math.abs(b); if (abs < BASE2) { value = divModSmall(a, abs); quotient = arrayToSmall(value[0]); var remainder = value[1]; if (self2.sign) remainder = -remainder; if (typeof quotient === "number") { if (self2.sign !== n.sign) quotient = -quotient; return [new SmallInteger(quotient), new SmallInteger(remainder)]; } return [new BigInteger(quotient, self2.sign !== n.sign), new SmallInteger(remainder)]; } b = smallToArray(abs); } var comparison = compareAbs(a, b); if (comparison === -1) return [Integer[0], self2]; if (comparison === 0) return [Integer[self2.sign === n.sign ? 1 : -1], Integer[0]]; if (a.length + b.length <= 200) value = divMod1(a, b); else value = divMod2(a, b); quotient = value[0]; var qSign = self2.sign !== n.sign, mod = value[1], mSign = self2.sign; if (typeof quotient === "number") { if (qSign) quotient = -quotient; quotient = new SmallInteger(quotient); } else quotient = new BigInteger(quotient, qSign); if (typeof mod === "number") { if (mSign) mod = -mod; mod = new SmallInteger(mod); } else mod = new BigInteger(mod, mSign); return [quotient, mod]; } BigInteger.prototype.divmod = function(v) { var result = divModAny(this, v); return { quotient: result[0], remainder: result[1] }; }; NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod; BigInteger.prototype.divide = function(v) { return divModAny(this, v)[0]; }; NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function(v) { return new NativeBigInt(this.value / parseValue(v).value); }; SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide; BigInteger.prototype.mod = function(v) { return divModAny(this, v)[1]; }; NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function(v) { return new NativeBigInt(this.value % parseValue(v).value); }; SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod; BigInteger.prototype.pow = function(v) { var n = parseValue(v), a = this.value, b = n.value, value, x, y; if (b === 0) return Integer[1]; if (a === 0) return Integer[0]; if (a === 1) return Integer[1]; if (a === -1) return n.isEven() ? Integer[1] : Integer[-1]; if (n.sign) { return Integer[0]; } if (!n.isSmall) throw new Error("The exponent " + n.toString() + " is too large."); if (this.isSmall) { if (isPrecise(value = Math.pow(a, b))) return new SmallInteger(truncate(value)); } x = this; y = Integer[1]; while (true) { if (b & true) { y = y.times(x); --b; } if (b === 0) break; b /= 2; x = x.square(); } return y; }; SmallInteger.prototype.pow = BigInteger.prototype.pow; NativeBigInt.prototype.pow = function(v) { var n = parseValue(v); var a = this.value, b = n.value; var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2); if (b === _0) return Integer[1]; if (a === _0) return Integer[0]; if (a === _1) return Integer[1]; if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1]; if (n.isNegative()) return new NativeBigInt(_0); var x = this; var y = Integer[1]; while (true) { if ((b & _1) === _1) { y = y.times(x); --b; } if (b === _0) break; b /= _2; x = x.square(); } return y; }; BigInteger.prototype.modPow = function(exp, mod) { exp = parseValue(exp); mod = parseValue(mod); if (mod.isZero()) throw new Error("Cannot take modPow with modulus 0"); var r = Integer[1], base = this.mod(mod); if (exp.isNegative()) { exp = exp.multiply(Integer[-1]); base = base.modInv(mod); } while (exp.isPositive()) { if (base.isZero()) return Integer[0]; if (exp.isOdd()) r = r.multiply(base).mod(mod); exp = exp.divide(2); base = base.square().mod(mod); } return r; }; NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow; function compareAbs(a, b) { if (a.length !== b.length) { return a.length > b.length ? 1 : -1; } for (var i2 = a.length - 1; i2 >= 0; i2--) { if (a[i2] !== b[i2]) return a[i2] > b[i2] ? 1 : -1; } return 0; } BigInteger.prototype.compareAbs = function(v) { var n = parseValue(v), a = this.value, b = n.value; if (n.isSmall) return 1; return compareAbs(a, b); }; SmallInteger.prototype.compareAbs = function(v) { var n = parseValue(v), a = Math.abs(this.value), b = n.value; if (n.isSmall) { b = Math.abs(b); return a === b ? 0 : a > b ? 1 : -1; } return -1; }; NativeBigInt.prototype.compareAbs = function(v) { var a = this.value; var b = parseValue(v).value; a = a >= 0 ? a : -a; b = b >= 0 ? b : -b; return a === b ? 0 : a > b ? 1 : -1; }; BigInteger.prototype.compare = function(v) { if (v === Infinity) { return -1; } if (v === -Infinity) { return 1; } var n = parseValue(v), a = this.value, b = n.value; if (this.sign !== n.sign) { return n.sign ? 1 : -1; } if (n.isSmall) { return this.sign ? -1 : 1; } return compareAbs(a, b) * (this.sign ? -1 : 1); }; BigInteger.prototype.compareTo = BigInteger.prototype.compare; SmallInteger.prototype.compare = function(v) { if (v === Infinity) { return -1; } if (v === -Infinity) { return 1; } var n = parseValue(v), a = this.value, b = n.value; if (n.isSmall) { return a == b ? 0 : a > b ? 1 : -1; } if (a < 0 !== n.sign) { return a < 0 ? -1 : 1; } return a < 0 ? 1 : -1; }; SmallInteger.prototype.compareTo = SmallInteger.prototype.compare; NativeBigInt.prototype.compare = function(v) { if (v === Infinity) { return -1; } if (v === -Infinity) { return 1; } var a = this.value; var b = parseValue(v).value; return a === b ? 0 : a > b ? 1 : -1; }; NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare; BigInteger.prototype.equals = function(v) { return this.compare(v) === 0; }; NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals; BigInteger.prototype.notEquals = function(v) { return this.compare(v) !== 0; }; NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals; BigInteger.prototype.greater = function(v) { return this.compare(v) > 0; }; NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater; BigInteger.prototype.lesser = function(v) { return this.compare(v) < 0; }; NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser; BigInteger.prototype.greaterOrEquals = function(v) { return this.compare(v) >= 0; }; NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals; BigInteger.prototype.lesserOrEquals = function(v) { return this.compare(v) <= 0; }; NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals; BigInteger.prototype.isEven = function() { return (this.value[0] & 1) === 0; }; SmallInteger.prototype.isEven = function() { return (this.value & 1) === 0; }; NativeBigInt.prototype.isEven = function() { return (this.value & BigInt(1)) === BigInt(0); }; BigInteger.prototype.isOdd = function() { return (this.value[0] & 1) === 1; }; SmallInteger.prototype.isOdd = function() { return (this.value & 1) === 1; }; NativeBigInt.prototype.isOdd = function() { return (this.value & BigInt(1)) === BigInt(1); }; BigInteger.prototype.isPositive = function() { return !this.sign; }; SmallInteger.prototype.isPositive = function() { return this.value > 0; }; NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive; BigInteger.prototype.isNegative = function() { return this.sign; }; SmallInteger.prototype.isNegative = function() { return this.value < 0; }; NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative; BigInteger.prototype.isUnit = function() { return false; }; SmallInteger.prototype.isUnit = function() { return Math.abs(this.value) === 1; }; NativeBigInt.prototype.isUnit = function() { return this.abs().value === BigInt(1); }; BigInteger.prototype.isZero = function() { return false; }; SmallInteger.prototype.isZero = function() { return this.value === 0; }; NativeBigInt.prototype.isZero = function() { return this.value === BigInt(0); }; BigInteger.prototype.isDivisibleBy = function(v) { var n = parseValue(v); if (n.isZero()) return false; if (n.isUnit()) return true; if (n.compareAbs(2) === 0) return this.isEven(); return this.mod(n).isZero(); }; NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy; function isBasicPrime(v) { var n = v.abs(); if (n.isUnit()) return false; if (n.equals(2) || n.equals(3) || n.equals(5)) return true; if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false; if (n.lesser(49)) return true; } function millerRabinTest(n, a) { var nPrev = n.prev(), b = nPrev, r = 0, d, t, i2, x; while (b.isEven()) b = b.divide(2), r++; next: for (i2 = 0; i2 < a.length; i2++) { if (n.lesser(a[i2])) continue; x = bigInt2(a[i2]).modPow(b, n); if (x.isUnit() || x.equals(nPrev)) continue; for (d = r - 1; d != 0; d--) { x = x.square().mod(n); if (x.isUnit()) return false; if (x.equals(nPrev)) continue next; } return false; } return true; } BigInteger.prototype.isPrime = function(strict) { var isPrime = isBasicPrime(this); if (isPrime !== undefined2) return isPrime; var n = this.abs(); var bits = n.bitLength(); if (bits <= 64) return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]); var logN = Math.log(2) * bits.toJSNumber(); var t = Math.ceil(strict === true ? 2 * Math.pow(logN, 2) : logN); for (var a = [], i2 = 0; i2 < t; i2++) { a.push(bigInt2(i2 + 2)); } return millerRabinTest(n, a); }; NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime; BigInteger.prototype.isProbablePrime = function(iterations, rng) { var isPrime = isBasicPrime(this); if (isPrime !== undefined2) return isPrime; var n = this.abs(); var t = iterations === undefined2 ? 5 : iterations; for (var a = [], i2 = 0; i2 < t; i2++) { a.push(bigInt2.randBetween(2, n.minus(2), rng)); } return millerRabinTest(n, a); }; NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime; BigInteger.prototype.modInv = function(n) { var t = bigInt2.zero, newT = bigInt2.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR; while (!newR.isZero()) { q = r.divide(newR); lastT = t; lastR = r; t = newT; r = newR; newT = lastT.subtract(q.multiply(newT)); newR = lastR.subtract(q.multiply(newR)); } if (!r.isUnit()) throw new Error(this.toString() + " and " + n.toString() + " are not co-prime"); if (t.compare(0) === -1) { t = t.add(n); } if (this.isNegative()) { return t.negate(); } return t; }; NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv; BigInteger.prototype.next = function() { var value = this.value; if (this.sign) { return subtractSmall(value, 1, this.sign); } return new BigInteger(addSmall(value, 1), this.sign); }; SmallInteger.prototype.next = function() { var value = this.value; if (value + 1 < MAX_INT) return new SmallInteger(value + 1); return new BigInteger(MAX_INT_ARR, false); }; NativeBigInt.prototype.next = function() { return new NativeBigInt(this.value + BigInt(1)); }; BigInteger.prototype.prev = function() { var value = this.value; if (this.sign) { return new BigInteger(addSmall(value, 1), true); } return subtractSmall(value, 1, this.sign); }; SmallInteger.prototype.prev = function() { var value = this.value; if (value - 1 > -MAX_INT) return new SmallInteger(value - 1); return new BigInteger(MAX_INT_ARR, true); }; NativeBigInt.prototype.prev = function() { return new NativeBigInt(this.value - BigInt(1)); }; var powersOfTwo = [1]; while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE2) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]); var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1]; function shift_isSmall(n) { return Math.abs(n) <= BASE2; } BigInteger.prototype.shiftLeft = function(v) { var n = parseValue(v).toJSNumber(); if (!shift_isSmall(n)) { throw new Error(String(n) + " is too large for shifting."); } if (n < 0) return this.shiftRight(-n); var result = this; if (result.isZero()) return result; while (n >= powers2Length) { result = result.multiply(highestPower2); n -= powers2Length - 1; } return result.multiply(powersOfTwo[n]); }; NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft; BigInteger.prototype.shiftRight = function(v) { var remQuo; var n = parseValue(v).toJSNumber(); if (!shift_isSmall(n)) { throw new Error(String(n) + " is too large for shifting."); } if (n < 0) return this.shiftLeft(-n); var result = this; while (n >= powers2Length) { if (result.isZero() || result.isNegative() && result.isUnit()) return result; remQuo = divModAny(result, highestPower2); result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; n -= powers2Length - 1; } remQuo = divModAny(result, powersOfTwo[n]); return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0]; }; NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight; function bitwise(x, y, fn) { y = parseValue(y); var xSign = x.isNegative(), ySign = y.isNegative(); var xRem = xSign ? x.not() : x, yRem = ySign ? y.not() : y; var xDigit = 0, yDigit = 0; var xDivMod = null, yDivMod = null; var result = []; while (!xRem.isZero() || !yRem.isZero()) { xDivMod = divModAny(xRem, highestPower2); xDigit = xDivMod[1].toJSNumber(); if (xSign) { xDigit = highestPower2 - 1 - xDigit; } yDivMod = divModAny(yRem, highestPower2); yDigit = yDivMod[1].toJSNumber(); if (ySign) { yDigit = highestPower2 - 1 - yDigit; } xRem = xDivMod[0]; yRem = yDivMod[0]; result.push(fn(xDigit, yDigit)); } var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt2(-1) : bigInt2(0); for (var i2 = result.length - 1; i2 >= 0; i2 -= 1) { sum = sum.multiply(highestPower2).add(bigInt2(result[i2])); } return sum; } BigInteger.prototype.not = function() { return this.negate().prev(); }; NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not; BigInteger.prototype.and = function(n) { return bitwise(this, n, function(a, b) { return a & b; }); }; NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and; BigInteger.prototype.or = function(n) { return bitwise(this, n, function(a, b) { return a | b; }); }; NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or; BigInteger.prototype.xor = function(n) { return bitwise(this, n, function(a, b) { return a ^ b; }); }; NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor; var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE2 & -BASE2) * (BASE2 & -BASE2) | LOBMASK_I; function roughLOB(n) { var v = n.value, x = typeof v === "number" ? v | LOBMASK_I : typeof v === "bigint" ? v | BigInt(LOBMASK_I) : v[0] + v[1] * BASE2 | LOBMASK_BI; return x & -x; } function integerLogarithm(value, base) { if (base.compareTo(value) <= 0) { var tmp = integerLogarithm(value, base.square(base)); var p = tmp.p; var e = tmp.e; var t = p.multiply(base); return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p, e: e * 2 }; } return { p: bigInt2(1), e: 0 }; } BigInteger.prototype.bitLength = function() { var n = this; if (n.compareTo(bigInt2(0)) < 0) { n = n.negate().subtract(bigInt2(1)); } if (n.compareTo(bigInt2(0)) === 0) { return bigInt2(0); } return bigInt2(integerLogarithm(n, bigInt2(2)).e).add(bigInt2(1)); }; NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength; function max(a, b) { a = parseValue(a); b = parseValue(b); return a.greater(b) ? a : b; } function min(a, b) { a = parseValue(a); b = parseValue(b); return a.lesser(b) ? a : b; } function gcd(a, b) { a = parseValue(a).abs(); b = parseValue(b).abs(); if (a.equals(b)) return a; if (a.isZero()) return b; if (b.isZero()) return a; var c = Integer[1], d, t; while (a.isEven() && b.isEven()) { d = min(roughLOB(a), roughLOB(b)); a = a.divide(d); b = b.divide(d); c = c.multiply(d); } while (a.isEven()) { a = a.divide(roughLOB(a)); } do { while (b.isEven()) { b = b.divide(roughLOB(b)); } if (a.greater(b)) { t = b; b = a; a = t; } b = b.subtract(a); } while (!b.isZero()); return c.isUnit() ? a : a.multiply(c); } function lcm(a, b) { a = parseValue(a).abs(); b = parseValue(b).abs(); return a.divide(gcd(a, b)).multiply(b); } function randBetween(a, b, rng) { a = parseValue(a); b = parseValue(b); var usedRNG = rng || Math.random; var low = min(a, b), high = max(a, b); var range = high.subtract(low).add(1); if (range.isSmall) return low.add(Math.floor(usedRNG() * range)); var digits = toBase(range, BASE2).value; var result = [], restricted = true; for (var i2 = 0; i2 < digits.length; i2++) { var top = restricted ? digits[i2] + (i2 + 1 < digits.length ? digits[i2 + 1] / BASE2 : 0) : BASE2; var digit = truncate(usedRNG() * top); result.push(digit); if (digit < digits[i2]) restricted = false; } return low.add(Integer.fromArray(result, BASE2, false)); } var parseBase = function(text, base, alphabet, caseSensitive) { alphabet = alphabet || DEFAULT_ALPHABET; text = String(text); if (!caseSensitive) { text = text.toLowerCase(); alphabet = alphabet.toLowerCase(); } var length = text.length; var i2; var absBase = Math.abs(base); var alphabetValues = {}; for (i2 = 0; i2 < alphabet.length; i2++) { alphabetValues[alphabet[i2]] = i2; } for (i2 = 0; i2 < length; i2++) { var c = text[i2]; if (c === "-") continue; if (c in alphabetValues) { if (alphabetValues[c] >= absBase) { if (c === "1" && absBase === 1) continue; throw new Error(c + " is not a valid digit in base " + base + "."); } } } base = parseValue(base); var digits = []; var isNegative = text[0] === "-"; for (i2 = isNegative ? 1 : 0; i2 < text.length; i2++) { var c = text[i2]; if (c in alphabetValues) digits.push(parseValue(alphabetValues[c])); else if (c === "<") { var start = i2; do { i2++; } while (text[i2] !== ">" && i2 < text.length); digits.push(parseValue(text.slice(start + 1, i2))); } else throw new Error(c + " is not a valid character"); } return parseBaseFromArray(digits, base, isNegative); }; function parseBaseFromArray(digits, base, isNegative) { var val = Integer[0], pow = Integer[1], i2; for (i2 = digits.length - 1; i2 >= 0; i2--) { val = val.add(digits[i2].times(pow)); pow = pow.times(base); } return isNegative ? val.negate() : val; } function stringify(digit, alphabet) { alphabet = alphabet || DEFAULT_ALPHABET; if (digit < alphabet.length) { return alphabet[digit]; } return "<" + digit + ">"; } function toBase(n, base) { base = bigInt2(base); if (base.isZero()) { if (n.isZero()) return { value: [0], isNegative: false }; throw new Error("Cannot convert nonzero numbers to base 0."); } if (base.equals(-1)) { if (n.isZero()) return { value: [0], isNegative: false }; if (n.isNegative()) return { value: [].concat.apply( [], Array.apply(null, Array(-n.toJSNumber())).map(Array.prototype.valueOf, [1, 0]) ), isNegative: false }; var arr = Array.apply(null, Array(n.toJSNumber() - 1)).map(Array.prototype.valueOf, [0, 1]); arr.unshift([1]); return { value: [].concat.apply([], arr), isNegative: false }; } var neg = false; if (n.isNegative() && base.isPositive()) { neg = true; n = n.abs(); } if (base.isUnit()) { if (n.isZero()) return { value: [0], isNegative: false }; return { value: Array.apply(null, Array(n.toJSNumber())).map(Number.prototype.valueOf, 1), isNegative: neg }; } var out = []; var left = n, divmod; while (left.isNegative() || left.compareAbs(base) >= 0) { divmod = left.divmod(base); left = divmod.quotient; var digit = divmod.remainder; if (digit.isNegative()) { digit = base.minus(digit).abs(); left = left.next(); } out.push(digit.toJSNumber()); } out.push(left.toJSNumber()); return { value: out.reverse(), isNegative: neg }; } function toBaseString(n, base, alphabet) { var arr = toBase(n, base); return (arr.isNegative ? "-" : "") + arr.value.map(function(x) { return stringify(x, alphabet); }).join(""); } BigInteger.prototype.toArray = function(radix) { return toBase(this, radix); }; SmallInteger.prototype.toArray = function(radix) { return toBase(this, radix); }; NativeBigInt.prototype.toArray = function(radix) { return toBase(this, radix); }; BigInteger.prototype.toString = function(radix, alphabet) { if (radix === undefined2) radix = 10; if (radix !== 10 || alphabet) return toBaseString(this, radix, alphabet); var v = this.value, l = v.length, str = String(v[--l]), zeros = "0000000", digit; while (--l >= 0) { digit = String(v[l]); str += zeros.slice(digit.length) + digit; } var sign = this.sign ? "-" : ""; return sign + str; }; SmallInteger.prototype.toString = function(radix, alphabet) { if (radix === undefined2) radix = 10; if (radix != 10 || alphabet) return toBaseString(this, radix, alphabet); return String(this.value); }; NativeBigInt.prototype.toString = SmallInteger.prototype.toString; NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function() { return this.toString(); }; BigInteger.prototype.valueOf = function() { return parseInt(this.toString(), 10); }; BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf; SmallInteger.prototype.valueOf = function() { return this.value; }; SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf; NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function() { return parseInt(this.toString(), 10); }; function parseStringValue(v) { if (isPrecise(+v)) { var x = +v; if (x === truncate(x)) return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x); throw new Error("Invalid integer: " + v); } var sign = v[0] === "-"; if (sign) v = v.slice(1); var split = v.split(/e/i); if (split.length > 2) throw new Error("Invalid integer: " + split.join("e")); if (split.length === 2) { var exp = split[1]; if (exp[0] === "+") exp = exp.slice(1); exp = +exp; if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error("Invalid integer: " + exp + " is not a valid exponent."); var text = split[0]; var decimalPlace = text.indexOf("."); if (decimalPlace >= 0) { exp -= text.length - decimalPlace - 1; text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1); } if (exp < 0) throw new Error("Cannot include negative exponent part for integers"); text += new Array(exp + 1).join("0"); v = text; } var isValid = /^([0-9][0-9]*)$/.test(v); if (!isValid) throw new Error("Invalid integer: " + v); if (supportsNativeBigInt) { return new NativeBigInt(BigInt(sign ? "-" + v : v)); } var r = [], max2 = v.length, l = LOG_BASE, min2 = max2 - l; while (max2 > 0) { r.push(+v.slice(min2, max2)); min2 -= l; if (min2 < 0) min2 = 0; max2 -= l; } trim(r); return new BigInteger(r, sign); } function parseNumberValue(v) { if (supportsNativeBigInt) { return new NativeBigInt(BigInt(v)); } if (isPrecise(v)) { if (v !== truncate(v)) throw new Error(v + " is not an integer."); return new SmallInteger(v); } return parseStringValue(v.toString()); } function parseValue(v) { if (typeof v === "number") { return parseNumberValue(v); } if (typeof v === "string") { return parseStringValue(v); } if (typeof v === "bigint") { return new NativeBigInt(v); } return v; } for (var i = 0; i < 1e3; i++) { Integer[i] = parseValue(i); if (i > 0) Integer[-i] = parseValue(-i); } Integer.one = Integer[1]; Integer.zero = Integer[0]; Integer.minusOne = Integer[-1]; Integer.max = max; Integer.min = min; Integer.gcd = gcd; Integer.lcm = lcm; Integer.isInstance = function(x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; }; Integer.randBetween = randBetween; Integer.fromArray = function(digits, base, isNegative) { return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative); }; return Integer; })(); if (typeof module2 !== "undefined" && module2.hasOwnProperty("exports")) { module2.exports = bigInt2; } if (typeof define === "function" && define.amd) { define(function() { return bigInt2; }); } } }); // node_modules/telegram/CryptoFile.js var require_CryptoFile = __commonJS({ "node_modules/telegram/CryptoFile.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); var crypto4 = __importStar2(require("crypto")); exports2.default = crypto4; } }); // node_modules/telegram/platform.js var require_platform = __commonJS({ "node_modules/telegram/platform.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isNode = exports2.isBrowser = exports2.isDeno = void 0; exports2.isDeno = "Deno" in globalThis; exports2.isBrowser = !exports2.isDeno && typeof window !== "undefined"; exports2.isNode = !exports2.isBrowser; } }); // node_modules/telegram/Helpers.js var require_Helpers = __commonJS({ "node_modules/telegram/Helpers.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod2) { return mod2 && mod2.__esModule ? mod2 : { "default": mod2 }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2._EntityType = exports2.TotalList = exports2.sleep = exports2.isArrayLike = void 0; exports2.readBigIntFromBuffer = readBigIntFromBuffer; exports2.generateRandomBigInt = generateRandomBigInt; exports2.escapeRegex = escapeRegex2; exports2.groupBy = groupBy; exports2.betterConsoleLog = betterConsoleLog; exports2.toSignedLittleBuffer = toSignedLittleBuffer; exports2.readBufferFromBigInt = readBufferFromBigInt; exports2.generateRandomLong = generateRandomLong; exports2.mod = mod; exports2.bigIntMod = bigIntMod; exports2.generateRandomBytes = generateRandomBytes; exports2.stripText = stripText; exports2.generateKeyDataFromNonce = generateKeyDataFromNonce; exports2.convertToLittle = convertToLittle; exports2.sha1 = sha1; exports2.sha256 = sha256; exports2.modExp = modExp; exports2.getByteArray = getByteArray; exports2.returnBigInt = returnBigInt; exports2.getMinBigInt = getMinBigInt; exports2.getRandomInt = getRandomInt; exports2.bufferXor = bufferXor; exports2.crc32 = crc32; exports2._entityType = _entityType; var big_integer_1 = __importDefault2(require_BigInteger()); var CryptoFile_1 = __importDefault2(require_CryptoFile()); var platform_1 = require_platform(); function readBigIntFromBuffer(buffer, little = true, signed = false) { let randBuffer = Buffer.from(buffer); const bytesNumber = randBuffer.length; if (little) { randBuffer = randBuffer.reverse(); } let bigIntVar = (0, big_integer_1.default)(randBuffer.toString("hex"), 16); if (signed && Math.floor(bigIntVar.toString(2).length / 8) >= bytesNumber) { bigIntVar = bigIntVar.subtract((0, big_integer_1.default)(2).pow((0, big_integer_1.default)(bytesNumber * 8))); } return bigIntVar; } function generateRandomBigInt() { return readBigIntFromBuffer(generateRandomBytes(8), false); } function escapeRegex2(string) { return string.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); } function groupBy(list, keyGetter) { const map = /* @__PURE__ */ new Map(); list.forEach((item) => { const key = keyGetter(item); const collection = map.get(key); if (!collection) { map.set(key, [item]); } else { collection.push(item); } }); return map; } function betterConsoleLog(object) { const toPrint = {}; for (const key in object) { if (object.hasOwnProperty(key)) { if (!key.startsWith("_") && key != "originalArgs") { toPrint[key] = object[key]; } } } return toPrint; } var isArrayLike = (x) => x && typeof x.length === "number" && typeof x !== "function" && typeof x !== "string"; exports2.isArrayLike = isArrayLike; function toSignedLittleBuffer(big, number = 8) { const bigNumber = returnBigInt(big); const byteArray = []; for (let i = 0; i < number; i++) { byteArray[i] = bigNumber.shiftRight(8 * i).and(255); } return Buffer.from(byteArray); } function readBufferFromBigInt(bigIntVar, bytesNumber, little = true, signed = false) { bigIntVar = (0, big_integer_1.default)(bigIntVar); const bitLength = bigIntVar.bitLength().toJSNumber(); const bytes = Math.ceil(bitLength / 8); if (bytesNumber < bytes) { throw new Error("OverflowError: int too big to convert"); } if (!signed && bigIntVar.lesser((0, big_integer_1.default)(0))) { throw new Error("Cannot convert to unsigned"); } if (signed && bigIntVar.lesser((0, big_integer_1.default)(0))) { bigIntVar = (0, big_integer_1.default)(2).pow((0, big_integer_1.default)(bytesNumber).multiply(8)).add(bigIntVar); } const hex = bigIntVar.toString(16).padStart(bytesNumber * 2, "0"); let buffer = Buffer.from(hex, "hex"); if (little) { buffer = buffer.reverse(); } return buffer; } function generateRandomLong(signed = true) { return readBigIntFromBuffer(generateRandomBytes(8), true, signed); } function mod(n, m) { return (n % m + m) % m; } function bigIntMod(n, m) { return n.remainder(m).add(m).remainder(m); } function generateRandomBytes(count) { return Buffer.from(CryptoFile_1.default.randomBytes(count)); } function stripText(text, entities2) { if (!entities2 || !entities2.length) { return text.trim(); } while (text && text[text.length - 1].trim() === "") { const e = entities2[entities2.length - 1]; if (e.offset + e.length == text.length) { if (e.length == 1) { entities2.pop(); if (!entities2.length) { return text.trim(); } } else { e.length -= 1; } } text = text.slice(0, -1); } while (text && text[0].trim() === "") { for (let i = 0; i < entities2.length; i++) { const e = entities2[i]; if (e.offset != 0) { e.offset--; continue; } if (e.length == 1) { entities2.shift(); if (!entities2.length) { return text.trimLeft(); } } else { e.length -= 1; } } text = text.slice(1); } return text; } async function generateKeyDataFromNonce(serverNonceBigInt, newNonceBigInt) { const serverNonce = toSignedLittleBuffer(serverNonceBigInt, 16); const newNonce = toSignedLittleBuffer(newNonceBigInt, 32); const [hash1, hash2, hash3] = await Promise.all([ sha1(Buffer.concat([newNonce, serverNonce])), sha1(Buffer.concat([serverNonce, newNonce])), sha1(Buffer.concat([newNonce, newNonce])) ]); const keyBuffer = Buffer.concat([hash1, hash2.slice(0, 12)]); const ivBuffer = Buffer.concat([ hash2.slice(12, 20), hash3, newNonce.slice(0, 4) ]); return { key: keyBuffer, iv: ivBuffer }; } function convertToLittle(buf) { const correct = Buffer.alloc(buf.length * 4); for (let i = 0; i < buf.length; i++) { correct.writeUInt32BE(buf[i], i * 4); } return correct; } function sha1(data) { const shaSum = CryptoFile_1.default.createHash("sha1"); shaSum.update(data); return shaSum.digest(); } function sha256(data) { const shaSum = CryptoFile_1.default.createHash("sha256"); shaSum.update(data); return shaSum.digest(); } function modExp(a, b, n) { a = a.remainder(n); let result = big_integer_1.default.one; let x = a; while (b.greater(big_integer_1.default.zero)) { const leastSignificantBit = b.remainder((0, big_integer_1.default)(2)); b = b.divide((0, big_integer_1.default)(2)); if (leastSignificantBit.eq(big_integer_1.default.one)) { result = result.multiply(x); result = result.remainder(n); } x = x.multiply(x); x = x.remainder(n); } return result; } function getByteArray(integer, signed = false) { const bits = integer.toString(2).length; const byteLength = Math.floor((bits + 8 - 1) / 8); return readBufferFromBigInt(typeof integer == "number" ? (0, big_integer_1.default)(integer) : integer, byteLength, false, signed); } function returnBigInt(num) { if (big_integer_1.default.isInstance(num)) { return num; } if (typeof num == "number") { return (0, big_integer_1.default)(num); } if (typeof num == "bigint") { return (0, big_integer_1.default)(num); } return (0, big_integer_1.default)(num); } function getMinBigInt(arrayOfBigInts) { if (arrayOfBigInts.length == 0) { return big_integer_1.default.zero; } if (arrayOfBigInts.length == 1) { return returnBigInt(arrayOfBigInts[0]); } let smallest = returnBigInt(arrayOfBigInts[0]); for (let i = 1; i < arrayOfBigInts.length; i++) { if (returnBigInt(arrayOfBigInts[i]).lesser(smallest)) { smallest = returnBigInt(arrayOfBigInts[i]); } } return smallest; } function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; } var sleep4 = (ms, isUnref = false) => new Promise((resolve) => isUnref && platform_1.isNode ? setTimeout(resolve, ms).unref() : setTimeout(resolve, ms)); exports2.sleep = sleep4; function bufferXor(a, b) { const res = []; for (let i = 0; i < a.length; i++) { res.push(a[i] ^ b[i]); } return Buffer.from(res); } function makeCRCTable() { let c; const crcTable2 = []; for (let n = 0; n < 256; n++) { c = n; for (let k = 0; k < 8; k++) { c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1; } crcTable2[n] = c; } return crcTable2; } var crcTable = void 0; function crc32(buf) { if (!crcTable) { crcTable = makeCRCTable(); } if (!Buffer.isBuffer(buf)) { buf = Buffer.from(buf); } let crc = -1; for (let index2 = 0; index2 < buf.length; index2++) { const byte = buf[index2]; crc = crcTable[(crc ^ byte) & 255] ^ crc >>> 8; } return (crc ^ -1) >>> 0; } var TotalList = class extends Array { constructor() { super(); this.total = 0; } }; exports2.TotalList = TotalList; exports2._EntityType = { USER: 0, CHAT: 1, CHANNEL: 2 }; Object.freeze(exports2._EntityType); function _entityType(entity) { if (typeof entity !== "object" || !("SUBCLASS_OF_ID" in entity)) { throw new Error(`${entity} is not a TLObject, cannot determine entity type`); } if (![ 47470215, // crc32('Peer') 3374092470, // crc32('InputPeer') 3865689926, // crc32('InputUser') 1089602301, // crc32('InputChannel') 765557111, // crc32('User') 3316604308, // crc32('Chat') 524706233, // crc32('UserFull') 3566872215 // crc32('ChatFull') ].includes(entity.SUBCLASS_OF_ID)) { throw new Error(`${entity} does not have any entity type`); } const name = entity.className; if (name.includes("User")) { return exports2._EntityType.USER; } else if (name.includes("Chat")) { return exports2._EntityType.CHAT; } else if (name.includes("Channel")) { return exports2._EntityType.CHANNEL; } else if (name.includes("Self")) { return exports2._EntityType.USER; } throw new Error(`${entity} does not have any entity type`); } } }); // node_modules/telegram/tl/apiTl.js var require_apiTl = __commonJS({ "node_modules/telegram/tl/apiTl.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = `boolFalse#bc799737 = Bool; boolTrue#997275b5 = Bool; true#3fedd339 = True; vector#1cb5c415 {t:Type} # [ t ] = Vector t; error#c4b9f9bb code:int text:string = Error; null#56730bcc = Null; inputPeerEmpty#7f3b18ea = InputPeer; inputPeerSelf#7da07ec9 = InputPeer; inputPeerChat#35a95cb9 chat_id:long = InputPeer; inputPeerUser#dde8a54c user_id:long access_hash:long = InputPeer; inputPeerChannel#27bcbbfc channel_id:long access_hash:long = InputPeer; inputPeerUserFromMessage#a87b0a1c peer:InputPeer msg_id:int user_id:long = InputPeer; inputPeerChannelFromMessage#bd2a0840 peer:InputPeer msg_id:int channel_id:long = InputPeer; inputUserEmpty#b98886cf = InputUser; inputUserSelf#f7c1b13f = InputUser; inputUser#f21158c6 user_id:long access_hash:long = InputUser; inputUserFromMessage#1da448e2 peer:InputPeer msg_id:int user_id:long = InputUser; inputPhoneContact#f392b7f4 client_id:long phone:string first_name:string last_name:string = InputContact; inputFile#f52ff27f id:long parts:int name:string md5_checksum:string = InputFile; inputFileBig#fa4f0bb5 id:long parts:int name:string = InputFile; inputFileStoryDocument#62dc8b48 id:InputDocument = InputFile; inputMediaEmpty#9664f57f = InputMedia; inputMediaUploadedPhoto#1e287d04 flags:# spoiler:flags.2?true file:InputFile stickers:flags.0?Vector<InputDocument> ttl_seconds:flags.1?int = InputMedia; inputMediaPhoto#b3ba0635 flags:# spoiler:flags.1?true id:InputPhoto ttl_seconds:flags.0?int = InputMedia; inputMediaGeoPoint#f9c44144 geo_point:InputGeoPoint = InputMedia; inputMediaContact#f8ab7dfb phone_number:string first_name:string last_name:string vcard:string = InputMedia; inputMediaUploadedDocument#37c9330 flags:# nosound_video:flags.3?true force_file:flags.4?true spoiler:flags.5?true file:InputFile thumb:flags.2?InputFile mime_type:string attributes:Vector<DocumentAttribute> stickers:flags.0?Vector<InputDocument> video_cover:flags.6?InputPhoto video_timestamp:flags.7?int ttl_seconds:flags.1?int = InputMedia; inputMediaDocument#a8763ab5 flags:# spoiler:flags.2?true id:InputDocument video_cover:flags.3?InputPhoto video_timestamp:flags.4?int ttl_seconds:flags.0?int query:flags.1?string = InputMedia; inputMediaVenue#c13d1c11 geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string = InputMedia; inputMediaPhotoExternal#e5bbfe1a flags:# spoiler:flags.1?true url:string ttl_seconds:flags.0?int = InputMedia; inputMediaDocumentExternal#779600f9 flags:# spoiler:flags.1?true url:string ttl_seconds:flags.0?int video_cover:flags.2?InputPhoto video_timestamp:flags.3?int = InputMedia; inputMediaGame#d33f43f3 id:InputGame = InputMedia; inputMediaInvoice#405fef0d flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:flags.3?string provider_data:DataJSON start_param:flags.1?string extended_media:flags.2?InputMedia = InputMedia; inputMediaGeoLive#971fa843 flags:# stopped:flags.0?true geo_point:InputGeoPoint heading:flags.2?int period:flags.1?int proximity_notification_radius:flags.3?int = InputMedia; inputMediaPoll#f94e5f1 flags:# poll:Poll correct_answers:flags.0?Vector<bytes> solution:flags.1?string solution_entities:flags.1?Vector<MessageEntity> = InputMedia; inputMediaDice#e66fbf7b emoticon:string = InputMedia; inputMediaStory#89fdd778 peer:InputPeer id:int = InputMedia; inputMediaWebPage#c21b8849 flags:# force_large_media:flags.0?true force_small_media:flags.1?true optional:flags.2?true url:string = InputMedia; inputMediaPaidMedia#c4103386 flags:# stars_amount:long extended_media:Vector<InputMedia> payload:flags.0?string = InputMedia; inputChatPhotoEmpty#1ca48f57 = InputChatPhoto; inputChatUploadedPhoto#bdcdaec0 flags:# file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double video_emoji_markup:flags.3?VideoSize = InputChatPhoto; inputChatPhoto#8953ad37 id:InputPhoto = InputChatPhoto; inputGeoPointEmpty#e4c123d6 = InputGeoPoint; inputGeoPoint#48222faf flags:# lat:double long:double accuracy_radius:flags.0?int = InputGeoPoint; inputPhotoEmpty#1cd7bf0d = InputPhoto; inputPhoto#3bb3b94a id:long access_hash:long file_reference:bytes = InputPhoto; inputFileLocation#dfdaabe1 volume_id:long local_id:int secret:long file_reference:bytes = InputFileLocation; inputEncryptedFileLocation#f5235d55 id:long access_hash:long = InputFileLocation; inputDocumentFileLocation#bad07584 id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation; inputSecureFileLocation#cbc7ee28 id:long access_hash:long = InputFileLocation; inputTakeoutFileLocation#29be5899 = InputFileLocation; inputPhotoFileLocation#40181ffe id:long access_hash:long file_reference:bytes thumb_size:string = InputFileLocation; inputPhotoLegacyFileLocation#d83466f3 id:long access_hash:long file_reference:bytes volume_id:long local_id:int secret:long = InputFileLocation; inputPeerPhotoFileLocation#37257e99 flags:# big:flags.0?true peer:InputPeer photo_id:long = InputFileLocation; inputStickerSetThumb#9d84f3db stickerset:InputStickerSet thumb_version:int = InputFileLocation; inputGroupCallStream#598a92a flags:# call:InputGroupCall time_ms:long scale:int video_channel:flags.0?int video_quality:flags.0?int = InputFileLocation; peerUser#59511722 user_id:long = Peer; peerChat#36c6019a chat_id:long = Peer; peerChannel#a2a5371e channel_id:long = Peer; storage.fileUnknown#aa963b05 = storage.FileType; storage.filePartial#40bc6f52 = storage.FileType; storage.fileJpeg#7efe0e = storage.FileType; storage.fileGif#cae1aadf = storage.FileType; storage.filePng#a4f63c0 = storage.FileType; storage.filePdf#ae1e508d = storage.FileType; storage.fileMp3#528a0677 = storage.FileType; storage.fileMov#4b09ebbc = storage.FileType; storage.fileMp4#b3cea0e4 = storage.FileType; storage.fileWebp#1081464c = storage.FileType; userEmpty#d3bc4b7a id:long = User; user#4b46c37e flags:# self:flags.10?true contact:flags.11?true mutual_contact:flags.12?true deleted:flags.13?true bot:flags.14?true bot_chat_history:flags.15?true bot_nochats:flags.16?true verified:flags.17?true restricted:flags.18?true min:flags.20?true bot_inline_geo:flags.21?true support:flags.23?true scam:flags.24?true apply_min_photo:flags.25?true fake:flags.26?true bot_attach_menu:flags.27?true premium:flags.28?true attach_menu_enabled:flags.29?true flags2:# bot_can_edit:flags2.1?true close_friend:flags2.2?true stories_hidden:flags2.3?true stories_unavailable:flags2.4?true contact_require_premium:flags2.10?true bot_business:flags2.11?true bot_has_main_app:flags2.13?true id:long access_hash:flags.0?long first_name:flags.1?string last_name:flags.2?string username:flags.3?string phone:flags.4?string photo:flags.5?UserProfilePhoto status:flags.6?UserStatus bot_info_version:flags.14?int restriction_reason:flags.18?Vector<RestrictionReason> bot_inline_placeholder:flags.19?string lang_code:flags.22?string emoji_status:flags.30?EmojiStatus usernames:flags2.0?Vector<Username> stories_max_id:flags2.5?int color:flags2.8?PeerColor profile_color:flags2.9?PeerColor bot_active_users:flags2.12?int bot_verification_icon:flags2.14?long = User; userProfilePhotoEmpty#4f11bae1 = UserProfilePhoto; userProfilePhoto#82d1f706 flags:# has_video:flags.0?true personal:flags.2?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = UserProfilePhoto; userStatusEmpty#9d05049 = UserStatus; userStatusOnline#edb93949 expires:int = UserStatus; userStatusOffline#8c703f was_online:int = UserStatus; userStatusRecently#7b197dc8 flags:# by_me:flags.0?true = UserStatus; userStatusLastWeek#541a1d1a flags:# by_me:flags.0?true = UserStatus; userStatusLastMonth#65899777 flags:# by_me:flags.0?true = UserStatus; chatEmpty#29562865 id:long = Chat; chat#41cbf256 flags:# creator:flags.0?true left:flags.2?true deactivated:flags.5?true call_active:flags.23?true call_not_empty:flags.24?true noforwards:flags.25?true id:long title:string photo:ChatPhoto participants_count:int date:int version:int migrated_to:flags.6?InputChannel admin_rights:flags.14?ChatAdminRights default_banned_rights:flags.18?ChatBannedRights = Chat; chatForbidden#6592a1a7 id:long title:string = Chat; channel#e00998b7 flags:# creator:flags.0?true left:flags.2?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true restricted:flags.9?true signatures:flags.11?true min:flags.12?true scam:flags.19?true has_link:flags.20?true has_geo:flags.21?true slowmode_enabled:flags.22?true call_active:flags.23?true call_not_empty:flags.24?true fake:flags.25?true gigagroup:flags.26?true noforwards:flags.27?true join_to_send:flags.28?true join_request:flags.29?true forum:flags.30?true flags2:# stories_hidden:flags2.1?true stories_hidden_min:flags2.2?true stories_unavailable:flags2.3?true signature_profiles:flags2.12?true id:long access_hash:flags.13?long title:string username:flags.6?string photo:ChatPhoto date:int restriction_reason:flags.9?Vector<RestrictionReason> admin_rights:flags.14?ChatAdminRights banned_rights:flags.15?ChatBannedRights default_banned_rights:flags.18?ChatBannedRights participants_count:flags.17?int usernames:flags2.0?Vector<Username> stories_max_id:flags2.4?int color:flags2.7?PeerColor profile_color:flags2.8?PeerColor emoji_status:flags2.9?EmojiStatus level:flags2.10?int subscription_until_date:flags2.11?int bot_verification_icon:flags2.13?long = Chat; channelForbidden#17d493d5 flags:# broadcast:flags.5?true megagroup:flags.8?true id:long access_hash:long title:string until_date:flags.16?int = Chat; chatFull#2633421b flags:# can_set_username:flags.7?true has_scheduled:flags.8?true translations_disabled:flags.19?true id:long about:string participants:ChatParticipants chat_photo:flags.2?Photo notify_settings:PeerNotifySettings exported_invite:flags.13?ExportedChatInvite bot_info:flags.3?Vector<BotInfo> pinned_msg_id:flags.6?int folder_id:flags.11?int call:flags.12?InputGroupCall ttl_period:flags.14?int groupcall_default_join_as:flags.15?Peer theme_emoticon:flags.16?string requests_pending:flags.17?int recent_requesters:flags.17?Vector<long> available_reactions:flags.18?ChatReactions reactions_limit:flags.20?int = ChatFull; channelFull#52d6806b flags:# can_view_participants:flags.3?true can_set_username:flags.6?true can_set_stickers:flags.7?true hidden_prehistory:flags.10?true can_set_location:flags.16?true has_scheduled:flags.19?true can_view_stats:flags.20?true blocked:flags.22?true flags2:# can_delete_channel:flags2.0?true antispam:flags2.1?true participants_hidden:flags2.2?true translations_disabled:flags2.3?true stories_pinned_available:flags2.5?true view_forum_as_messages:flags2.6?true restricted_sponsored:flags2.11?true can_view_revenue:flags2.12?true paid_media_allowed:flags2.14?true can_view_stars_revenue:flags2.15?true paid_reactions_available:flags2.16?true stargifts_available:flags2.19?true id:long about:string participants_count:flags.0?int admins_count:flags.1?int kicked_count:flags.2?int banned_count:flags.2?int online_count:flags.13?int read_inbox_max_id:int read_outbox_max_id:int unread_count:int chat_photo:Photo notify_settings:PeerNotifySettings exported_invite:flags.23?ExportedChatInvite bot_info:Vector<BotInfo> migrated_from_chat_id:flags.4?long migrated_from_max_id:flags.4?int pinned_msg_id:flags.5?int stickerset:flags.8?StickerSet available_min_id:flags.9?int folder_id:flags.11?int linked_chat_id:flags.14?long location:flags.15?ChannelLocation slowmode_seconds:flags.17?int slowmode_next_send_date:flags.18?int stats_dc:flags.12?int pts:int call:flags.21?InputGroupCall ttl_period:flags.24?int pending_suggestions:flags.25?Vector<string> groupcall_default_join_as:flags.26?Peer theme_emoticon:flags.27?string requests_pending:flags.28?int recent_requesters:flags.28?Vector<long> default_send_as:flags.29?Peer available_reactions:flags.30?ChatReactions reactions_limit:flags2.13?int stories:flags2.4?PeerStories wallpaper:flags2.7?WallPaper boosts_applied:flags2.8?int boosts_unrestrict:flags2.9?int emojiset:flags2.10?StickerSet bot_verification:flags2.17?BotVerification stargifts_count:flags2.18?int = ChatFull; chatParticipant#c02d4007 user_id:long inviter_id:long date:int = ChatParticipant; chatParticipantCreator#e46bcee4 user_id:long = ChatParticipant; chatParticipantAdmin#a0933f5b user_id:long inviter_id:long date:int = ChatParticipant; chatParticipantsForbidden#8763d3e1 flags:# chat_id:long self_participant:flags.0?ChatParticipant = ChatParticipants; chatParticipants#3cbc93f8 chat_id:long participants:Vector<ChatParticipant> version:int = ChatParticipants; chatPhotoEmpty#37c1011c = ChatPhoto; chatPhoto#1c6e1c11 flags:# has_video:flags.0?true photo_id:long stripped_thumb:flags.1?bytes dc_id:int = ChatPhoto; messageEmpty#90a6ca84 flags:# id:int peer_id:flags.0?Peer = Message; message#96fdbbe9 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true post:flags.14?true from_scheduled:flags.18?true legacy:flags.19?true edit_hide:flags.21?true pinned:flags.24?true noforwards:flags.26?true invert_media:flags.27?true flags2:# offline:flags2.1?true video_processing_pending:flags2.4?true id:int from_id:flags.8?Peer from_boosts_applied:flags.29?int peer_id:Peer saved_peer_id:flags.28?Peer fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long via_business_bot_id:flags2.0?long reply_to:flags.3?MessageReplyHeader date:int message:string media:flags.9?MessageMedia reply_markup:flags.6?ReplyMarkup entities:flags.7?Vector<MessageEntity> views:flags.10?int forwards:flags.10?int replies:flags.23?MessageReplies edit_date:flags.15?int post_author:flags.16?string grouped_id:flags.17?long reactions:flags.20?MessageReactions restriction_reason:flags.22?Vector<RestrictionReason> ttl_period:flags.25?int quick_reply_shortcut_id:flags.30?int effect:flags2.2?long factcheck:flags2.3?FactCheck report_delivery_until_date:flags2.5?int = Message; messageService#d3d28540 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true reactions_are_possible:flags.9?true silent:flags.13?true post:flags.14?true legacy:flags.19?true id:int from_id:flags.8?Peer peer_id:Peer reply_to:flags.3?MessageReplyHeader date:int action:MessageAction reactions:flags.20?MessageReactions ttl_period:flags.25?int = Message; messageMediaEmpty#3ded6320 = MessageMedia; messageMediaPhoto#695150d7 flags:# spoiler:flags.3?true photo:flags.0?Photo ttl_seconds:flags.2?int = MessageMedia; messageMediaGeo#56e0d474 geo:GeoPoint = MessageMedia; messageMediaContact#70322949 phone_number:string first_name:string last_name:string vcard:string user_id:long = MessageMedia; messageMediaUnsupported#9f84f49e = MessageMedia; messageMediaDocument#52d8ccd9 flags:# nopremium:flags.3?true spoiler:flags.4?true video:flags.6?true round:flags.7?true voice:flags.8?true document:flags.0?Document alt_documents:flags.5?Vector<Document> video_cover:flags.9?Photo video_timestamp:flags.10?int ttl_seconds:flags.2?int = MessageMedia; messageMediaWebPage#ddf10c3b flags:# force_large_media:flags.0?true force_small_media:flags.1?true manual:flags.3?true safe:flags.4?true webpage:WebPage = MessageMedia; messageMediaVenue#2ec0533f geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MessageMedia; messageMediaGame#fdb19008 game:Game = MessageMedia; messageMediaInvoice#f6a548d3 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument receipt_msg_id:flags.2?int currency:string total_amount:long start_param:string extended_media:flags.4?MessageExtendedMedia = MessageMedia; messageMediaGeoLive#b940c666 flags:# geo:GeoPoint heading:flags.0?int period:int proximity_notification_radius:flags.1?int = MessageMedia; messageMediaPoll#4bd6e798 poll:Poll results:PollResults = MessageMedia; messageMediaDice#3f7ee58b value:int emoticon:string = MessageMedia; messageMediaStory#68cb6283 flags:# via_mention:flags.1?true peer:Peer id:int story:flags.0?StoryItem = MessageMedia; messageMediaGiveaway#aa073beb flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.2?true channels:Vector<long> countries_iso2:flags.1?Vector<string> prize_description:flags.3?string quantity:int months:flags.4?int stars:flags.5?long until_date:int = MessageMedia; messageMediaGiveawayResults#ceaa3ea1 flags:# only_new_subscribers:flags.0?true refunded:flags.2?true channel_id:long additional_peers_count:flags.3?int launch_msg_id:int winners_count:int unclaimed_count:int winners:Vector<long> months:flags.4?int stars:flags.5?long prize_description:flags.1?string until_date:int = MessageMedia; messageMediaPaidMedia#a8852491 stars_amount:long extended_media:Vector<MessageExtendedMedia> = MessageMedia; messageActionEmpty#b6aef7b0 = MessageAction; messageActionChatCreate#bd47cbad title:string users:Vector<long> = MessageAction; messageActionChatEditTitle#b5a1ce5a title:string = MessageAction; messageActionChatEditPhoto#7fcb13a8 photo:Photo = MessageAction; messageActionChatDeletePhoto#95e3fbef = MessageAction; messageActionChatAddUser#15cefd00 users:Vector<long> = MessageAction; messageActionChatDeleteUser#a43f30cc user_id:long = MessageAction; messageActionChatJoinedByLink#31224c3 inviter_id:long = MessageAction; messageActionChannelCreate#95d2ac92 title:string = MessageAction; messageActionChatMigrateTo#e1037f92 channel_id:long = MessageAction; messageActionChannelMigrateFrom#ea3948e9 title:string chat_id:long = MessageAction; messageActionPinMessage#94bd38ed = MessageAction; messageActionHistoryClear#9fbab604 = MessageAction; messageActionGameScore#92a72876 game_id:long score:int = MessageAction; messageActionPaymentSentMe#ffa00ccc flags:# recurring_init:flags.2?true recurring_used:flags.3?true currency:string total_amount:long payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string charge:PaymentCharge subscription_until_date:flags.4?int = MessageAction; messageActionPaymentSent#c624b16e flags:# recurring_init:flags.2?true recurring_used:flags.3?true currency:string total_amount:long invoice_slug:flags.0?string subscription_until_date:flags.4?int = MessageAction; messageActionPhoneCall#80e11a7f flags:# video:flags.2?true call_id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int = MessageAction; messageActionScreenshotTaken#4792929b = MessageAction; messageActionCustomAction#fae69f56 message:string = MessageAction; messageActionBotAllowed#c516d679 flags:# attach_menu:flags.1?true from_request:flags.3?true domain:flags.0?string app:flags.2?BotApp = MessageAction; messageActionSecureValuesSentMe#1b287353 values:Vector<SecureValue> credentials:SecureCredentialsEncrypted = MessageAction; messageActionSecureValuesSent#d95c6154 types:Vector<SecureValueType> = MessageAction; messageActionContactSignUp#f3f25f76 = MessageAction; messageActionGeoProximityReached#98e0d697 from_id:Peer to_id:Peer distance:int = MessageAction; messageActionGroupCall#7a0d7f42 flags:# call:InputGroupCall duration:flags.0?int = MessageAction; messageActionInviteToGroupCall#502f92f7 call:InputGroupCall users:Vector<long> = MessageAction; messageActionSetMessagesTTL#3c134d7b flags:# period:int auto_setting_from:flags.0?long = MessageAction; messageActionGroupCallScheduled#b3a07661 call:InputGroupCall schedule_date:int = MessageAction; messageActionSetChatTheme#aa786345 emoticon:string = MessageAction; messageActionChatJoinedByRequest#ebbca3cb = MessageAction; messageActionWebViewDataSentMe#47dd8079 text:string data:string = MessageAction; messageActionWebViewDataSent#b4c38cb5 text:string = MessageAction; messageActionGiftPremium#6c6274fa flags:# currency:string amount:long months:int crypto_currency:flags.0?string crypto_amount:flags.0?long message:flags.1?TextWithEntities = MessageAction; messageActionTopicCreate#d999256 flags:# title:string icon_color:int icon_emoji_id:flags.0?long = MessageAction; messageActionTopicEdit#c0944820 flags:# title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = MessageAction; messageActionSuggestProfilePhoto#57de635e photo:Photo = MessageAction; messageActionRequestedPeer#31518e9b button_id:int peers:Vector<Peer> = MessageAction; messageActionSetChatWallPaper#5060a3f4 flags:# same:flags.0?true for_both:flags.1?true wallpaper:WallPaper = MessageAction; messageActionGiftCode#56d03994 flags:# via_giveaway:flags.0?true unclaimed:flags.2?true boost_peer:flags.1?Peer months:int slug:string currency:flags.2?string amount:flags.2?long crypto_currency:flags.3?string crypto_amount:flags.3?long message:flags.4?TextWithEntities = MessageAction; messageActionGiveawayLaunch#a80f51e4 flags:# stars:flags.0?long = MessageAction; messageActionGiveawayResults#87e2f155 flags:# stars:flags.0?true winners_count:int unclaimed_count:int = MessageAction; messageActionBoostApply#cc02aa6d boosts:int = MessageAction; messageActionRequestedPeerSentMe#93b31848 button_id:int peers:Vector<RequestedPeer> = MessageAction; messageActionPaymentRefunded#41b3e202 flags:# peer:Peer currency:string total_amount:long payload:flags.0?bytes charge:PaymentCharge = MessageAction; messageActionGiftStars#45d5b021 flags:# currency:string amount:long stars:long crypto_currency:flags.0?string crypto_amount:flags.0?long transaction_id:flags.1?string = MessageAction; messageActionPrizeStars#b00c47a2 flags:# unclaimed:flags.0?true stars:long transaction_id:string boost_peer:Peer giveaway_msg_id:int = MessageAction; messageActionStarGift#4717e8a4 flags:# name_hidden:flags.0?true saved:flags.2?true converted:flags.3?true upgraded:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true gift:StarGift message:flags.1?TextWithEntities convert_stars:flags.4?long upgrade_msg_id:flags.5?int upgrade_stars:flags.8?long from_id:flags.11?Peer peer:flags.12?Peer saved_id:flags.12?long = MessageAction; messageActionStarGiftUnique#acdfcb81 flags:# upgrade:flags.0?true transferred:flags.1?true saved:flags.2?true refunded:flags.5?true gift:StarGift can_export_at:flags.3?int transfer_stars:flags.4?long from_id:flags.6?Peer peer:flags.7?Peer saved_id:flags.7?long = MessageAction; dialog#d58a08c6 flags:# pinned:flags.2?true unread_mark:flags.3?true view_forum_as_messages:flags.6?true peer:Peer top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int notify_settings:PeerNotifySettings pts:flags.0?int draft:flags.1?DraftMessage folder_id:flags.4?int ttl_period:flags.5?int = Dialog; dialogFolder#71bd134c flags:# pinned:flags.2?true folder:Folder peer:Peer top_message:int unread_muted_peers_count:int unread_unmuted_peers_count:int unread_muted_messages_count:int unread_unmuted_messages_count:int = Dialog; photoEmpty#2331b22d id:long = Photo; photo#fb197a65 flags:# has_stickers:flags.0?true id:long access_hash:long file_reference:bytes date:int sizes:Vector<PhotoSize> video_sizes:flags.1?Vector<VideoSize> dc_id:int = Photo; photoSizeEmpty#e17e23c type:string = PhotoSize; photoSize#75c78e60 type:string w:int h:int size:int = PhotoSize; photoCachedSize#21e1ad6 type:string w:int h:int bytes:bytes = PhotoSize; photoStrippedSize#e0b0bc2e type:string bytes:bytes = PhotoSize; photoSizeProgressive#fa3efb95 type:string w:int h:int sizes:Vector<int> = PhotoSize; photoPathSize#d8214d41 type:string bytes:bytes = PhotoSize; geoPointEmpty#1117dd5f = GeoPoint; geoPoint#b2a2f663 flags:# long:double lat:double access_hash:long accuracy_radius:flags.0?int = GeoPoint; auth.sentCode#5e002502 flags:# type:auth.SentCodeType phone_code_hash:string next_type:flags.1?auth.CodeType timeout:flags.2?int = auth.SentCode; auth.sentCodeSuccess#2390fe44 authorization:auth.Authorization = auth.SentCode; auth.authorization#2ea2c0d4 flags:# setup_password_required:flags.1?true otherwise_relogin_days:flags.1?int tmp_sessions:flags.0?int future_auth_token:flags.2?bytes user:User = auth.Authorization; auth.authorizationSignUpRequired#44747e9a flags:# terms_of_service:flags.0?help.TermsOfService = auth.Authorization; auth.exportedAuthorization#b434e2b8 id:long bytes:bytes = auth.ExportedAuthorization; inputNotifyPeer#b8bc5b0c peer:InputPeer = InputNotifyPeer; inputNotifyUsers#193b4417 = InputNotifyPeer; inputNotifyChats#4a95e84e = InputNotifyPeer; inputNotifyBroadcasts#b1db7c7e = InputNotifyPeer; inputNotifyForumTopic#5c467992 peer:InputPeer top_msg_id:int = InputNotifyPeer; inputPeerNotifySettings#cacb6ae2 flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int sound:flags.3?NotificationSound stories_muted:flags.6?Bool stories_hide_sender:flags.7?Bool stories_sound:flags.8?NotificationSound = InputPeerNotifySettings; peerNotifySettings#99622c0c flags:# show_previews:flags.0?Bool silent:flags.1?Bool mute_until:flags.2?int ios_sound:flags.3?NotificationSound android_sound:flags.4?NotificationSound other_sound:flags.5?NotificationSound stories_muted:flags.6?Bool stories_hide_sender:flags.7?Bool stories_ios_sound:flags.8?NotificationSound stories_android_sound:flags.9?NotificationSound stories_other_sound:flags.10?NotificationSound = PeerNotifySettings; peerSettings#acd66c5e flags:# report_spam:flags.0?true add_contact:flags.1?true block_contact:flags.2?true share_contact:flags.3?true need_contacts_exception:flags.4?true report_geo:flags.5?true autoarchived:flags.7?true invite_members:flags.8?true request_chat_broadcast:flags.10?true business_bot_paused:flags.11?true business_bot_can_reply:flags.12?true geo_distance:flags.6?int request_chat_title:flags.9?string request_chat_date:flags.9?int business_bot_id:flags.13?long business_bot_manage_url:flags.13?string = PeerSettings; wallPaper#a437c3ed id:long flags:# creator:flags.0?true default:flags.1?true pattern:flags.3?true dark:flags.4?true access_hash:long slug:string document:Document settings:flags.2?WallPaperSettings = WallPaper; wallPaperNoFile#e0804116 id:long flags:# default:flags.1?true dark:flags.4?true settings:flags.2?WallPaperSettings = WallPaper; inputReportReasonSpam#58dbcab8 = ReportReason; inputReportReasonViolence#1e22c78d = ReportReason; inputReportReasonPornography#2e59d922 = ReportReason; inputReportReasonChildAbuse#adf44ee3 = ReportReason; inputReportReasonOther#c1e4a2b1 = ReportReason; inputReportReasonCopyright#9b89f93a = ReportReason; inputReportReasonGeoIrrelevant#dbd4feed = ReportReason; inputReportReasonFake#f5ddd6e7 = ReportReason; inputReportReasonIllegalDrugs#a8eb2be = ReportReason; inputReportReasonPersonalDetails#9ec7863d = ReportReason; userFull#4d975bbc flags:# blocked:flags.0?true phone_calls_available:flags.4?true phone_calls_private:flags.5?true can_pin_message:flags.7?true has_scheduled:flags.12?true video_calls_available:flags.13?true voice_messages_forbidden:flags.20?true translations_disabled:flags.23?true stories_pinned_available:flags.26?true blocked_my_stories_from:flags.27?true wallpaper_overridden:flags.28?true contact_require_premium:flags.29?true read_dates_private:flags.30?true flags2:# sponsored_enabled:flags2.7?true can_view_revenue:flags2.9?true bot_can_manage_emoji_status:flags2.10?true id:long about:flags.1?string settings:PeerSettings personal_photo:flags.21?Photo profile_photo:flags.2?Photo fallback_photo:flags.22?Photo notify_settings:PeerNotifySettings bot_info:flags.3?BotInfo pinned_msg_id:flags.6?int common_chats_count:int folder_id:flags.11?int ttl_period:flags.14?int theme_emoticon:flags.15?string private_forward_name:flags.16?string bot_group_admin_rights:flags.17?ChatAdminRights bot_broadcast_admin_rights:flags.18?ChatAdminRights premium_gifts:flags.19?Vector<PremiumGiftOption> wallpaper:flags.24?WallPaper stories:flags.25?PeerStories business_work_hours:flags2.0?BusinessWorkHours business_location:flags2.1?BusinessLocation business_greeting_message:flags2.2?BusinessGreetingMessage business_away_message:flags2.3?BusinessAwayMessage business_intro:flags2.4?BusinessIntro birthday:flags2.5?Birthday personal_channel_id:flags2.6?long personal_channel_message:flags2.6?int stargifts_count:flags2.8?int starref_program:flags2.11?StarRefProgram bot_verification:flags2.12?BotVerification = UserFull; contact#145ade0b user_id:long mutual:Bool = Contact; importedContact#c13e3c50 user_id:long client_id:long = ImportedContact; contactStatus#16d9703b user_id:long status:UserStatus = ContactStatus; contacts.contactsNotModified#b74ba9d2 = contacts.Contacts; contacts.contacts#eae87e42 contacts:Vector<Contact> saved_count:int users:Vector<User> = contacts.Contacts; contacts.importedContacts#77d01c3b imported:Vector<ImportedContact> popular_invites:Vector<PopularContact> retry_contacts:Vector<long> users:Vector<User> = contacts.ImportedContacts; contacts.blocked#ade1591 blocked:Vector<PeerBlocked> chats:Vector<Chat> users:Vector<User> = contacts.Blocked; contacts.blockedSlice#e1664194 count:int blocked:Vector<PeerBlocked> chats:Vector<Chat> users:Vector<User> = contacts.Blocked; messages.dialogs#15ba6c40 dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Dialogs; messages.dialogsSlice#71e094f3 count:int dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Dialogs; messages.dialogsNotModified#f0e3e596 count:int = messages.Dialogs; messages.messages#8c718e87 messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages; messages.messagesSlice#3a54685e flags:# inexact:flags.1?true count:int next_rate:flags.0?int offset_id_offset:flags.2?int messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.Messages; messages.channelMessages#c776ba4e flags:# inexact:flags.1?true pts:int count:int offset_id_offset:flags.2?int messages:Vector<Message> topics:Vector<ForumTopic> chats:Vector<Chat> users:Vector<User> = messages.Messages; messages.messagesNotModified#74535f21 count:int = messages.Messages; messages.chats#64ff9fd5 chats:Vector<Chat> = messages.Chats; messages.chatsSlice#9cd81144 count:int chats:Vector<Chat> = messages.Chats; messages.chatFull#e5d7d19c full_chat:ChatFull chats:Vector<Chat> users:Vector<User> = messages.ChatFull; messages.affectedHistory#b45c69d1 pts:int pts_count:int offset:int = messages.AffectedHistory; inputMessagesFilterEmpty#57e2f66c = MessagesFilter; inputMessagesFilterPhotos#9609a51c = MessagesFilter; inputMessagesFilterVideo#9fc00e65 = MessagesFilter; inputMessagesFilterPhotoVideo#56e9f0e4 = MessagesFilter; inputMessagesFilterDocument#9eddf188 = MessagesFilter; inputMessagesFilterUrl#7ef0dd87 = MessagesFilter; inputMessagesFilterGif#ffc86587 = MessagesFilter; inputMessagesFilterVoice#50f5c392 = MessagesFilter; inputMessagesFilterMusic#3751b49e = MessagesFilter; inputMessagesFilterChatPhotos#3a20ecb8 = MessagesFilter; inputMessagesFilterPhoneCalls#80c99768 flags:# missed:flags.0?true = MessagesFilter; inputMessagesFilterRoundVoice#7a7c17a4 = MessagesFilter; inputMessagesFilterRoundVideo#b549da53 = MessagesFilter; inputMessagesFilterMyMentions#c1f8e69a = MessagesFilter; inputMessagesFilterGeo#e7026d0d = MessagesFilter; inputMessagesFilterContacts#e062db83 = MessagesFilter; inputMessagesFilterPinned#1bb00451 = MessagesFilter; updateNewMessage#1f2b0afd message:Message pts:int pts_count:int = Update; updateMessageID#4e90bfd6 id:int random_id:long = Update; updateDeleteMessages#a20db0e5 messages:Vector<int> pts:int pts_count:int = Update; updateUserTyping#c01e857f user_id:long action:SendMessageAction = Update; updateChatUserTyping#83487af0 chat_id:long from_id:Peer action:SendMessageAction = Update; updateChatParticipants#7761198 participants:ChatParticipants = Update; updateUserStatus#e5bdf8de user_id:long status:UserStatus = Update; updateUserName#a7848924 user_id:long first_name:string last_name:string usernames:Vector<Username> = Update; updateNewAuthorization#8951abef flags:# unconfirmed:flags.0?true hash:long date:flags.0?int device:flags.0?string location:flags.0?string = Update; updateNewEncryptedMessage#12bcbd9a message:EncryptedMessage qts:int = Update; updateEncryptedChatTyping#1710f156 chat_id:int = Update; updateEncryption#b4a2e88d chat:EncryptedChat date:int = Update; updateEncryptedMessagesRead#38fe25b7 chat_id:int max_date:int date:int = Update; updateChatParticipantAdd#3dda5451 chat_id:long user_id:long inviter_id:long date:int version:int = Update; updateChatParticipantDelete#e32f3d77 chat_id:long user_id:long version:int = Update; updateDcOptions#8e5e9873 dc_options:Vector<DcOption> = Update; updateNotifySettings#bec268ef peer:NotifyPeer notify_settings:PeerNotifySettings = Update; updateServiceNotification#ebe46819 flags:# popup:flags.0?true invert_media:flags.2?true inbox_date:flags.1?int type:string message:string media:MessageMedia entities:Vector<MessageEntity> = Update; updatePrivacy#ee3b272a key:PrivacyKey rules:Vector<PrivacyRule> = Update; updateUserPhone#5492a13 user_id:long phone:string = Update; updateReadHistoryInbox#9c974fdf flags:# folder_id:flags.0?int peer:Peer max_id:int still_unread_count:int pts:int pts_count:int = Update; updateReadHistoryOutbox#2f2f21bf peer:Peer max_id:int pts:int pts_count:int = Update; updateWebPage#7f891213 webpage:WebPage pts:int pts_count:int = Update; updateReadMessagesContents#f8227181 flags:# messages:Vector<int> pts:int pts_count:int date:flags.0?int = Update; updateChannelTooLong#108d941f flags:# channel_id:long pts:flags.0?int = Update; updateChannel#635b4c09 channel_id:long = Update; updateNewChannelMessage#62ba04d9 message:Message pts:int pts_count:int = Update; updateReadChannelInbox#922e6e10 flags:# folder_id:flags.0?int channel_id:long max_id:int still_unread_count:int pts:int = Update; updateDeleteChannelMessages#c32d5b12 channel_id:long messages:Vector<int> pts:int pts_count:int = Update; updateChannelMessageViews#f226ac08 channel_id:long id:int views:int = Update; updateChatParticipantAdmin#d7ca61a2 chat_id:long user_id:long is_admin:Bool version:int = Update; updateNewStickerSet#688a30aa stickerset:messages.StickerSet = Update; updateStickerSetsOrder#bb2d201 flags:# masks:flags.0?true emojis:flags.1?true order:Vector<long> = Update; updateStickerSets#31c24808 flags:# masks:flags.0?true emojis:flags.1?true = Update; updateSavedGifs#9375341e = Update; updateBotInlineQuery#496f379c flags:# query_id:long user_id:long query:string geo:flags.0?GeoPoint peer_type:flags.1?InlineQueryPeerType offset:string = Update; updateBotInlineSend#12f12a07 flags:# user_id:long query:string geo:flags.0?GeoPoint id:string msg_id:flags.1?InputBotInlineMessageID = Update; updateEditChannelMessage#1b3f4df7 message:Message pts:int pts_count:int = Update; updateBotCallbackQuery#b9cfc48d flags:# query_id:long user_id:long peer:Peer msg_id:int chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update; updateEditMessage#e40370a3 message:Message pts:int pts_count:int = Update; updateInlineBotCallbackQuery#691e9052 flags:# query_id:long user_id:long msg_id:InputBotInlineMessageID chat_instance:long data:flags.0?bytes game_short_name:flags.1?string = Update; updateReadChannelOutbox#b75f99a9 channel_id:long max_id:int = Update; updateDraftMessage#1b49ec6d flags:# peer:Peer top_msg_id:flags.0?int draft:DraftMessage = Update; updateReadFeaturedStickers#571d2742 = Update; updateRecentStickers#9a422c20 = Update; updateConfig#a229dd06 = Update; updatePtsChanged#3354678f = Update; updateChannelWebPage#2f2ba99f channel_id:long webpage:WebPage pts:int pts_count:int = Update; updateDialogPinned#6e6fe51c flags:# pinned:flags.0?true folder_id:flags.1?int peer:DialogPeer = Update; updatePinnedDialogs#fa0f3ca2 flags:# folder_id:flags.1?int order:flags.0?Vector<DialogPeer> = Update; updateBotWebhookJSON#8317c0c3 data:DataJSON = Update; updateBotWebhookJSONQuery#9b9240a6 query_id:long data:DataJSON timeout:int = Update; updateBotShippingQuery#b5aefd7d query_id:long user_id:long payload:bytes shipping_address:PostAddress = Update; updateBotPrecheckoutQuery#8caa9a96 flags:# query_id:long user_id:long payload:bytes info:flags.0?PaymentRequestedInfo shipping_option_id:flags.1?string currency:string total_amount:long = Update; updatePhoneCall#ab0f6b1e phone_call:PhoneCall = Update; updateLangPackTooLong#46560264 lang_code:string = Update; updateLangPack#56022f4d difference:LangPackDifference = Update; updateFavedStickers#e511996d = Update; updateChannelReadMessagesContents#ea29055d flags:# channel_id:long top_msg_id:flags.0?int messages:Vector<int> = Update; updateContactsReset#7084a7be = Update; updateChannelAvailableMessages#b23fc698 channel_id:long available_min_id:int = Update; updateDialogUnreadMark#e16459c3 flags:# unread:flags.0?true peer:DialogPeer = Update; updateMessagePoll#aca1657b flags:# poll_id:long poll:flags.0?Poll results:PollResults = Update; updateChatDefaultBannedRights#54c01850 peer:Peer default_banned_rights:ChatBannedRights version:int = Update; updateFolderPeers#19360dc0 folder_peers:Vector<FolderPeer> pts:int pts_count:int = Update; updatePeerSettings#6a7e7366 peer:Peer settings:PeerSettings = Update; updatePeerLocated#b4afcfb0 peers:Vector<PeerLocated> = Update; updateNewScheduledMessage#39a51dfb message:Message = Update; updateDeleteScheduledMessages#f2a71983 flags:# peer:Peer messages:Vector<int> sent_messages:flags.0?Vector<int> = Update; updateTheme#8216fba3 theme:Theme = Update; updateGeoLiveViewed#871fb939 peer:Peer msg_id:int = Update; updateLoginToken#564fe691 = Update; updateMessagePollVote#24f40e77 poll_id:long peer:Peer options:Vector<bytes> qts:int = Update; updateDialogFilter#26ffde7d flags:# id:int filter:flags.0?DialogFilter = Update; updateDialogFilterOrder#a5d72105 order:Vector<int> = Update; updateDialogFilters#3504914f = Update; updatePhoneCallSignalingData#2661bf09 phone_call_id:long data:bytes = Update; updateChannelMessageForwards#d29a27f4 channel_id:long id:int forwards:int = Update; updateReadChannelDiscussionInbox#d6b19546 flags:# channel_id:long top_msg_id:int read_max_id:int broadcast_id:flags.0?long broadcast_post:flags.0?int = Update; updateReadChannelDiscussionOutbox#695c9e7c channel_id:long top_msg_id:int read_max_id:int = Update; updatePeerBlocked#ebe07752 flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true peer_id:Peer = Update; updateChannelUserTyping#8c88c923 flags:# channel_id:long top_msg_id:flags.0?int from_id:Peer action:SendMessageAction = Update; updatePinnedMessages#ed85eab5 flags:# pinned:flags.0?true peer:Peer messages:Vector<int> pts:int pts_count:int = Update; updatePinnedChannelMessages#5bb98608 flags:# pinned:flags.0?true channel_id:long messages:Vector<int> pts:int pts_count:int = Update; updateChat#f89a6a4e chat_id:long = Update; updateGroupCallParticipants#f2ebdb4e call:InputGroupCall participants:Vector<GroupCallParticipant> version:int = Update; updateGroupCall#97d64341 flags:# chat_id:flags.0?long call:GroupCall = Update; updatePeerHistoryTTL#bb9bb9a5 flags:# peer:Peer ttl_period:flags.0?int = Update; updateChatParticipant#d087663a flags:# chat_id:long date:int actor_id:long user_id:long prev_participant:flags.0?ChatParticipant new_participant:flags.1?ChatParticipant invite:flags.2?ExportedChatInvite qts:int = Update; updateChannelParticipant#985d3abb flags:# via_chatlist:flags.3?true channel_id:long date:int actor_id:long user_id:long prev_participant:flags.0?ChannelParticipant new_participant:flags.1?ChannelParticipant invite:flags.2?ExportedChatInvite qts:int = Update; updateBotStopped#c4870a49 user_id:long date:int stopped:Bool qts:int = Update; updateGroupCallConnection#b783982 flags:# presentation:flags.0?true params:DataJSON = Update; updateBotCommands#4d712f2e peer:Peer bot_id:long commands:Vector<BotCommand> = Update; updatePendingJoinRequests#7063c3db peer:Peer requests_pending:int recent_requesters:Vector<long> = Update; updateBotChatInviteRequester#11dfa986 peer:Peer date:int user_id:long about:string invite:ExportedChatInvite qts:int = Update; updateMessageReactions#5e1b3cb8 flags:# peer:Peer msg_id:int top_msg_id:flags.0?int reactions:MessageReactions = Update; updateAttachMenuBots#17b7a20b = Update; updateWebViewResultSent#1592b79d query_id:long = Update; updateBotMenuButton#14b85813 bot_id:long button:BotMenuButton = Update; updateSavedRingtones#74d8be99 = Update; updateTranscribedAudio#84cd5a flags:# pending:flags.0?true peer:Peer msg_id:int transcription_id:long text:string = Update; updateReadFeaturedEmojiStickers#fb4c496c = Update; updateUserEmojiStatus#28373599 user_id:long emoji_status:EmojiStatus = Update; updateRecentEmojiStatuses#30f443db = Update; updateRecentReactions#6f7863f4 = Update; updateMoveStickerSetToTop#86fccf85 flags:# masks:flags.0?true emojis:flags.1?true stickerset:long = Update; updateMessageExtendedMedia#d5a41724 peer:Peer msg_id:int extended_media:Vector<MessageExtendedMedia> = Update; updateChannelPinnedTopic#192efbe3 flags:# pinned:flags.0?true channel_id:long topic_id:int = Update; updateChannelPinnedTopics#fe198602 flags:# channel_id:long order:flags.0?Vector<int> = Update; updateUser#20529438 user_id:long = Update; updateAutoSaveSettings#ec05b097 = Update; updateStory#75b3b798 peer:Peer story:StoryItem = Update; updateReadStories#f74e932b peer:Peer max_id:int = Update; updateStoryID#1bf335b9 id:int random_id:long = Update; updateStoriesStealthMode#2c084dc1 stealth_mode:StoriesStealthMode = Update; updateSentStoryReaction#7d627683 peer:Peer story_id:int reaction:Reaction = Update; updateBotChatBoost#904dd49c peer:Peer boost:Boost qts:int = Update; updateChannelViewForumAsMessages#7b68920 channel_id:long enabled:Bool = Update; updatePeerWallpaper#ae3f101d flags:# wallpaper_overridden:flags.1?true peer:Peer wallpaper:flags.0?WallPaper = Update; updateBotMessageReaction#ac21d3ce peer:Peer msg_id:int date:int actor:Peer old_reactions:Vector<Reaction> new_reactions:Vector<Reaction> qts:int = Update; updateBotMessageReactions#9cb7759 peer:Peer msg_id:int date:int reactions:Vector<ReactionCount> qts:int = Update; updateSavedDialogPinned#aeaf9e74 flags:# pinned:flags.0?true peer:DialogPeer = Update; updatePinnedSavedDialogs#686c85a6 flags:# order:flags.0?Vector<DialogPeer> = Update; updateSavedReactionTags#39c67432 = Update; updateSmsJob#f16269d4 job_id:string = Update; updateQuickReplies#f9470ab2 quick_replies:Vector<QuickReply> = Update; updateNewQuickReply#f53da717 quick_reply:QuickReply = Update; updateDeleteQuickReply#53e6f1ec shortcut_id:int = Update; updateQuickReplyMessage#3e050d0f message:Message = Update; updateDeleteQuickReplyMessages#566fe7cd shortcut_id:int messages:Vector<int> = Update; updateBotBusinessConnect#8ae5c97a connection:BotBusinessConnection qts:int = Update; updateBotNewBusinessMessage#9ddb347c flags:# connection_id:string message:Message reply_to_message:flags.0?Message qts:int = Update; updateBotEditBusinessMessage#7df587c flags:# connection_id:string message:Message reply_to_message:flags.0?Message qts:int = Update; updateBotDeleteBusinessMessage#a02a982e connection_id:string peer:Peer messages:Vector<int> qts:int = Update; updateNewStoryReaction#1824e40b story_id:int peer:Peer reaction:Reaction = Update; updateBroadcastRevenueTransactions#dfd961f5 peer:Peer balances:BroadcastRevenueBalances = Update; updateStarsBalance#4e80a379 balance:StarsAmount = Update; updateBusinessBotCallbackQuery#1ea2fda7 flags:# query_id:long user_id:long connection_id:string message:Message reply_to_message:flags.2?Message chat_instance:long data:flags.0?bytes = Update; updateStarsRevenueStatus#a584b019 peer:Peer status:StarsRevenueStatus = Update; updateBotPurchasedPaidMedia#283bd312 user_id:long payload:string qts:int = Update; updatePaidReactionPrivacy#51ca7aec private:Bool = Update; updates.state#a56c2a3e pts:int qts:int date:int seq:int unread_count:int = updates.State; updates.differenceEmpty#5d75a138 date:int seq:int = updates.Difference; updates.difference#f49ca0 new_messages:Vector<Message> new_encrypted_messages:Vector<EncryptedMessage> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> state:updates.State = updates.Difference; updates.differenceSlice#a8fb1981 new_messages:Vector<Message> new_encrypted_messages:Vector<EncryptedMessage> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> intermediate_state:updates.State = updates.Difference; updates.differenceTooLong#4afe8f6d pts:int = updates.Difference; updatesTooLong#e317af7e = Updates; updateShortMessage#313bc7f8 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int user_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> ttl_period:flags.25?int = Updates; updateShortChatMessage#4d6deea5 flags:# out:flags.1?true mentioned:flags.4?true media_unread:flags.5?true silent:flags.13?true id:int from_id:long chat_id:long message:string pts:int pts_count:int date:int fwd_from:flags.2?MessageFwdHeader via_bot_id:flags.11?long reply_to:flags.3?MessageReplyHeader entities:flags.7?Vector<MessageEntity> ttl_period:flags.25?int = Updates; updateShort#78d4dec1 update:Update date:int = Updates; updatesCombined#725b04c3 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq_start:int seq:int = Updates; updates#74ae4240 updates:Vector<Update> users:Vector<User> chats:Vector<Chat> date:int seq:int = Updates; updateShortSentMessage#9015e101 flags:# out:flags.1?true id:int pts:int pts_count:int date:int media:flags.9?MessageMedia entities:flags.7?Vector<MessageEntity> ttl_period:flags.25?int = Updates; photos.photos#8dca6aa5 photos:Vector<Photo> users:Vector<User> = photos.Photos; photos.photosSlice#15051f54 count:int photos:Vector<Photo> users:Vector<User> = photos.Photos; photos.photo#20212ca8 photo:Photo users:Vector<User> = photos.Photo; upload.file#96a18d5 type:storage.FileType mtime:int bytes:bytes = upload.File; upload.fileCdnRedirect#f18cda44 dc_id:int file_token:bytes encryption_key:bytes encryption_iv:bytes file_hashes:Vector<FileHash> = upload.File; dcOption#18b7a10d flags:# ipv6:flags.0?true media_only:flags.1?true tcpo_only:flags.2?true cdn:flags.3?true static:flags.4?true this_port_only:flags.5?true id:int ip_address:string port:int secret:flags.10?bytes = DcOption; config#cc1a241e flags:# default_p2p_contacts:flags.3?true preload_featured_stickers:flags.4?true revoke_pm_inbox:flags.6?true blocked_mode:flags.8?true force_try_ipv6:flags.14?true date:int expires:int test_mode:Bool this_dc:int dc_options:Vector<DcOption> dc_txt_domain_name:string chat_size_max:int megagroup_size_max:int forwarded_count_max:int online_update_period_ms:int offline_blur_timeout_ms:int offline_idle_timeout_ms:int online_cloud_timeout_ms:int notify_cloud_delay_ms:int notify_default_delay_ms:int push_chat_period_ms:int push_chat_limit:int edit_time_limit:int revoke_time_limit:int revoke_pm_time_limit:int rating_e_decay:int stickers_recent_limit:int channels_read_media_period:int tmp_sessions:flags.0?int call_receive_timeout_ms:int call_ring_timeout_ms:int call_connect_timeout_ms:int call_packet_timeout_ms:int me_url_prefix:string autoupdate_url_prefix:flags.7?string gif_search_username:flags.9?string venue_search_username:flags.10?string img_search_username:flags.11?string static_maps_provider:flags.12?string caption_length_max:int message_length_max:int webfile_dc_id:int suggested_lang_code:flags.2?string lang_pack_version:flags.2?int base_lang_pack_version:flags.2?int reactions_default:flags.15?Reaction autologin_token:flags.16?string = Config; nearestDc#8e1a1775 country:string this_dc:int nearest_dc:int = NearestDc; help.appUpdate#ccbbce30 flags:# can_not_skip:flags.0?true id:int version:string text:string entities:Vector<MessageEntity> document:flags.1?Document url:flags.2?string sticker:flags.3?Document = help.AppUpdate; help.noAppUpdate#c45a6536 = help.AppUpdate; help.inviteText#18cb9f78 message:string = help.InviteText; encryptedChatEmpty#ab7ec0a0 id:int = EncryptedChat; encryptedChatWaiting#66b25953 id:int access_hash:long date:int admin_id:long participant_id:long = EncryptedChat; encryptedChatRequested#48f1d94c flags:# folder_id:flags.0?int id:int access_hash:long date:int admin_id:long participant_id:long g_a:bytes = EncryptedChat; encryptedChat#61f0d4c7 id:int access_hash:long date:int admin_id:long participant_id:long g_a_or_b:bytes key_fingerprint:long = EncryptedChat; encryptedChatDiscarded#1e1c7c45 flags:# history_deleted:flags.0?true id:int = EncryptedChat; inputEncryptedChat#f141b5e1 chat_id:int access_hash:long = InputEncryptedChat; encryptedFileEmpty#c21f497e = EncryptedFile; encryptedFile#a8008cd8 id:long access_hash:long size:long dc_id:int key_fingerprint:int = EncryptedFile; inputEncryptedFileEmpty#1837c364 = InputEncryptedFile; inputEncryptedFileUploaded#64bd0306 id:long parts:int md5_checksum:string key_fingerprint:int = InputEncryptedFile; inputEncryptedFile#5a17b5e5 id:long access_hash:long = InputEncryptedFile; inputEncryptedFileBigUploaded#2dc173c8 id:long parts:int key_fingerprint:int = InputEncryptedFile; encryptedMessage#ed18c118 random_id:long chat_id:int date:int bytes:bytes file:EncryptedFile = EncryptedMessage; encryptedMessageService#23734b06 random_id:long chat_id:int date:int bytes:bytes = EncryptedMessage; messages.dhConfigNotModified#c0e24635 random:bytes = messages.DhConfig; messages.dhConfig#2c221edd g:int p:bytes version:int random:bytes = messages.DhConfig; messages.sentEncryptedMessage#560f8935 date:int = messages.SentEncryptedMessage; messages.sentEncryptedFile#9493ff32 date:int file:EncryptedFile = messages.SentEncryptedMessage; inputDocumentEmpty#72f0eaae = InputDocument; inputDocument#1abfb575 id:long access_hash:long file_reference:bytes = InputDocument; documentEmpty#36f8c871 id:long = Document; document#8fd4c4d8 flags:# id:long access_hash:long file_reference:bytes date:int mime_type:string size:long thumbs:flags.0?Vector<PhotoSize> video_thumbs:flags.1?Vector<VideoSize> dc_id:int attributes:Vector<DocumentAttribute> = Document; help.support#17c6b5f6 phone_number:string user:User = help.Support; notifyPeer#9fd40bd8 peer:Peer = NotifyPeer; notifyUsers#b4c83b4c = NotifyPeer; notifyChats#c007cec3 = NotifyPeer; notifyBroadcasts#d612e8ef = NotifyPeer; notifyForumTopic#226e6308 peer:Peer top_msg_id:int = NotifyPeer; sendMessageTypingAction#16bf744e = SendMessageAction; sendMessageCancelAction#fd5ec8f5 = SendMessageAction; sendMessageRecordVideoAction#a187d66f = SendMessageAction; sendMessageUploadVideoAction#e9763aec progress:int = SendMessageAction; sendMessageRecordAudioAction#d52f73f7 = SendMessageAction; sendMessageUploadAudioAction#f351d7ab progress:int = SendMessageAction; sendMessageUploadPhotoAction#d1d34a26 progress:int = SendMessageAction; sendMessageUploadDocumentAction#aa0cd9e4 progress:int = SendMessageAction; sendMessageGeoLocationAction#176f8ba1 = SendMessageAction; sendMessageChooseContactAction#628cbc6f = SendMessageAction; sendMessageGamePlayAction#dd6a8f48 = SendMessageAction; sendMessageRecordRoundAction#88f27fbc = SendMessageAction; sendMessageUploadRoundAction#243e1c66 progress:int = SendMessageAction; speakingInGroupCallAction#d92c2285 = SendMessageAction; sendMessageHistoryImportAction#dbda9246 progress:int = SendMessageAction; sendMessageChooseStickerAction#b05ac6b1 = SendMessageAction; sendMessageEmojiInteraction#25972bcb emoticon:string msg_id:int interaction:DataJSON = SendMessageAction; sendMessageEmojiInteractionSeen#b665902e emoticon:string = SendMessageAction; contacts.found#b3134d9d my_results:Vector<Peer> results:Vector<Peer> chats:Vector<Chat> users:Vector<User> = contacts.Found; inputPrivacyKeyStatusTimestamp#4f96cb18 = InputPrivacyKey; inputPrivacyKeyChatInvite#bdfb0426 = InputPrivacyKey; inputPrivacyKeyPhoneCall#fabadc5f = InputPrivacyKey; inputPrivacyKeyPhoneP2P#db9e70d2 = InputPrivacyKey; inputPrivacyKeyForwards#a4dd4c08 = InputPrivacyKey; inputPrivacyKeyProfilePhoto#5719bacc = InputPrivacyKey; inputPrivacyKeyPhoneNumber#352dafa = InputPrivacyKey; inputPrivacyKeyAddedByPhone#d1219bdd = InputPrivacyKey; inputPrivacyKeyVoiceMessages#aee69d68 = InputPrivacyKey; inputPrivacyKeyAbout#3823cc40 = InputPrivacyKey; inputPrivacyKeyBirthday#d65a11cc = InputPrivacyKey; inputPrivacyKeyStarGiftsAutoSave#e1732341 = InputPrivacyKey; privacyKeyStatusTimestamp#bc2eab30 = PrivacyKey; privacyKeyChatInvite#500e6dfa = PrivacyKey; privacyKeyPhoneCall#3d662b7b = PrivacyKey; privacyKeyPhoneP2P#39491cc8 = PrivacyKey; privacyKeyForwards#69ec56a3 = PrivacyKey; privacyKeyProfilePhoto#96151fed = PrivacyKey; privacyKeyPhoneNumber#d19ae46d = PrivacyKey; privacyKeyAddedByPhone#42ffd42b = PrivacyKey; privacyKeyVoiceMessages#697f414 = PrivacyKey; privacyKeyAbout#a486b761 = PrivacyKey; privacyKeyBirthday#2000a518 = PrivacyKey; privacyKeyStarGiftsAutoSave#2ca4fdf8 = PrivacyKey; inputPrivacyValueAllowContacts#d09e07b = InputPrivacyRule; inputPrivacyValueAllowAll#184b35ce = InputPrivacyRule; inputPrivacyValueAllowUsers#131cc67f users:Vector<InputUser> = InputPrivacyRule; inputPrivacyValueDisallowContacts#ba52007 = InputPrivacyRule; inputPrivacyValueDisallowAll#d66b66c9 = InputPrivacyRule; inputPrivacyValueDisallowUsers#90110467 users:Vector<InputUser> = InputPrivacyRule; inputPrivacyValueAllowChatParticipants#840649cf chats:Vector<long> = InputPrivacyRule; inputPrivacyValueDisallowChatParticipants#e94f0f86 chats:Vector<long> = InputPrivacyRule; inputPrivacyValueAllowCloseFriends#2f453e49 = InputPrivacyRule; inputPrivacyValueAllowPremium#77cdc9f1 = InputPrivacyRule; inputPrivacyValueAllowBots#5a4fcce5 = InputPrivacyRule; inputPrivacyValueDisallowBots#c4e57915 = InputPrivacyRule; privacyValueAllowContacts#fffe1bac = PrivacyRule; privacyValueAllowAll#65427b82 = PrivacyRule; privacyValueAllowUsers#b8905fb2 users:Vector<long> = PrivacyRule; privacyValueDisallowContacts#f888fa1a = PrivacyRule; privacyValueDisallowAll#8b73e763 = PrivacyRule; privacyValueDisallowUsers#e4621141 users:Vector<long> = PrivacyRule; privacyValueAllowChatParticipants#6b134e8e chats:Vector<long> = PrivacyRule; privacyValueDisallowChatParticipants#41c87565 chats:Vector<long> = PrivacyRule; privacyValueAllowCloseFriends#f7e8d89b = PrivacyRule; privacyValueAllowPremium#ece9814b = PrivacyRule; privacyValueAllowBots#21461b5d = PrivacyRule; privacyValueDisallowBots#f6a5f82f = PrivacyRule; account.privacyRules#50a04e45 rules:Vector<PrivacyRule> chats:Vector<Chat> users:Vector<User> = account.PrivacyRules; accountDaysTTL#b8d0afdf days:int = AccountDaysTTL; documentAttributeImageSize#6c37c15c w:int h:int = DocumentAttribute; documentAttributeAnimated#11b58939 = DocumentAttribute; documentAttributeSticker#6319d612 flags:# mask:flags.1?true alt:string stickerset:InputStickerSet mask_coords:flags.0?MaskCoords = DocumentAttribute; documentAttributeVideo#43c57c48 flags:# round_message:flags.0?true supports_streaming:flags.1?true nosound:flags.3?true duration:double w:int h:int preload_prefix_size:flags.2?int video_start_ts:flags.4?double video_codec:flags.5?string = DocumentAttribute; documentAttributeAudio#9852f9c6 flags:# voice:flags.10?true duration:int title:flags.0?string performer:flags.1?string waveform:flags.2?bytes = DocumentAttribute; documentAttributeFilename#15590068 file_name:string = DocumentAttribute; documentAttributeHasStickers#9801d2f7 = DocumentAttribute; documentAttributeCustomEmoji#fd149899 flags:# free:flags.0?true text_color:flags.1?true alt:string stickerset:InputStickerSet = DocumentAttribute; messages.stickersNotModified#f1749a22 = messages.Stickers; messages.stickers#30a6ec7e hash:long stickers:Vector<Document> = messages.Stickers; stickerPack#12b299d4 emoticon:string documents:Vector<long> = StickerPack; messages.allStickersNotModified#e86602c3 = messages.AllStickers; messages.allStickers#cdbbcebb hash:long sets:Vector<StickerSet> = messages.AllStickers; messages.affectedMessages#84d19185 pts:int pts_count:int = messages.AffectedMessages; webPageEmpty#211a1788 flags:# id:long url:flags.0?string = WebPage; webPagePending#b0d13e47 flags:# id:long url:flags.0?string date:int = WebPage; webPage#e89c45b2 flags:# has_large_media:flags.13?true id:long url:string display_url:string hash:int type:flags.0?string site_name:flags.1?string title:flags.2?string description:flags.3?string photo:flags.4?Photo embed_url:flags.5?string embed_type:flags.5?string embed_width:flags.6?int embed_height:flags.6?int duration:flags.7?int author:flags.8?string document:flags.9?Document cached_page:flags.10?Page attributes:flags.12?Vector<WebPageAttribute> = WebPage; webPageNotModified#7311ca11 flags:# cached_page_views:flags.0?int = WebPage; authorization#ad01d61d flags:# current:flags.0?true official_app:flags.1?true password_pending:flags.2?true encrypted_requests_disabled:flags.3?true call_requests_disabled:flags.4?true unconfirmed:flags.5?true hash:long device_model:string platform:string system_version:string api_id:int app_name:string app_version:string date_created:int date_active:int ip:string country:string region:string = Authorization; account.authorizations#4bff8ea0 authorization_ttl_days:int authorizations:Vector<Authorization> = account.Authorizations; account.password#957b50fb flags:# has_recovery:flags.0?true has_secure_values:flags.1?true has_password:flags.2?true current_algo:flags.2?PasswordKdfAlgo srp_B:flags.2?bytes srp_id:flags.2?long hint:flags.3?string email_unconfirmed_pattern:flags.4?string new_algo:PasswordKdfAlgo new_secure_algo:SecurePasswordKdfAlgo secure_random:bytes pending_reset_date:flags.5?int login_email_pattern:flags.6?string = account.Password; account.passwordSettings#9a5c33e5 flags:# email:flags.0?string secure_settings:flags.1?SecureSecretSettings = account.PasswordSettings; account.passwordInputSettings#c23727c9 flags:# new_algo:flags.0?PasswordKdfAlgo new_password_hash:flags.0?bytes hint:flags.0?string email:flags.1?string new_secure_settings:flags.2?SecureSecretSettings = account.PasswordInputSettings; auth.passwordRecovery#137948a5 email_pattern:string = auth.PasswordRecovery; receivedNotifyMessage#a384b779 id:int flags:int = ReceivedNotifyMessage; chatInviteExported#a22cbd96 flags:# revoked:flags.0?true permanent:flags.5?true request_needed:flags.6?true link:string admin_id:long date:int start_date:flags.4?int expire_date:flags.1?int usage_limit:flags.2?int usage:flags.3?int requested:flags.7?int subscription_expired:flags.10?int title:flags.8?string subscription_pricing:flags.9?StarsSubscriptionPricing = ExportedChatInvite; chatInvitePublicJoinRequests#ed107ab7 = ExportedChatInvite; chatInviteAlready#5a686d7c chat:Chat = ChatInvite; chatInvite#5c9d3702 flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true request_needed:flags.6?true verified:flags.7?true scam:flags.8?true fake:flags.9?true can_refulfill_subscription:flags.11?true title:string about:flags.5?string photo:Photo participants_count:int participants:flags.4?Vector<User> color:int subscription_pricing:flags.10?StarsSubscriptionPricing subscription_form_id:flags.12?long bot_verification:flags.13?BotVerification = ChatInvite; chatInvitePeek#61695cb0 chat:Chat expires:int = ChatInvite; inputStickerSetEmpty#ffb62b95 = InputStickerSet; inputStickerSetID#9de7a269 id:long access_hash:long = InputStickerSet; inputStickerSetShortName#861cc8a0 short_name:string = InputStickerSet; inputStickerSetAnimatedEmoji#28703c8 = InputStickerSet; inputStickerSetDice#e67f520e emoticon:string = InputStickerSet; inputStickerSetAnimatedEmojiAnimations#cde3739 = InputStickerSet; inputStickerSetPremiumGifts#c88b3b02 = InputStickerSet; inputStickerSetEmojiGenericAnimations#4c4d4ce = InputStickerSet; inputStickerSetEmojiDefaultStatuses#29d0f5ee = InputStickerSet; inputStickerSetEmojiDefaultTopicIcons#44c1f8e9 = InputStickerSet; inputStickerSetEmojiChannelDefaultStatuses#49748553 = InputStickerSet; stickerSet#2dd14edc flags:# archived:flags.1?true official:flags.2?true masks:flags.3?true emojis:flags.7?true text_color:flags.9?true channel_emoji_status:flags.10?true creator:flags.11?true installed_date:flags.0?int id:long access_hash:long title:string short_name:string thumbs:flags.4?Vector<PhotoSize> thumb_dc_id:flags.4?int thumb_version:flags.4?int thumb_document_id:flags.8?long count:int hash:int = StickerSet; messages.stickerSet#6e153f16 set:StickerSet packs:Vector<StickerPack> keywords:Vector<StickerKeyword> documents:Vector<Document> = messages.StickerSet; messages.stickerSetNotModified#d3f924eb = messages.StickerSet; botCommand#c27ac8c7 command:string description:string = BotCommand; botInfo#4d8a0299 flags:# has_preview_medias:flags.6?true user_id:flags.0?long description:flags.1?string description_photo:flags.4?Photo description_document:flags.5?Document commands:flags.2?Vector<BotCommand> menu_button:flags.3?BotMenuButton privacy_policy_url:flags.7?string app_settings:flags.8?BotAppSettings verifier_settings:flags.9?BotVerifierSettings = BotInfo; keyboardButton#a2fa4880 text:string = KeyboardButton; keyboardButtonUrl#258aff05 text:string url:string = KeyboardButton; keyboardButtonCallback#35bbdb6b flags:# requires_password:flags.0?true text:string data:bytes = KeyboardButton; keyboardButtonRequestPhone#b16a6c29 text:string = KeyboardButton; keyboardButtonRequestGeoLocation#fc796b3f text:string = KeyboardButton; keyboardButtonSwitchInline#93b9fbb5 flags:# same_peer:flags.0?true text:string query:string peer_types:flags.1?Vector<InlineQueryPeerType> = KeyboardButton; keyboardButtonGame#50f41ccf text:string = KeyboardButton; keyboardButtonBuy#afd93fbb text:string = KeyboardButton; keyboardButtonUrlAuth#10b78d29 flags:# text:string fwd_text:flags.0?string url:string button_id:int = KeyboardButton; inputKeyboardButtonUrlAuth#d02e7fd4 flags:# request_write_access:flags.0?true text:string fwd_text:flags.1?string url:string bot:InputUser = KeyboardButton; keyboardButtonRequestPoll#bbc7515d flags:# quiz:flags.0?Bool text:string = KeyboardButton; inputKeyboardButtonUserProfile#e988037b text:string user_id:InputUser = KeyboardButton; keyboardButtonUserProfile#308660c1 text:string user_id:long = KeyboardButton; keyboardButtonWebView#13767230 text:string url:string = KeyboardButton; keyboardButtonSimpleWebView#a0c0505c text:string url:string = KeyboardButton; keyboardButtonRequestPeer#53d7bfd8 text:string button_id:int peer_type:RequestPeerType max_quantity:int = KeyboardButton; inputKeyboardButtonRequestPeer#c9662d05 flags:# name_requested:flags.0?true username_requested:flags.1?true photo_requested:flags.2?true text:string button_id:int peer_type:RequestPeerType max_quantity:int = KeyboardButton; keyboardButtonCopy#75d2698e text:string copy_text:string = KeyboardButton; keyboardButtonRow#77608b83 buttons:Vector<KeyboardButton> = KeyboardButtonRow; replyKeyboardHide#a03e5b85 flags:# selective:flags.2?true = ReplyMarkup; replyKeyboardForceReply#86b40b08 flags:# single_use:flags.1?true selective:flags.2?true placeholder:flags.3?string = ReplyMarkup; replyKeyboardMarkup#85dd99d1 flags:# resize:flags.0?true single_use:flags.1?true selective:flags.2?true persistent:flags.4?true rows:Vector<KeyboardButtonRow> placeholder:flags.3?string = ReplyMarkup; replyInlineMarkup#48a30254 rows:Vector<KeyboardButtonRow> = ReplyMarkup; messageEntityUnknown#bb92ba95 offset:int length:int = MessageEntity; messageEntityMention#fa04579d offset:int length:int = MessageEntity; messageEntityHashtag#6f635b0d offset:int length:int = MessageEntity; messageEntityBotCommand#6cef8ac7 offset:int length:int = MessageEntity; messageEntityUrl#6ed02538 offset:int length:int = MessageEntity; messageEntityEmail#64e475c2 offset:int length:int = MessageEntity; messageEntityBold#bd610bc9 offset:int length:int = MessageEntity; messageEntityItalic#826f8b60 offset:int length:int = MessageEntity; messageEntityCode#28a20571 offset:int length:int = MessageEntity; messageEntityPre#73924be0 offset:int length:int language:string = MessageEntity; messageEntityTextUrl#76a6d327 offset:int length:int url:string = MessageEntity; messageEntityMentionName#dc7b1140 offset:int length:int user_id:long = MessageEntity; inputMessageEntityMentionName#208e68c9 offset:int length:int user_id:InputUser = MessageEntity; messageEntityPhone#9b69e34b offset:int length:int = MessageEntity; messageEntityCashtag#4c4e743f offset:int length:int = MessageEntity; messageEntityUnderline#9c4e7e8b offset:int length:int = MessageEntity; messageEntityStrike#bf0693d4 offset:int length:int = MessageEntity; messageEntityBankCard#761e6af4 offset:int length:int = MessageEntity; messageEntitySpoiler#32ca960f offset:int length:int = MessageEntity; messageEntityCustomEmoji#c8cf05f8 offset:int length:int document_id:long = MessageEntity; messageEntityBlockquote#f1ccaaac flags:# collapsed:flags.0?true offset:int length:int = MessageEntity; inputChannelEmpty#ee8c1e86 = InputChannel; inputChannel#f35aec28 channel_id:long access_hash:long = InputChannel; inputChannelFromMessage#5b934f9d peer:InputPeer msg_id:int channel_id:long = InputChannel; contacts.resolvedPeer#7f077ad9 peer:Peer chats:Vector<Chat> users:Vector<User> = contacts.ResolvedPeer; messageRange#ae30253 min_id:int max_id:int = MessageRange; updates.channelDifferenceEmpty#3e11affb flags:# final:flags.0?true pts:int timeout:flags.1?int = updates.ChannelDifference; updates.channelDifferenceTooLong#a4bcc6fe flags:# final:flags.0?true timeout:flags.1?int dialog:Dialog messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = updates.ChannelDifference; updates.channelDifference#2064674e flags:# final:flags.0?true pts:int timeout:flags.1?int new_messages:Vector<Message> other_updates:Vector<Update> chats:Vector<Chat> users:Vector<User> = updates.ChannelDifference; channelMessagesFilterEmpty#94d42ee7 = ChannelMessagesFilter; channelMessagesFilter#cd77d957 flags:# exclude_new_messages:flags.1?true ranges:Vector<MessageRange> = ChannelMessagesFilter; channelParticipant#cb397619 flags:# user_id:long date:int subscription_until_date:flags.0?int = ChannelParticipant; channelParticipantSelf#4f607bef flags:# via_request:flags.0?true user_id:long inviter_id:long date:int subscription_until_date:flags.1?int = ChannelParticipant; channelParticipantCreator#2fe601d3 flags:# user_id:long admin_rights:ChatAdminRights rank:flags.0?string = ChannelParticipant; channelParticipantAdmin#34c3bb53 flags:# can_edit:flags.0?true self:flags.1?true user_id:long inviter_id:flags.1?long promoted_by:long date:int admin_rights:ChatAdminRights rank:flags.2?string = ChannelParticipant; channelParticipantBanned#6df8014e flags:# left:flags.0?true peer:Peer kicked_by:long date:int banned_rights:ChatBannedRights = ChannelParticipant; channelParticipantLeft#1b03f006 peer:Peer = ChannelParticipant; channelParticipantsRecent#de3f3c79 = ChannelParticipantsFilter; channelParticipantsAdmins#b4608969 = ChannelParticipantsFilter; channelParticipantsKicked#a3b54985 q:string = ChannelParticipantsFilter; channelParticipantsBots#b0d1865b = ChannelParticipantsFilter; channelParticipantsBanned#1427a5e1 q:string = ChannelParticipantsFilter; channelParticipantsSearch#656ac4b q:string = ChannelParticipantsFilter; channelParticipantsContacts#bb6ae88d q:string = ChannelParticipantsFilter; channelParticipantsMentions#e04b5ceb flags:# q:flags.0?string top_msg_id:flags.1?int = ChannelParticipantsFilter; channels.channelParticipants#9ab0feaf count:int participants:Vector<ChannelParticipant> chats:Vector<Chat> users:Vector<User> = channels.ChannelParticipants; channels.channelParticipantsNotModified#f0173fe9 = channels.ChannelParticipants; channels.channelParticipant#dfb80317 participant:ChannelParticipant chats:Vector<Chat> users:Vector<User> = channels.ChannelParticipant; help.termsOfService#780a0310 flags:# popup:flags.0?true id:DataJSON text:string entities:Vector<MessageEntity> min_age_confirm:flags.1?int = help.TermsOfService; messages.savedGifsNotModified#e8025ca2 = messages.SavedGifs; messages.savedGifs#84a02a0d hash:long gifs:Vector<Document> = messages.SavedGifs; inputBotInlineMessageMediaAuto#3380c786 flags:# invert_media:flags.3?true message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageText#3dcd7a87 flags:# no_webpage:flags.0?true invert_media:flags.3?true message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageMediaGeo#96929a85 flags:# geo_point:InputGeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageMediaVenue#417bbf11 flags:# geo_point:InputGeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageMediaContact#a6edbffd flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageGame#4b425864 flags:# reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageMediaInvoice#d7e78225 flags:# title:string description:string photo:flags.0?InputWebDocument invoice:Invoice payload:bytes provider:string provider_data:DataJSON reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineMessageMediaWebPage#bddcc510 flags:# invert_media:flags.3?true force_large_media:flags.4?true force_small_media:flags.5?true optional:flags.6?true message:string entities:flags.1?Vector<MessageEntity> url:string reply_markup:flags.2?ReplyMarkup = InputBotInlineMessage; inputBotInlineResult#88bf9319 flags:# id:string type:string title:flags.1?string description:flags.2?string url:flags.3?string thumb:flags.4?InputWebDocument content:flags.5?InputWebDocument send_message:InputBotInlineMessage = InputBotInlineResult; inputBotInlineResultPhoto#a8d864a7 id:string type:string photo:InputPhoto send_message:InputBotInlineMessage = InputBotInlineResult; inputBotInlineResultDocument#fff8fdc4 flags:# id:string type:string title:flags.1?string description:flags.2?string document:InputDocument send_message:InputBotInlineMessage = InputBotInlineResult; inputBotInlineResultGame#4fa417f2 id:string short_name:string send_message:InputBotInlineMessage = InputBotInlineResult; botInlineMessageMediaAuto#764cf810 flags:# invert_media:flags.3?true message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageText#8c7f65e2 flags:# no_webpage:flags.0?true invert_media:flags.3?true message:string entities:flags.1?Vector<MessageEntity> reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageMediaGeo#51846fd flags:# geo:GeoPoint heading:flags.0?int period:flags.1?int proximity_notification_radius:flags.3?int reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageMediaVenue#8a86659c flags:# geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageMediaContact#18d1cdc2 flags:# phone_number:string first_name:string last_name:string vcard:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageMediaInvoice#354a9b09 flags:# shipping_address_requested:flags.1?true test:flags.3?true title:string description:string photo:flags.0?WebDocument currency:string total_amount:long reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineMessageMediaWebPage#809ad9a6 flags:# invert_media:flags.3?true force_large_media:flags.4?true force_small_media:flags.5?true manual:flags.7?true safe:flags.8?true message:string entities:flags.1?Vector<MessageEntity> url:string reply_markup:flags.2?ReplyMarkup = BotInlineMessage; botInlineResult#11965f3a flags:# id:string type:string title:flags.1?string description:flags.2?string url:flags.3?string thumb:flags.4?WebDocument content:flags.5?WebDocument send_message:BotInlineMessage = BotInlineResult; botInlineMediaResult#17db940b flags:# id:string type:string photo:flags.0?Photo document:flags.1?Document title:flags.2?string description:flags.3?string send_message:BotInlineMessage = BotInlineResult; messages.botResults#e021f2f6 flags:# gallery:flags.0?true query_id:long next_offset:flags.1?string switch_pm:flags.2?InlineBotSwitchPM switch_webview:flags.3?InlineBotWebView results:Vector<BotInlineResult> cache_time:int users:Vector<User> = messages.BotResults; exportedMessageLink#5dab1af4 link:string html:string = ExportedMessageLink; messageFwdHeader#4e4df4bb flags:# imported:flags.7?true saved_out:flags.11?true from_id:flags.0?Peer from_name:flags.5?string date:int channel_post:flags.2?int post_author:flags.3?string saved_from_peer:flags.4?Peer saved_from_msg_id:flags.4?int saved_from_id:flags.8?Peer saved_from_name:flags.9?string saved_date:flags.10?int psa_type:flags.6?string = MessageFwdHeader; auth.codeTypeSms#72a3158c = auth.CodeType; auth.codeTypeCall#741cd3e3 = auth.CodeType; auth.codeTypeFlashCall#226ccefb = auth.CodeType; auth.codeTypeMissedCall#d61ad6ee = auth.CodeType; auth.codeTypeFragmentSms#6ed998c = auth.CodeType; auth.sentCodeTypeApp#3dbb5986 length:int = auth.SentCodeType; auth.sentCodeTypeSms#c000bba2 length:int = auth.SentCodeType; auth.sentCodeTypeCall#5353e5a7 length:int = auth.SentCodeType; auth.sentCodeTypeFlashCall#ab03c6d9 pattern:string = auth.SentCodeType; auth.sentCodeTypeMissedCall#82006484 prefix:string length:int = auth.SentCodeType; auth.sentCodeTypeEmailCode#f450f59b flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true email_pattern:string length:int reset_available_period:flags.3?int reset_pending_date:flags.4?int = auth.SentCodeType; auth.sentCodeTypeSetUpEmailRequired#a5491dea flags:# apple_signin_allowed:flags.0?true google_signin_allowed:flags.1?true = auth.SentCodeType; auth.sentCodeTypeFragmentSms#d9565c39 url:string length:int = auth.SentCodeType; auth.sentCodeTypeFirebaseSms#9fd736 flags:# nonce:flags.0?bytes play_integrity_project_id:flags.2?long play_integrity_nonce:flags.2?bytes receipt:flags.1?string push_timeout:flags.1?int length:int = auth.SentCodeType; auth.sentCodeTypeSmsWord#a416ac81 flags:# beginning:flags.0?string = auth.SentCodeType; auth.sentCodeTypeSmsPhrase#b37794af flags:# beginning:flags.0?string = auth.SentCodeType; messages.botCallbackAnswer#36585ea4 flags:# alert:flags.1?true has_url:flags.3?true native_ui:flags.4?true message:flags.0?string url:flags.2?string cache_time:int = messages.BotCallbackAnswer; messages.messageEditData#26b5dde6 flags:# caption:flags.0?true = messages.MessageEditData; inputBotInlineMessageID#890c3d89 dc_id:int id:long access_hash:long = InputBotInlineMessageID; inputBotInlineMessageID64#b6d915d7 dc_id:int owner_id:long id:int access_hash:long = InputBotInlineMessageID; inlineBotSwitchPM#3c20629f text:string start_param:string = InlineBotSwitchPM; messages.peerDialogs#3371c354 dialogs:Vector<Dialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> state:updates.State = messages.PeerDialogs; topPeer#edcdc05b peer:Peer rating:double = TopPeer; topPeerCategoryBotsPM#ab661b5b = TopPeerCategory; topPeerCategoryBotsInline#148677e2 = TopPeerCategory; topPeerCategoryCorrespondents#637b7ed = TopPeerCategory; topPeerCategoryGroups#bd17a14a = TopPeerCategory; topPeerCategoryChannels#161d9628 = TopPeerCategory; topPeerCategoryPhoneCalls#1e76a78c = TopPeerCategory; topPeerCategoryForwardUsers#a8406ca9 = TopPeerCategory; topPeerCategoryForwardChats#fbeec0f0 = TopPeerCategory; topPeerCategoryBotsApp#fd9e7bec = TopPeerCategory; topPeerCategoryPeers#fb834291 category:TopPeerCategory count:int peers:Vector<TopPeer> = TopPeerCategoryPeers; contacts.topPeersNotModified#de266ef5 = contacts.TopPeers; contacts.topPeers#70b772a8 categories:Vector<TopPeerCategoryPeers> chats:Vector<Chat> users:Vector<User> = contacts.TopPeers; contacts.topPeersDisabled#b52c939d = contacts.TopPeers; draftMessageEmpty#1b0c841a flags:# date:flags.0?int = DraftMessage; draftMessage#2d65321f flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo message:string entities:flags.3?Vector<MessageEntity> media:flags.5?InputMedia date:int effect:flags.7?long = DraftMessage; messages.featuredStickersNotModified#c6dc0c66 count:int = messages.FeaturedStickers; messages.featuredStickers#be382906 flags:# premium:flags.0?true hash:long count:int sets:Vector<StickerSetCovered> unread:Vector<long> = messages.FeaturedStickers; messages.recentStickersNotModified#b17f890 = messages.RecentStickers; messages.recentStickers#88d37c56 hash:long packs:Vector<StickerPack> stickers:Vector<Document> dates:Vector<int> = messages.RecentStickers; messages.archivedStickers#4fcba9c8 count:int sets:Vector<StickerSetCovered> = messages.ArchivedStickers; messages.stickerSetInstallResultSuccess#38641628 = messages.StickerSetInstallResult; messages.stickerSetInstallResultArchive#35e410a8 sets:Vector<StickerSetCovered> = messages.StickerSetInstallResult; stickerSetCovered#6410a5d2 set:StickerSet cover:Document = StickerSetCovered; stickerSetMultiCovered#3407e51b set:StickerSet covers:Vector<Document> = StickerSetCovered; stickerSetFullCovered#40d13c0e set:StickerSet packs:Vector<StickerPack> keywords:Vector<StickerKeyword> documents:Vector<Document> = StickerSetCovered; stickerSetNoCovered#77b15d1c set:StickerSet = StickerSetCovered; maskCoords#aed6dbb2 n:int x:double y:double zoom:double = MaskCoords; inputStickeredMediaPhoto#4a992157 id:InputPhoto = InputStickeredMedia; inputStickeredMediaDocument#438865b id:InputDocument = InputStickeredMedia; game#bdf9653b flags:# id:long access_hash:long short_name:string title:string description:string photo:Photo document:flags.0?Document = Game; inputGameID#32c3e77 id:long access_hash:long = InputGame; inputGameShortName#c331e80a bot_id:InputUser short_name:string = InputGame; highScore#73a379eb pos:int user_id:long score:int = HighScore; messages.highScores#9a3bfd99 scores:Vector<HighScore> users:Vector<User> = messages.HighScores; textEmpty#dc3d824f = RichText; textPlain#744694e0 text:string = RichText; textBold#6724abc4 text:RichText = RichText; textItalic#d912a59c text:RichText = RichText; textUnderline#c12622c4 text:RichText = RichText; textStrike#9bf8bb95 text:RichText = RichText; textFixed#6c3f19b9 text:RichText = RichText; textUrl#3c2884c1 text:RichText url:string webpage_id:long = RichText; textEmail#de5a0dd6 text:RichText email:string = RichText; textConcat#7e6260d7 texts:Vector<RichText> = RichText; textSubscript#ed6a8504 text:RichText = RichText; textSuperscript#c7fb5e01 text:RichText = RichText; textMarked#34b8621 text:RichText = RichText; textPhone#1ccb966a text:RichText phone:string = RichText; textImage#81ccf4f document_id:long w:int h:int = RichText; textAnchor#35553762 text:RichText name:string = RichText; pageBlockUnsupported#13567e8a = PageBlock; pageBlockTitle#70abc3fd text:RichText = PageBlock; pageBlockSubtitle#8ffa9a1f text:RichText = PageBlock; pageBlockAuthorDate#baafe5e0 author:RichText published_date:int = PageBlock; pageBlockHeader#bfd064ec text:RichText = PageBlock; pageBlockSubheader#f12bb6e1 text:RichText = PageBlock; pageBlockParagraph#467a0766 text:RichText = PageBlock; pageBlockPreformatted#c070d93e text:RichText language:string = PageBlock; pageBlockFooter#48870999 text:RichText = PageBlock; pageBlockDivider#db20b188 = PageBlock; pageBlockAnchor#ce0d37b0 name:string = PageBlock; pageBlockList#e4e88011 items:Vector<PageListItem> = PageBlock; pageBlockBlockquote#263d7c26 text:RichText caption:RichText = PageBlock; pageBlockPullquote#4f4456d3 text:RichText caption:RichText = PageBlock; pageBlockPhoto#1759c560 flags:# photo_id:long caption:PageCaption url:flags.0?string webpage_id:flags.0?long = PageBlock; pageBlockVideo#7c8fe7b6 flags:# autoplay:flags.0?true loop:flags.1?true video_id:long caption:PageCaption = PageBlock; pageBlockCover#39f23300 cover:PageBlock = PageBlock; pageBlockEmbed#a8718dc5 flags:# full_width:flags.0?true allow_scrolling:flags.3?true url:flags.1?string html:flags.2?string poster_photo_id:flags.4?long w:flags.5?int h:flags.5?int caption:PageCaption = PageBlock; pageBlockEmbedPost#f259a80b url:string webpage_id:long author_photo_id:long author:string date:int blocks:Vector<PageBlock> caption:PageCaption = PageBlock; pageBlockCollage#65a0fa4d items:Vector<PageBlock> caption:PageCaption = PageBlock; pageBlockSlideshow#31f9590 items:Vector<PageBlock> caption:PageCaption = PageBlock; pageBlockChannel#ef1751b5 channel:Chat = PageBlock; pageBlockAudio#804361ea audio_id:long caption:PageCaption = PageBlock; pageBlockKicker#1e148390 text:RichText = PageBlock; pageBlockTable#bf4dea82 flags:# bordered:flags.0?true striped:flags.1?true title:RichText rows:Vector<PageTableRow> = PageBlock; pageBlockOrderedList#9a8ae1e1 items:Vector<PageListOrderedItem> = PageBlock; pageBlockDetails#76768bed flags:# open:flags.0?true blocks:Vector<PageBlock> title:RichText = PageBlock; pageBlockRelatedArticles#16115a96 title:RichText articles:Vector<PageRelatedArticle> = PageBlock; pageBlockMap#a44f3ef6 geo:GeoPoint zoom:int w:int h:int caption:PageCaption = PageBlock; phoneCallDiscardReasonMissed#85e42301 = PhoneCallDiscardReason; phoneCallDiscardReasonDisconnect#e095c1a0 = PhoneCallDiscardReason; phoneCallDiscardReasonHangup#57adc690 = PhoneCallDiscardReason; phoneCallDiscardReasonBusy#faf7e8c9 = PhoneCallDiscardReason; phoneCallDiscardReasonAllowGroupCall#afe2b839 encrypted_key:bytes = PhoneCallDiscardReason; dataJSON#7d748d04 data:string = DataJSON; labeledPrice#cb296bf8 label:string amount:long = LabeledPrice; invoice#49ee584 flags:# test:flags.0?true name_requested:flags.1?true phone_requested:flags.2?true email_requested:flags.3?true shipping_address_requested:flags.4?true flexible:flags.5?true phone_to_provider:flags.6?true email_to_provider:flags.7?true recurring:flags.9?true currency:string prices:Vector<LabeledPrice> max_tip_amount:flags.8?long suggested_tip_amounts:flags.8?Vector<long> terms_url:flags.10?string subscription_period:flags.11?int = Invoice; paymentCharge#ea02c27e id:string provider_charge_id:string = PaymentCharge; postAddress#1e8caaeb street_line1:string street_line2:string city:string state:string country_iso2:string post_code:string = PostAddress; paymentRequestedInfo#909c3f94 flags:# name:flags.0?string phone:flags.1?string email:flags.2?string shipping_address:flags.3?PostAddress = PaymentRequestedInfo; paymentSavedCredentialsCard#cdc27a1f id:string title:string = PaymentSavedCredentials; webDocument#1c570ed1 url:string access_hash:long size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument; webDocumentNoProxy#f9c8bcc6 url:string size:int mime_type:string attributes:Vector<DocumentAttribute> = WebDocument; inputWebDocument#9bed434d url:string size:int mime_type:string attributes:Vector<DocumentAttribute> = InputWebDocument; inputWebFileLocation#c239d686 url:string access_hash:long = InputWebFileLocation; inputWebFileGeoPointLocation#9f2221c9 geo_point:InputGeoPoint access_hash:long w:int h:int zoom:int scale:int = InputWebFileLocation; inputWebFileAudioAlbumThumbLocation#f46fe924 flags:# small:flags.2?true document:flags.0?InputDocument title:flags.1?string performer:flags.1?string = InputWebFileLocation; upload.webFile#21e753bc size:int mime_type:string file_type:storage.FileType mtime:int bytes:bytes = upload.WebFile; payments.paymentForm#a0058751 flags:# can_save_credentials:flags.2?true password_missing:flags.3?true form_id:long bot_id:long title:string description:string photo:flags.5?WebDocument invoice:Invoice provider_id:long url:string native_provider:flags.4?string native_params:flags.4?DataJSON additional_methods:flags.6?Vector<PaymentFormMethod> saved_info:flags.0?PaymentRequestedInfo saved_credentials:flags.1?Vector<PaymentSavedCredentials> users:Vector<User> = payments.PaymentForm; payments.paymentFormStars#7bf6b15c flags:# form_id:long bot_id:long title:string description:string photo:flags.5?WebDocument invoice:Invoice users:Vector<User> = payments.PaymentForm; payments.paymentFormStarGift#b425cfe1 form_id:long invoice:Invoice = payments.PaymentForm; payments.validatedRequestedInfo#d1451883 flags:# id:flags.0?string shipping_options:flags.1?Vector<ShippingOption> = payments.ValidatedRequestedInfo; payments.paymentResult#4e5f810d updates:Updates = payments.PaymentResult; payments.paymentVerificationNeeded#d8411139 url:string = payments.PaymentResult; payments.paymentReceipt#70c4fe03 flags:# date:int bot_id:long provider_id:long title:string description:string photo:flags.2?WebDocument invoice:Invoice info:flags.0?PaymentRequestedInfo shipping:flags.1?ShippingOption tip_amount:flags.3?long currency:string total_amount:long credentials_title:string users:Vector<User> = payments.PaymentReceipt; payments.paymentReceiptStars#dabbf83a flags:# date:int bot_id:long title:string description:string photo:flags.2?WebDocument invoice:Invoice currency:string total_amount:long transaction_id:string users:Vector<User> = payments.PaymentReceipt; payments.savedInfo#fb8fe43c flags:# has_saved_credentials:flags.1?true saved_info:flags.0?PaymentRequestedInfo = payments.SavedInfo; inputPaymentCredentialsSaved#c10eb2cf id:string tmp_password:bytes = InputPaymentCredentials; inputPaymentCredentials#3417d728 flags:# save:flags.0?true data:DataJSON = InputPaymentCredentials; inputPaymentCredentialsApplePay#aa1c39f payment_data:DataJSON = InputPaymentCredentials; inputPaymentCredentialsGooglePay#8ac32801 payment_token:DataJSON = InputPaymentCredentials; account.tmpPassword#db64fd34 tmp_password:bytes valid_until:int = account.TmpPassword; shippingOption#b6213cdf id:string title:string prices:Vector<LabeledPrice> = ShippingOption; inputStickerSetItem#32da9e9c flags:# document:InputDocument emoji:string mask_coords:flags.0?MaskCoords keywords:flags.1?string = InputStickerSetItem; inputPhoneCall#1e36fded id:long access_hash:long = InputPhoneCall; phoneCallEmpty#5366c915 id:long = PhoneCall; phoneCallWaiting#eed42858 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long protocol:PhoneCallProtocol receive_date:flags.0?int conference_call:flags.8?InputGroupCall = PhoneCall; phoneCallRequested#45361c63 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_a_hash:bytes protocol:PhoneCallProtocol conference_call:flags.8?InputGroupCall = PhoneCall; phoneCallAccepted#22fd7181 flags:# video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_b:bytes protocol:PhoneCallProtocol conference_call:flags.8?InputGroupCall = PhoneCall; phoneCall#3ba5940c flags:# p2p_allowed:flags.5?true video:flags.6?true id:long access_hash:long date:int admin_id:long participant_id:long g_a_or_b:bytes key_fingerprint:long protocol:PhoneCallProtocol connections:Vector<PhoneConnection> start_date:int custom_parameters:flags.7?DataJSON conference_call:flags.8?InputGroupCall = PhoneCall; phoneCallDiscarded#f9d25503 flags:# need_rating:flags.2?true need_debug:flags.3?true video:flags.6?true id:long reason:flags.0?PhoneCallDiscardReason duration:flags.1?int conference_call:flags.8?InputGroupCall = PhoneCall; phoneConnection#9cc123c7 flags:# tcp:flags.0?true id:long ip:string ipv6:string port:int peer_tag:bytes = PhoneConnection; phoneConnectionWebrtc#635fe375 flags:# turn:flags.0?true stun:flags.1?true id:long ip:string ipv6:string port:int username:string password:string = PhoneConnection; phoneCallProtocol#fc878fc8 flags:# udp_p2p:flags.0?true udp_reflector:flags.1?true min_layer:int max_layer:int library_versions:Vector<string> = PhoneCallProtocol; phone.phoneCall#ec82e140 phone_call:PhoneCall users:Vector<User> = phone.PhoneCall; upload.cdnFileReuploadNeeded#eea8e46e request_token:bytes = upload.CdnFile; upload.cdnFile#a99fca4f bytes:bytes = upload.CdnFile; cdnPublicKey#c982eaba dc_id:int public_key:string = CdnPublicKey; cdnConfig#5725e40a public_keys:Vector<CdnPublicKey> = CdnConfig; langPackString#cad181f6 key:string value:string = LangPackString; langPackStringPluralized#6c47ac9f flags:# key:string zero_value:flags.0?string one_value:flags.1?string two_value:flags.2?string few_value:flags.3?string many_value:flags.4?string other_value:string = LangPackString; langPackStringDeleted#2979eeb2 key:string = LangPackString; langPackDifference#f385c1f6 lang_code:string from_version:int version:int strings:Vector<LangPackString> = LangPackDifference; langPackLanguage#eeca5ce3 flags:# official:flags.0?true rtl:flags.2?true beta:flags.3?true name:string native_name:string lang_code:string base_lang_code:flags.1?string plural_code:string strings_count:int translated_count:int translations_url:string = LangPackLanguage; channelAdminLogEventActionChangeTitle#e6dfb825 prev_value:string new_value:string = ChannelAdminLogEventAction; channelAdminLogEventActionChangeAbout#55188a2e prev_value:string new_value:string = ChannelAdminLogEventAction; channelAdminLogEventActionChangeUsername#6a4afc38 prev_value:string new_value:string = ChannelAdminLogEventAction; channelAdminLogEventActionChangePhoto#434bd2af prev_photo:Photo new_photo:Photo = ChannelAdminLogEventAction; channelAdminLogEventActionToggleInvites#1b7907ae new_value:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionToggleSignatures#26ae0971 new_value:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionUpdatePinned#e9e82c18 message:Message = ChannelAdminLogEventAction; channelAdminLogEventActionEditMessage#709b2405 prev_message:Message new_message:Message = ChannelAdminLogEventAction; channelAdminLogEventActionDeleteMessage#42e047bb message:Message = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantJoin#183040d3 = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantLeave#f89777f2 = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantInvite#e31c34d8 participant:ChannelParticipant = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantToggleBan#e6d83d7e prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantToggleAdmin#d5676710 prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction; channelAdminLogEventActionChangeStickerSet#b1c3caa7 prev_stickerset:InputStickerSet new_stickerset:InputStickerSet = ChannelAdminLogEventAction; channelAdminLogEventActionTogglePreHistoryHidden#5f5c95f1 new_value:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionDefaultBannedRights#2df5fc0a prev_banned_rights:ChatBannedRights new_banned_rights:ChatBannedRights = ChannelAdminLogEventAction; channelAdminLogEventActionStopPoll#8f079643 message:Message = ChannelAdminLogEventAction; channelAdminLogEventActionChangeLinkedChat#50c7ac8 prev_value:long new_value:long = ChannelAdminLogEventAction; channelAdminLogEventActionChangeLocation#e6b76ae prev_value:ChannelLocation new_value:ChannelLocation = ChannelAdminLogEventAction; channelAdminLogEventActionToggleSlowMode#53909779 prev_value:int new_value:int = ChannelAdminLogEventAction; channelAdminLogEventActionStartGroupCall#23209745 call:InputGroupCall = ChannelAdminLogEventAction; channelAdminLogEventActionDiscardGroupCall#db9f9140 call:InputGroupCall = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantMute#f92424d2 participant:GroupCallParticipant = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantUnmute#e64429c0 participant:GroupCallParticipant = ChannelAdminLogEventAction; channelAdminLogEventActionToggleGroupCallSetting#56d6a247 join_muted:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantJoinByInvite#fe9fc158 flags:# via_chatlist:flags.0?true invite:ExportedChatInvite = ChannelAdminLogEventAction; channelAdminLogEventActionExportedInviteDelete#5a50fca4 invite:ExportedChatInvite = ChannelAdminLogEventAction; channelAdminLogEventActionExportedInviteRevoke#410a134e invite:ExportedChatInvite = ChannelAdminLogEventAction; channelAdminLogEventActionExportedInviteEdit#e90ebb59 prev_invite:ExportedChatInvite new_invite:ExportedChatInvite = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantVolume#3e7f6847 participant:GroupCallParticipant = ChannelAdminLogEventAction; channelAdminLogEventActionChangeHistoryTTL#6e941a38 prev_value:int new_value:int = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantJoinByRequest#afb6144a invite:ExportedChatInvite approved_by:long = ChannelAdminLogEventAction; channelAdminLogEventActionToggleNoForwards#cb2ac766 new_value:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionSendMessage#278f2868 message:Message = ChannelAdminLogEventAction; channelAdminLogEventActionChangeAvailableReactions#be4e0ef8 prev_value:ChatReactions new_value:ChatReactions = ChannelAdminLogEventAction; channelAdminLogEventActionChangeUsernames#f04fb3a9 prev_value:Vector<string> new_value:Vector<string> = ChannelAdminLogEventAction; channelAdminLogEventActionToggleForum#2cc6383 new_value:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionCreateTopic#58707d28 topic:ForumTopic = ChannelAdminLogEventAction; channelAdminLogEventActionEditTopic#f06fe208 prev_topic:ForumTopic new_topic:ForumTopic = ChannelAdminLogEventAction; channelAdminLogEventActionDeleteTopic#ae168909 topic:ForumTopic = ChannelAdminLogEventAction; channelAdminLogEventActionPinTopic#5d8d353b flags:# prev_topic:flags.0?ForumTopic new_topic:flags.1?ForumTopic = ChannelAdminLogEventAction; channelAdminLogEventActionToggleAntiSpam#64f36dfc new_value:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionChangePeerColor#5796e780 prev_value:PeerColor new_value:PeerColor = ChannelAdminLogEventAction; channelAdminLogEventActionChangeProfilePeerColor#5e477b25 prev_value:PeerColor new_value:PeerColor = ChannelAdminLogEventAction; channelAdminLogEventActionChangeWallpaper#31bb5d52 prev_value:WallPaper new_value:WallPaper = ChannelAdminLogEventAction; channelAdminLogEventActionChangeEmojiStatus#3ea9feb1 prev_value:EmojiStatus new_value:EmojiStatus = ChannelAdminLogEventAction; channelAdminLogEventActionChangeEmojiStickerSet#46d840ab prev_stickerset:InputStickerSet new_stickerset:InputStickerSet = ChannelAdminLogEventAction; channelAdminLogEventActionToggleSignatureProfiles#60a79c79 new_value:Bool = ChannelAdminLogEventAction; channelAdminLogEventActionParticipantSubExtend#64642db3 prev_participant:ChannelParticipant new_participant:ChannelParticipant = ChannelAdminLogEventAction; channelAdminLogEvent#1fad68cd id:long date:int user_id:long action:ChannelAdminLogEventAction = ChannelAdminLogEvent; channels.adminLogResults#ed8af74d events:Vector<ChannelAdminLogEvent> chats:Vector<Chat> users:Vector<User> = channels.AdminLogResults; channelAdminLogEventsFilter#ea107ae4 flags:# join:flags.0?true leave:flags.1?true invite:flags.2?true ban:flags.3?true unban:flags.4?true kick:flags.5?true unkick:flags.6?true promote:flags.7?true demote:flags.8?true info:flags.9?true settings:flags.10?true pinned:flags.11?true edit:flags.12?true delete:flags.13?true group_call:flags.14?true invites:flags.15?true send:flags.16?true forums:flags.17?true sub_extend:flags.18?true = ChannelAdminLogEventsFilter; popularContact#5ce14175 client_id:long importers:int = PopularContact; messages.favedStickersNotModified#9e8fa6d3 = messages.FavedStickers; messages.favedStickers#2cb51097 hash:long packs:Vector<StickerPack> stickers:Vector<Document> = messages.FavedStickers; recentMeUrlUnknown#46e1d13d url:string = RecentMeUrl; recentMeUrlUser#b92c09e2 url:string user_id:long = RecentMeUrl; recentMeUrlChat#b2da71d2 url:string chat_id:long = RecentMeUrl; recentMeUrlChatInvite#eb49081d url:string chat_invite:ChatInvite = RecentMeUrl; recentMeUrlStickerSet#bc0a57dc url:string set:StickerSetCovered = RecentMeUrl; help.recentMeUrls#e0310d7 urls:Vector<RecentMeUrl> chats:Vector<Chat> users:Vector<User> = help.RecentMeUrls; inputSingleMedia#1cc6e91f flags:# media:InputMedia random_id:long message:string entities:flags.0?Vector<MessageEntity> = InputSingleMedia; webAuthorization#a6f8f452 hash:long bot_id:long domain:string browser:string platform:string date_created:int date_active:int ip:string region:string = WebAuthorization; account.webAuthorizations#ed56c9fc authorizations:Vector<WebAuthorization> users:Vector<User> = account.WebAuthorizations; inputMessageID#a676a322 id:int = InputMessage; inputMessageReplyTo#bad88395 id:int = InputMessage; inputMessagePinned#86872538 = InputMessage; inputMessageCallbackQuery#acfa1a7e id:int query_id:long = InputMessage; inputDialogPeer#fcaafeb7 peer:InputPeer = InputDialogPeer; inputDialogPeerFolder#64600527 folder_id:int = InputDialogPeer; dialogPeer#e56dbf05 peer:Peer = DialogPeer; dialogPeerFolder#514519e2 folder_id:int = DialogPeer; messages.foundStickerSetsNotModified#d54b65d = messages.FoundStickerSets; messages.foundStickerSets#8af09dd2 hash:long sets:Vector<StickerSetCovered> = messages.FoundStickerSets; fileHash#f39b035c offset:long limit:int hash:bytes = FileHash; inputClientProxy#75588b3f address:string port:int = InputClientProxy; help.termsOfServiceUpdateEmpty#e3309f7f expires:int = help.TermsOfServiceUpdate; help.termsOfServiceUpdate#28ecf961 expires:int terms_of_service:help.TermsOfService = help.TermsOfServiceUpdate; inputSecureFileUploaded#3334b0f0 id:long parts:int md5_checksum:string file_hash:bytes secret:bytes = InputSecureFile; inputSecureFile#5367e5be id:long access_hash:long = InputSecureFile; secureFileEmpty#64199744 = SecureFile; secureFile#7d09c27e id:long access_hash:long size:long dc_id:int date:int file_hash:bytes secret:bytes = SecureFile; secureData#8aeabec3 data:bytes data_hash:bytes secret:bytes = SecureData; securePlainPhone#7d6099dd phone:string = SecurePlainData; securePlainEmail#21ec5a5f email:string = SecurePlainData; secureValueTypePersonalDetails#9d2a81e3 = SecureValueType; secureValueTypePassport#3dac6a00 = SecureValueType; secureValueTypeDriverLicense#6e425c4 = SecureValueType; secureValueTypeIdentityCard#a0d0744b = SecureValueType; secureValueTypeInternalPassport#99a48f23 = SecureValueType; secureValueTypeAddress#cbe31e26 = SecureValueType; secureValueTypeUtilityBill#fc36954e = SecureValueType; secureValueTypeBankStatement#89137c0d = SecureValueType; secureValueTypeRentalAgreement#8b883488 = SecureValueType; secureValueTypePassportRegistration#99e3806a = SecureValueType; secureValueTypeTemporaryRegistration#ea02ec33 = SecureValueType; secureValueTypePhone#b320aadb = SecureValueType; secureValueTypeEmail#8e3ca7ee = SecureValueType; secureValue#187fa0ca flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?SecureFile reverse_side:flags.2?SecureFile selfie:flags.3?SecureFile translation:flags.6?Vector<SecureFile> files:flags.4?Vector<SecureFile> plain_data:flags.5?SecurePlainData hash:bytes = SecureValue; inputSecureValue#db21d0a7 flags:# type:SecureValueType data:flags.0?SecureData front_side:flags.1?InputSecureFile reverse_side:flags.2?InputSecureFile selfie:flags.3?InputSecureFile translation:flags.6?Vector<InputSecureFile> files:flags.4?Vector<InputSecureFile> plain_data:flags.5?SecurePlainData = InputSecureValue; secureValueHash#ed1ecdb0 type:SecureValueType hash:bytes = SecureValueHash; secureValueErrorData#e8a40bd9 type:SecureValueType data_hash:bytes field:string text:string = SecureValueError; secureValueErrorFrontSide#be3dfa type:SecureValueType file_hash:bytes text:string = SecureValueError; secureValueErrorReverseSide#868a2aa5 type:SecureValueType file_hash:bytes text:string = SecureValueError; secureValueErrorSelfie#e537ced6 type:SecureValueType file_hash:bytes text:string = SecureValueError; secureValueErrorFile#7a700873 type:SecureValueType file_hash:bytes text:string = SecureValueError; secureValueErrorFiles#666220e9 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError; secureValueError#869d758f type:SecureValueType hash:bytes text:string = SecureValueError; secureValueErrorTranslationFile#a1144770 type:SecureValueType file_hash:bytes text:string = SecureValueError; secureValueErrorTranslationFiles#34636dd8 type:SecureValueType file_hash:Vector<bytes> text:string = SecureValueError; secureCredentialsEncrypted#33f0ea47 data:bytes hash:bytes secret:bytes = SecureCredentialsEncrypted; account.authorizationForm#ad2e1cd8 flags:# required_types:Vector<SecureRequiredType> values:Vector<SecureValue> errors:Vector<SecureValueError> users:Vector<User> privacy_policy_url:flags.0?string = account.AuthorizationForm; account.sentEmailCode#811f854f email_pattern:string length:int = account.SentEmailCode; help.deepLinkInfoEmpty#66afa166 = help.DeepLinkInfo; help.deepLinkInfo#6a4ee832 flags:# update_app:flags.0?true message:string entities:flags.1?Vector<MessageEntity> = help.DeepLinkInfo; savedPhoneContact#1142bd56 phone:string first_name:string last_name:string date:int = SavedContact; account.takeout#4dba4501 id:long = account.Takeout; passwordKdfAlgoUnknown#d45ab096 = PasswordKdfAlgo; passwordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow#3a912d4a salt1:bytes salt2:bytes g:int p:bytes = PasswordKdfAlgo; securePasswordKdfAlgoUnknown#4a8537 = SecurePasswordKdfAlgo; securePasswordKdfAlgoPBKDF2HMACSHA512iter100000#bbf2dda0 salt:bytes = SecurePasswordKdfAlgo; securePasswordKdfAlgoSHA512#86471d92 salt:bytes = SecurePasswordKdfAlgo; secureSecretSettings#1527bcac secure_algo:SecurePasswordKdfAlgo secure_secret:bytes secure_secret_id:long = SecureSecretSettings; inputCheckPasswordEmpty#9880f658 = InputCheckPasswordSRP; inputCheckPasswordSRP#d27ff082 srp_id:long A:bytes M1:bytes = InputCheckPasswordSRP; secureRequiredType#829d99da flags:# native_names:flags.0?true selfie_required:flags.1?true translation_required:flags.2?true type:SecureValueType = SecureRequiredType; secureRequiredTypeOneOf#27477b4 types:Vector<SecureRequiredType> = SecureRequiredType; help.passportConfigNotModified#bfb9f457 = help.PassportConfig; help.passportConfig#a098d6af hash:int countries_langs:DataJSON = help.PassportConfig; inputAppEvent#1d1b1245 time:double type:string peer:long data:JSONValue = InputAppEvent; jsonObjectValue#c0de1bd9 key:string value:JSONValue = JSONObjectValue; jsonNull#3f6d7b68 = JSONValue; jsonBool#c7345e6a value:Bool = JSONValue; jsonNumber#2be0dfa4 value:double = JSONValue; jsonString#b71e767a value:string = JSONValue; jsonArray#f7444763 value:Vector<JSONValue> = JSONValue; jsonObject#99c1d49d value:Vector<JSONObjectValue> = JSONValue; pageTableCell#34566b6a flags:# header:flags.0?true align_center:flags.3?true align_right:flags.4?true valign_middle:flags.5?true valign_bottom:flags.6?true text:flags.7?RichText colspan:flags.1?int rowspan:flags.2?int = PageTableCell; pageTableRow#e0c0c5e5 cells:Vector<PageTableCell> = PageTableRow; pageCaption#6f747657 text:RichText credit:RichText = PageCaption; pageListItemText#b92fb6cd text:RichText = PageListItem; pageListItemBlocks#25e073fc blocks:Vector<PageBlock> = PageListItem; pageListOrderedItemText#5e068047 num:string text:RichText = PageListOrderedItem; pageListOrderedItemBlocks#98dd8936 num:string blocks:Vector<PageBlock> = PageListOrderedItem; pageRelatedArticle#b390dc08 flags:# url:string webpage_id:long title:flags.0?string description:flags.1?string photo_id:flags.2?long author:flags.3?string published_date:flags.4?int = PageRelatedArticle; page#98657f0d flags:# part:flags.0?true rtl:flags.1?true v2:flags.2?true url:string blocks:Vector<PageBlock> photos:Vector<Photo> documents:Vector<Document> views:flags.3?int = Page; help.supportName#8c05f1c9 name:string = help.SupportName; help.userInfoEmpty#f3ae2eed = help.UserInfo; help.userInfo#1eb3758 message:string entities:Vector<MessageEntity> author:string date:int = help.UserInfo; pollAnswer#ff16e2ca text:TextWithEntities option:bytes = PollAnswer; poll#58747131 id:long flags:# closed:flags.0?true public_voters:flags.1?true multiple_choice:flags.2?true quiz:flags.3?true question:TextWithEntities answers:Vector<PollAnswer> close_period:flags.4?int close_date:flags.5?int = Poll; pollAnswerVoters#3b6ddad2 flags:# chosen:flags.0?true correct:flags.1?true option:bytes voters:int = PollAnswerVoters; pollResults#7adf2420 flags:# min:flags.0?true results:flags.1?Vector<PollAnswerVoters> total_voters:flags.2?int recent_voters:flags.3?Vector<Peer> solution:flags.4?string solution_entities:flags.4?Vector<MessageEntity> = PollResults; chatOnlines#f041e250 onlines:int = ChatOnlines; statsURL#47a971e0 url:string = StatsURL; chatAdminRights#5fb224d5 flags:# change_info:flags.0?true post_messages:flags.1?true edit_messages:flags.2?true delete_messages:flags.3?true ban_users:flags.4?true invite_users:flags.5?true pin_messages:flags.7?true add_admins:flags.9?true anonymous:flags.10?true manage_call:flags.11?true other:flags.12?true manage_topics:flags.13?true post_stories:flags.14?true edit_stories:flags.15?true delete_stories:flags.16?true = ChatAdminRights; chatBannedRights#9f120418 flags:# view_messages:flags.0?true send_messages:flags.1?true send_media:flags.2?true send_stickers:flags.3?true send_gifs:flags.4?true send_games:flags.5?true send_inline:flags.6?true embed_links:flags.7?true send_polls:flags.8?true change_info:flags.10?true invite_users:flags.15?true pin_messages:flags.17?true manage_topics:flags.18?true send_photos:flags.19?true send_videos:flags.20?true send_roundvideos:flags.21?true send_audios:flags.22?true send_voices:flags.23?true send_docs:flags.24?true send_plain:flags.25?true until_date:int = ChatBannedRights; inputWallPaper#e630b979 id:long access_hash:long = InputWallPaper; inputWallPaperSlug#72091c80 slug:string = InputWallPaper; inputWallPaperNoFile#967a462e id:long = InputWallPaper; account.wallPapersNotModified#1c199183 = account.WallPapers; account.wallPapers#cdc3858c hash:long wallpapers:Vector<WallPaper> = account.WallPapers; codeSettings#ad253d78 flags:# allow_flashcall:flags.0?true current_number:flags.1?true allow_app_hash:flags.4?true allow_missed_call:flags.5?true allow_firebase:flags.7?true unknown_number:flags.9?true logout_tokens:flags.6?Vector<bytes> token:flags.8?string app_sandbox:flags.8?Bool = CodeSettings; wallPaperSettings#372efcd0 flags:# blur:flags.1?true motion:flags.2?true background_color:flags.0?int second_background_color:flags.4?int third_background_color:flags.5?int fourth_background_color:flags.6?int intensity:flags.3?int rotation:flags.4?int emoticon:flags.7?string = WallPaperSettings; autoDownloadSettings#baa57628 flags:# disabled:flags.0?true video_preload_large:flags.1?true audio_preload_next:flags.2?true phonecalls_less_data:flags.3?true stories_preload:flags.4?true photo_size_max:int video_size_max:long file_size_max:long video_upload_maxbitrate:int small_queue_active_operations_max:int large_queue_active_operations_max:int = AutoDownloadSettings; account.autoDownloadSettings#63cacf26 low:AutoDownloadSettings medium:AutoDownloadSettings high:AutoDownloadSettings = account.AutoDownloadSettings; emojiKeyword#d5b3b9f9 keyword:string emoticons:Vector<string> = EmojiKeyword; emojiKeywordDeleted#236df622 keyword:string emoticons:Vector<string> = EmojiKeyword; emojiKeywordsDifference#5cc761bd lang_code:string from_version:int version:int keywords:Vector<EmojiKeyword> = EmojiKeywordsDifference; emojiURL#a575739d url:string = EmojiURL; emojiLanguage#b3fb5361 lang_code:string = EmojiLanguage; folder#ff544e65 flags:# autofill_new_broadcasts:flags.0?true autofill_public_groups:flags.1?true autofill_new_correspondents:flags.2?true id:int title:string photo:flags.3?ChatPhoto = Folder; inputFolderPeer#fbd2c296 peer:InputPeer folder_id:int = InputFolderPeer; folderPeer#e9baa668 peer:Peer folder_id:int = FolderPeer; messages.searchCounter#e844ebff flags:# inexact:flags.1?true filter:MessagesFilter count:int = messages.SearchCounter; urlAuthResultRequest#92d33a0e flags:# request_write_access:flags.0?true bot:User domain:string = UrlAuthResult; urlAuthResultAccepted#8f8c0e4e url:string = UrlAuthResult; urlAuthResultDefault#a9d6db1f = UrlAuthResult; channelLocationEmpty#bfb5ad8b = ChannelLocation; channelLocation#209b82db geo_point:GeoPoint address:string = ChannelLocation; peerLocated#ca461b5d peer:Peer expires:int distance:int = PeerLocated; peerSelfLocated#f8ec284b expires:int = PeerLocated; restrictionReason#d072acb4 platform:string reason:string text:string = RestrictionReason; inputTheme#3c5693e9 id:long access_hash:long = InputTheme; inputThemeSlug#f5890df1 slug:string = InputTheme; theme#a00e67d6 flags:# creator:flags.0?true default:flags.1?true for_chat:flags.5?true id:long access_hash:long slug:string title:string document:flags.2?Document settings:flags.3?Vector<ThemeSettings> emoticon:flags.6?string installs_count:flags.4?int = Theme; account.themesNotModified#f41eb622 = account.Themes; account.themes#9a3d8c6d hash:long themes:Vector<Theme> = account.Themes; auth.loginToken#629f1980 expires:int token:bytes = auth.LoginToken; auth.loginTokenMigrateTo#68e9916 dc_id:int token:bytes = auth.LoginToken; auth.loginTokenSuccess#390d5c5e authorization:auth.Authorization = auth.LoginToken; account.contentSettings#57e28221 flags:# sensitive_enabled:flags.0?true sensitive_can_change:flags.1?true = account.ContentSettings; messages.inactiveChats#a927fec5 dates:Vector<int> chats:Vector<Chat> users:Vector<User> = messages.InactiveChats; baseThemeClassic#c3a12462 = BaseTheme; baseThemeDay#fbd81688 = BaseTheme; baseThemeNight#b7b31ea8 = BaseTheme; baseThemeTinted#6d5f77ee = BaseTheme; baseThemeArctic#5b11125a = BaseTheme; inputThemeSettings#8fde504f flags:# message_colors_animated:flags.2?true base_theme:BaseTheme accent_color:int outbox_accent_color:flags.3?int message_colors:flags.0?Vector<int> wallpaper:flags.1?InputWallPaper wallpaper_settings:flags.1?WallPaperSettings = InputThemeSettings; themeSettings#fa58b6d4 flags:# message_colors_animated:flags.2?true base_theme:BaseTheme accent_color:int outbox_accent_color:flags.3?int message_colors:flags.0?Vector<int> wallpaper:flags.1?WallPaper = ThemeSettings; webPageAttributeTheme#54b56617 flags:# documents:flags.0?Vector<Document> settings:flags.1?ThemeSettings = WebPageAttribute; webPageAttributeStory#2e94c3e7 flags:# peer:Peer id:int story:flags.0?StoryItem = WebPageAttribute; webPageAttributeStickerSet#50cc03d3 flags:# emojis:flags.0?true text_color:flags.1?true stickers:Vector<Document> = WebPageAttribute; webPageAttributeUniqueStarGift#cf6f6db8 gift:StarGift = WebPageAttribute; messages.votesList#4899484e flags:# count:int votes:Vector<MessagePeerVote> chats:Vector<Chat> users:Vector<User> next_offset:flags.0?string = messages.VotesList; bankCardOpenUrl#f568028a url:string name:string = BankCardOpenUrl; payments.bankCardData#3e24e573 title:string open_urls:Vector<BankCardOpenUrl> = payments.BankCardData; dialogFilter#aa472651 flags:# contacts:flags.0?true non_contacts:flags.1?true groups:flags.2?true broadcasts:flags.3?true bots:flags.4?true exclude_muted:flags.11?true exclude_read:flags.12?true exclude_archived:flags.13?true title_noanimate:flags.28?true id:int title:TextWithEntities emoticon:flags.25?string color:flags.27?int pinned_peers:Vector<InputPeer> include_peers:Vector<InputPeer> exclude_peers:Vector<InputPeer> = DialogFilter; dialogFilterDefault#363293ae = DialogFilter; dialogFilterChatlist#96537bd7 flags:# has_my_invites:flags.26?true title_noanimate:flags.28?true id:int title:TextWithEntities emoticon:flags.25?string color:flags.27?int pinned_peers:Vector<InputPeer> include_peers:Vector<InputPeer> = DialogFilter; dialogFilterSuggested#77744d4a filter:DialogFilter description:string = DialogFilterSuggested; statsDateRangeDays#b637edaf min_date:int max_date:int = StatsDateRangeDays; statsAbsValueAndPrev#cb43acde current:double previous:double = StatsAbsValueAndPrev; statsPercentValue#cbce2fe0 part:double total:double = StatsPercentValue; statsGraphAsync#4a27eb2d token:string = StatsGraph; statsGraphError#bedc9822 error:string = StatsGraph; statsGraph#8ea464b6 flags:# json:DataJSON zoom_token:flags.0?string = StatsGraph; stats.broadcastStats#396ca5fc period:StatsDateRangeDays followers:StatsAbsValueAndPrev views_per_post:StatsAbsValueAndPrev shares_per_post:StatsAbsValueAndPrev reactions_per_post:StatsAbsValueAndPrev views_per_story:StatsAbsValueAndPrev shares_per_story:StatsAbsValueAndPrev reactions_per_story:StatsAbsValueAndPrev enabled_notifications:StatsPercentValue growth_graph:StatsGraph followers_graph:StatsGraph mute_graph:StatsGraph top_hours_graph:StatsGraph interactions_graph:StatsGraph iv_interactions_graph:StatsGraph views_by_source_graph:StatsGraph new_followers_by_source_graph:StatsGraph languages_graph:StatsGraph reactions_by_emotion_graph:StatsGraph story_interactions_graph:StatsGraph story_reactions_by_emotion_graph:StatsGraph recent_posts_interactions:Vector<PostInteractionCounters> = stats.BroadcastStats; help.promoDataEmpty#98f6ac75 expires:int = help.PromoData; help.promoData#8c39793f flags:# proxy:flags.0?true expires:int peer:Peer chats:Vector<Chat> users:Vector<User> psa_type:flags.1?string psa_message:flags.2?string = help.PromoData; videoSize#de33b094 flags:# type:string w:int h:int size:int video_start_ts:flags.0?double = VideoSize; videoSizeEmojiMarkup#f85c413c emoji_id:long background_colors:Vector<int> = VideoSize; videoSizeStickerMarkup#da082fe stickerset:InputStickerSet sticker_id:long background_colors:Vector<int> = VideoSize; statsGroupTopPoster#9d04af9b user_id:long messages:int avg_chars:int = StatsGroupTopPoster; statsGroupTopAdmin#d7584c87 user_id:long deleted:int kicked:int banned:int = StatsGroupTopAdmin; statsGroupTopInviter#535f779d user_id:long invitations:int = StatsGroupTopInviter; stats.megagroupStats#ef7ff916 period:StatsDateRangeDays members:StatsAbsValueAndPrev messages:StatsAbsValueAndPrev viewers:StatsAbsValueAndPrev posters:StatsAbsValueAndPrev growth_graph:StatsGraph members_graph:StatsGraph new_members_by_source_graph:StatsGraph languages_graph:StatsGraph messages_graph:StatsGraph actions_graph:StatsGraph top_hours_graph:StatsGraph weekdays_graph:StatsGraph top_posters:Vector<StatsGroupTopPoster> top_admins:Vector<StatsGroupTopAdmin> top_inviters:Vector<StatsGroupTopInviter> users:Vector<User> = stats.MegagroupStats; globalPrivacySettings#734c4ccb flags:# archive_and_mute_new_noncontact_peers:flags.0?true keep_archived_unmuted:flags.1?true keep_archived_folders:flags.2?true hide_read_marks:flags.3?true new_noncontact_peers_require_premium:flags.4?true = GlobalPrivacySettings; help.countryCode#4203c5ef flags:# country_code:string prefixes:flags.0?Vector<string> patterns:flags.1?Vector<string> = help.CountryCode; help.country#c3878e23 flags:# hidden:flags.0?true iso2:string default_name:string name:flags.1?string country_codes:Vector<help.CountryCode> = help.Country; help.countriesListNotModified#93cc1f32 = help.CountriesList; help.countriesList#87d0759e countries:Vector<help.Country> hash:int = help.CountriesList; messageViews#455b853d flags:# views:flags.0?int forwards:flags.1?int replies:flags.2?MessageReplies = MessageViews; messages.messageViews#b6c4f543 views:Vector<MessageViews> chats:Vector<Chat> users:Vector<User> = messages.MessageViews; messages.discussionMessage#a6341782 flags:# messages:Vector<Message> max_id:flags.0?int read_inbox_max_id:flags.1?int read_outbox_max_id:flags.2?int unread_count:int chats:Vector<Chat> users:Vector<User> = messages.DiscussionMessage; messageReplyHeader#afbc09db flags:# reply_to_scheduled:flags.2?true forum_topic:flags.3?true quote:flags.9?true reply_to_msg_id:flags.4?int reply_to_peer_id:flags.0?Peer reply_from:flags.5?MessageFwdHeader reply_media:flags.8?MessageMedia reply_to_top_id:flags.1?int quote_text:flags.6?string quote_entities:flags.7?Vector<MessageEntity> quote_offset:flags.10?int = MessageReplyHeader; messageReplyStoryHeader#e5af939 peer:Peer story_id:int = MessageReplyHeader; messageReplies#83d60fc2 flags:# comments:flags.0?true replies:int replies_pts:int recent_repliers:flags.1?Vector<Peer> channel_id:flags.0?long max_id:flags.2?int read_max_id:flags.3?int = MessageReplies; peerBlocked#e8fd8014 peer_id:Peer date:int = PeerBlocked; stats.messageStats#7fe91c14 views_graph:StatsGraph reactions_by_emotion_graph:StatsGraph = stats.MessageStats; groupCallDiscarded#7780bcb4 id:long access_hash:long duration:int = GroupCall; groupCall#cdf8d3e3 flags:# join_muted:flags.1?true can_change_join_muted:flags.2?true join_date_asc:flags.6?true schedule_start_subscribed:flags.8?true can_start_video:flags.9?true record_video_active:flags.11?true rtmp_stream:flags.12?true listeners_hidden:flags.13?true id:long access_hash:long participants_count:int title:flags.3?string stream_dc_id:flags.4?int record_start_date:flags.5?int schedule_date:flags.7?int unmuted_video_count:flags.10?int unmuted_video_limit:int version:int conference_from_call:flags.14?long = GroupCall; inputGroupCall#d8aa840f id:long access_hash:long = InputGroupCall; groupCallParticipant#eba636fe flags:# muted:flags.0?true left:flags.1?true can_self_unmute:flags.2?true just_joined:flags.4?true versioned:flags.5?true min:flags.8?true muted_by_you:flags.9?true volume_by_admin:flags.10?true self:flags.12?true video_joined:flags.15?true peer:Peer date:int active_date:flags.3?int source:int volume:flags.7?int about:flags.11?string raise_hand_rating:flags.13?long video:flags.6?GroupCallParticipantVideo presentation:flags.14?GroupCallParticipantVideo = GroupCallParticipant; phone.groupCall#9e727aad call:GroupCall participants:Vector<GroupCallParticipant> participants_next_offset:string chats:Vector<Chat> users:Vector<User> = phone.GroupCall; phone.groupParticipants#f47751b6 count:int participants:Vector<GroupCallParticipant> next_offset:string chats:Vector<Chat> users:Vector<User> version:int = phone.GroupParticipants; inlineQueryPeerTypeSameBotPM#3081ed9d = InlineQueryPeerType; inlineQueryPeerTypePM#833c0fac = InlineQueryPeerType; inlineQueryPeerTypeChat#d766c50a = InlineQueryPeerType; inlineQueryPeerTypeMegagroup#5ec4be43 = InlineQueryPeerType; inlineQueryPeerTypeBroadcast#6334ee9a = InlineQueryPeerType; inlineQueryPeerTypeBotPM#e3b2d0c = InlineQueryPeerType; messages.historyImport#1662af0b id:long = messages.HistoryImport; messages.historyImportParsed#5e0fb7b9 flags:# pm:flags.0?true group:flags.1?true title:flags.2?string = messages.HistoryImportParsed; messages.affectedFoundMessages#ef8d3e6c pts:int pts_count:int offset:int messages:Vector<int> = messages.AffectedFoundMessages; chatInviteImporter#8c5adfd9 flags:# requested:flags.0?true via_chatlist:flags.3?true user_id:long date:int about:flags.2?string approved_by:flags.1?long = ChatInviteImporter; messages.exportedChatInvites#bdc62dcc count:int invites:Vector<ExportedChatInvite> users:Vector<User> = messages.ExportedChatInvites; messages.exportedChatInvite#1871be50 invite:ExportedChatInvite users:Vector<User> = messages.ExportedChatInvite; messages.exportedChatInviteReplaced#222600ef invite:ExportedChatInvite new_invite:ExportedChatInvite users:Vector<User> = messages.ExportedChatInvite; messages.chatInviteImporters#81b6b00a count:int importers:Vector<ChatInviteImporter> users:Vector<User> = messages.ChatInviteImporters; chatAdminWithInvites#f2ecef23 admin_id:long invites_count:int revoked_invites_count:int = ChatAdminWithInvites; messages.chatAdminsWithInvites#b69b72d7 admins:Vector<ChatAdminWithInvites> users:Vector<User> = messages.ChatAdminsWithInvites; messages.checkedHistoryImportPeer#a24de717 confirm_text:string = messages.CheckedHistoryImportPeer; phone.joinAsPeers#afe5623f peers:Vector<Peer> chats:Vector<Chat> users:Vector<User> = phone.JoinAsPeers; phone.exportedGroupCallInvite#204bd158 link:string = phone.ExportedGroupCallInvite; groupCallParticipantVideoSourceGroup#dcb118b7 semantics:string sources:Vector<int> = GroupCallParticipantVideoSourceGroup; groupCallParticipantVideo#67753ac8 flags:# paused:flags.0?true endpoint:string source_groups:Vector<GroupCallParticipantVideoSourceGroup> audio_source:flags.1?int = GroupCallParticipantVideo; stickers.suggestedShortName#85fea03f short_name:string = stickers.SuggestedShortName; botCommandScopeDefault#2f6cb2ab = BotCommandScope; botCommandScopeUsers#3c4f04d8 = BotCommandScope; botCommandScopeChats#6fe1a881 = BotCommandScope; botCommandScopeChatAdmins#b9aa606a = BotCommandScope; botCommandScopePeer#db9d897d peer:InputPeer = BotCommandScope; botCommandScopePeerAdmins#3fd863d1 peer:InputPeer = BotCommandScope; botCommandScopePeerUser#a1321f3 peer:InputPeer user_id:InputUser = BotCommandScope; account.resetPasswordFailedWait#e3779861 retry_date:int = account.ResetPasswordResult; account.resetPasswordRequestedWait#e9effc7d until_date:int = account.ResetPasswordResult; account.resetPasswordOk#e926d63e = account.ResetPasswordResult; sponsoredMessage#4d93a990 flags:# recommended:flags.5?true can_report:flags.12?true random_id:bytes url:string title:string message:string entities:flags.1?Vector<MessageEntity> photo:flags.6?Photo media:flags.14?MessageMedia color:flags.13?PeerColor button_text:string sponsor_info:flags.7?string additional_info:flags.8?string = SponsoredMessage; messages.sponsoredMessages#c9ee1d87 flags:# posts_between:flags.0?int messages:Vector<SponsoredMessage> chats:Vector<Chat> users:Vector<User> = messages.SponsoredMessages; messages.sponsoredMessagesEmpty#1839490f = messages.SponsoredMessages; searchResultsCalendarPeriod#c9b0539f date:int min_msg_id:int max_msg_id:int count:int = SearchResultsCalendarPeriod; messages.searchResultsCalendar#147ee23c flags:# inexact:flags.0?true count:int min_date:int min_msg_id:int offset_id_offset:flags.1?int periods:Vector<SearchResultsCalendarPeriod> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.SearchResultsCalendar; searchResultPosition#7f648b67 msg_id:int date:int offset:int = SearchResultsPosition; messages.searchResultsPositions#53b22baf count:int positions:Vector<SearchResultsPosition> = messages.SearchResultsPositions; channels.sendAsPeers#f496b0c6 peers:Vector<SendAsPeer> chats:Vector<Chat> users:Vector<User> = channels.SendAsPeers; users.userFull#3b6d152e full_user:UserFull chats:Vector<Chat> users:Vector<User> = users.UserFull; messages.peerSettings#6880b94d settings:PeerSettings chats:Vector<Chat> users:Vector<User> = messages.PeerSettings; auth.loggedOut#c3a2835f flags:# future_auth_token:flags.0?bytes = auth.LoggedOut; reactionCount#a3d1cb80 flags:# chosen_order:flags.0?int reaction:Reaction count:int = ReactionCount; messageReactions#a339f0b flags:# min:flags.0?true can_see_list:flags.2?true reactions_as_tags:flags.3?true results:Vector<ReactionCount> recent_reactions:flags.1?Vector<MessagePeerReaction> top_reactors:flags.4?Vector<MessageReactor> = MessageReactions; messages.messageReactionsList#31bd492d flags:# count:int reactions:Vector<MessagePeerReaction> chats:Vector<Chat> users:Vector<User> next_offset:flags.0?string = messages.MessageReactionsList; availableReaction#c077ec01 flags:# inactive:flags.0?true premium:flags.2?true reaction:string title:string static_icon:Document appear_animation:Document select_animation:Document activate_animation:Document effect_animation:Document around_animation:flags.1?Document center_icon:flags.1?Document = AvailableReaction; messages.availableReactionsNotModified#9f071957 = messages.AvailableReactions; messages.availableReactions#768e3aad hash:int reactions:Vector<AvailableReaction> = messages.AvailableReactions; messagePeerReaction#8c79b63c flags:# big:flags.0?true unread:flags.1?true my:flags.2?true peer_id:Peer date:int reaction:Reaction = MessagePeerReaction; groupCallStreamChannel#80eb48af channel:int scale:int last_timestamp_ms:long = GroupCallStreamChannel; phone.groupCallStreamChannels#d0e482b2 channels:Vector<GroupCallStreamChannel> = phone.GroupCallStreamChannels; phone.groupCallStreamRtmpUrl#2dbf3432 url:string key:string = phone.GroupCallStreamRtmpUrl; attachMenuBotIconColor#4576f3f0 name:string color:int = AttachMenuBotIconColor; attachMenuBotIcon#b2a7386b flags:# name:string icon:Document colors:flags.0?Vector<AttachMenuBotIconColor> = AttachMenuBotIcon; attachMenuBot#d90d8dfe flags:# inactive:flags.0?true has_settings:flags.1?true request_write_access:flags.2?true show_in_attach_menu:flags.3?true show_in_side_menu:flags.4?true side_menu_disclaimer_needed:flags.5?true bot_id:long short_name:string peer_types:flags.3?Vector<AttachMenuPeerType> icons:Vector<AttachMenuBotIcon> = AttachMenuBot; attachMenuBotsNotModified#f1d88a5c = AttachMenuBots; attachMenuBots#3c4301c0 hash:long bots:Vector<AttachMenuBot> users:Vector<User> = AttachMenuBots; attachMenuBotsBot#93bf667f bot:AttachMenuBot users:Vector<User> = AttachMenuBotsBot; webViewResultUrl#4d22ff98 flags:# fullsize:flags.1?true fullscreen:flags.2?true query_id:flags.0?long url:string = WebViewResult; webViewMessageSent#c94511c flags:# msg_id:flags.0?InputBotInlineMessageID = WebViewMessageSent; botMenuButtonDefault#7533a588 = BotMenuButton; botMenuButtonCommands#4258c205 = BotMenuButton; botMenuButton#c7b57ce6 text:string url:string = BotMenuButton; account.savedRingtonesNotModified#fbf6e8b1 = account.SavedRingtones; account.savedRingtones#c1e92cc5 hash:long ringtones:Vector<Document> = account.SavedRingtones; notificationSoundDefault#97e8bebe = NotificationSound; notificationSoundNone#6f0c34df = NotificationSound; notificationSoundLocal#830b9ae4 title:string data:string = NotificationSound; notificationSoundRingtone#ff6c8049 id:long = NotificationSound; account.savedRingtone#b7263f6d = account.SavedRingtone; account.savedRingtoneConverted#1f307eb7 document:Document = account.SavedRingtone; attachMenuPeerTypeSameBotPM#7d6be90e = AttachMenuPeerType; attachMenuPeerTypeBotPM#c32bfa1a = AttachMenuPeerType; attachMenuPeerTypePM#f146d31f = AttachMenuPeerType; attachMenuPeerTypeChat#509113f = AttachMenuPeerType; attachMenuPeerTypeBroadcast#7bfbdefc = AttachMenuPeerType; inputInvoiceMessage#c5b56859 peer:InputPeer msg_id:int = InputInvoice; inputInvoiceSlug#c326caef slug:string = InputInvoice; inputInvoicePremiumGiftCode#98986c0d purpose:InputStorePaymentPurpose option:PremiumGiftCodeOption = InputInvoice; inputInvoiceStars#65f00ce3 purpose:InputStorePaymentPurpose = InputInvoice; inputInvoiceChatInviteSubscription#34e793f1 hash:string = InputInvoice; inputInvoiceStarGift#e8625e92 flags:# hide_name:flags.0?true include_upgrade:flags.2?true peer:InputPeer gift_id:long message:flags.1?TextWithEntities = InputInvoice; inputInvoiceStarGiftUpgrade#4d818d5d flags:# keep_original_details:flags.0?true stargift:InputSavedStarGift = InputInvoice; inputInvoiceStarGiftTransfer#4a5f5bd9 stargift:InputSavedStarGift to_id:InputPeer = InputInvoice; payments.exportedInvoice#aed0cbd9 url:string = payments.ExportedInvoice; messages.transcribedAudio#cfb9d957 flags:# pending:flags.0?true transcription_id:long text:string trial_remains_num:flags.1?int trial_remains_until_date:flags.1?int = messages.TranscribedAudio; help.premiumPromo#5334759c status_text:string status_entities:Vector<MessageEntity> video_sections:Vector<string> videos:Vector<Document> period_options:Vector<PremiumSubscriptionOption> users:Vector<User> = help.PremiumPromo; inputStorePaymentPremiumSubscription#a6751e66 flags:# restore:flags.0?true upgrade:flags.1?true = InputStorePaymentPurpose; inputStorePaymentGiftPremium#616f7fe8 user_id:InputUser currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentPremiumGiftCode#fb790393 flags:# users:Vector<InputUser> boost_peer:flags.0?InputPeer currency:string amount:long message:flags.1?TextWithEntities = InputStorePaymentPurpose; inputStorePaymentPremiumGiveaway#160544ca flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true boost_peer:InputPeer additional_peers:flags.1?Vector<InputPeer> countries_iso2:flags.2?Vector<string> prize_description:flags.4?string random_id:long until_date:int currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentStarsTopup#dddd0f56 stars:long currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentStarsGift#1d741ef7 user_id:InputUser stars:long currency:string amount:long = InputStorePaymentPurpose; inputStorePaymentStarsGiveaway#751f08fa flags:# only_new_subscribers:flags.0?true winners_are_visible:flags.3?true stars:long boost_peer:InputPeer additional_peers:flags.1?Vector<InputPeer> countries_iso2:flags.2?Vector<string> prize_description:flags.4?string random_id:long until_date:int currency:string amount:long users:int = InputStorePaymentPurpose; premiumGiftOption#74c34319 flags:# months:int currency:string amount:long bot_url:string store_product:flags.0?string = PremiumGiftOption; paymentFormMethod#88f8f21b url:string title:string = PaymentFormMethod; emojiStatusEmpty#2de11aae = EmojiStatus; emojiStatus#e7ff068a flags:# document_id:long until:flags.0?int = EmojiStatus; emojiStatusCollectible#7184603b flags:# collectible_id:long document_id:long title:string slug:string pattern_document_id:long center_color:int edge_color:int pattern_color:int text_color:int until:flags.0?int = EmojiStatus; inputEmojiStatusCollectible#7141dbf flags:# collectible_id:long until:flags.0?int = EmojiStatus; account.emojiStatusesNotModified#d08ce645 = account.EmojiStatuses; account.emojiStatuses#90c467d1 hash:long statuses:Vector<EmojiStatus> = account.EmojiStatuses; reactionEmpty#79f5d419 = Reaction; reactionEmoji#1b2286b8 emoticon:string = Reaction; reactionCustomEmoji#8935fc73 document_id:long = Reaction; reactionPaid#523da4eb = Reaction; chatReactionsNone#eafc32bc = ChatReactions; chatReactionsAll#52928bca flags:# allow_custom:flags.0?true = ChatReactions; chatReactionsSome#661d4037 reactions:Vector<Reaction> = ChatReactions; messages.reactionsNotModified#b06fdbdf = messages.Reactions; messages.reactions#eafdf716 hash:long reactions:Vector<Reaction> = messages.Reactions; emailVerifyPurposeLoginSetup#4345be73 phone_number:string phone_code_hash:string = EmailVerifyPurpose; emailVerifyPurposeLoginChange#527d22eb = EmailVerifyPurpose; emailVerifyPurposePassport#bbf51685 = EmailVerifyPurpose; emailVerificationCode#922e55a9 code:string = EmailVerification; emailVerificationGoogle#db909ec2 token:string = EmailVerification; emailVerificationApple#96d074fd token:string = EmailVerification; account.emailVerified#2b96cd1b email:string = account.EmailVerified; account.emailVerifiedLogin#e1bb0d61 email:string sent_code:auth.SentCode = account.EmailVerified; premiumSubscriptionOption#5f2d1df2 flags:# current:flags.1?true can_purchase_upgrade:flags.2?true transaction:flags.3?string months:int currency:string amount:long bot_url:string store_product:flags.0?string = PremiumSubscriptionOption; sendAsPeer#b81c7034 flags:# premium_required:flags.0?true peer:Peer = SendAsPeer; messageExtendedMediaPreview#ad628cc8 flags:# w:flags.0?int h:flags.0?int thumb:flags.1?PhotoSize video_duration:flags.2?int = MessageExtendedMedia; messageExtendedMedia#ee479c64 media:MessageMedia = MessageExtendedMedia; stickerKeyword#fcfeb29c document_id:long keyword:Vector<string> = StickerKeyword; username#b4073647 flags:# editable:flags.0?true active:flags.1?true username:string = Username; forumTopicDeleted#23f109b id:int = ForumTopic; forumTopic#71701da9 flags:# my:flags.1?true closed:flags.2?true pinned:flags.3?true short:flags.5?true hidden:flags.6?true id:int date:int title:string icon_color:int icon_emoji_id:flags.0?long top_message:int read_inbox_max_id:int read_outbox_max_id:int unread_count:int unread_mentions_count:int unread_reactions_count:int from_id:Peer notify_settings:PeerNotifySettings draft:flags.4?DraftMessage = ForumTopic; messages.forumTopics#367617d3 flags:# order_by_create_date:flags.0?true count:int topics:Vector<ForumTopic> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> pts:int = messages.ForumTopics; defaultHistoryTTL#43b46b20 period:int = DefaultHistoryTTL; exportedContactToken#41bf109b url:string expires:int = ExportedContactToken; requestPeerTypeUser#5f3b8a00 flags:# bot:flags.0?Bool premium:flags.1?Bool = RequestPeerType; requestPeerTypeChat#c9f06e1b flags:# creator:flags.0?true bot_participant:flags.5?true has_username:flags.3?Bool forum:flags.4?Bool user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights = RequestPeerType; requestPeerTypeBroadcast#339bef6c flags:# creator:flags.0?true has_username:flags.3?Bool user_admin_rights:flags.1?ChatAdminRights bot_admin_rights:flags.2?ChatAdminRights = RequestPeerType; emojiListNotModified#481eadfa = EmojiList; emojiList#7a1e11d1 hash:long document_id:Vector<long> = EmojiList; emojiGroup#7a9abda9 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup; emojiGroupGreeting#80d26cc7 title:string icon_emoji_id:long emoticons:Vector<string> = EmojiGroup; emojiGroupPremium#93bcf34 title:string icon_emoji_id:long = EmojiGroup; messages.emojiGroupsNotModified#6fb4ad87 = messages.EmojiGroups; messages.emojiGroups#881fb94b hash:int groups:Vector<EmojiGroup> = messages.EmojiGroups; textWithEntities#751f3146 text:string entities:Vector<MessageEntity> = TextWithEntities; messages.translateResult#33db32f8 result:Vector<TextWithEntities> = messages.TranslatedText; autoSaveSettings#c84834ce flags:# photos:flags.0?true videos:flags.1?true video_max_size:flags.2?long = AutoSaveSettings; autoSaveException#81602d47 peer:Peer settings:AutoSaveSettings = AutoSaveException; account.autoSaveSettings#4c3e069d users_settings:AutoSaveSettings chats_settings:AutoSaveSettings broadcasts_settings:AutoSaveSettings exceptions:Vector<AutoSaveException> chats:Vector<Chat> users:Vector<User> = account.AutoSaveSettings; help.appConfigNotModified#7cde641d = help.AppConfig; help.appConfig#dd18782e hash:int config:JSONValue = help.AppConfig; inputBotAppID#a920bd7a id:long access_hash:long = InputBotApp; inputBotAppShortName#908c0407 bot_id:InputUser short_name:string = InputBotApp; botAppNotModified#5da674b7 = BotApp; botApp#95fcd1d6 flags:# id:long access_hash:long short_name:string title:string description:string photo:Photo document:flags.0?Document hash:long = BotApp; messages.botApp#eb50adf5 flags:# inactive:flags.0?true request_write_access:flags.1?true has_settings:flags.2?true app:BotApp = messages.BotApp; inlineBotWebView#b57295d5 text:string url:string = InlineBotWebView; readParticipantDate#4a4ff172 user_id:long date:int = ReadParticipantDate; inputChatlistDialogFilter#f3e0da33 filter_id:int = InputChatlist; exportedChatlistInvite#c5181ac flags:# title:string url:string peers:Vector<Peer> = ExportedChatlistInvite; chatlists.exportedChatlistInvite#10e6e3a6 filter:DialogFilter invite:ExportedChatlistInvite = chatlists.ExportedChatlistInvite; chatlists.exportedInvites#10ab6dc7 invites:Vector<ExportedChatlistInvite> chats:Vector<Chat> users:Vector<User> = chatlists.ExportedInvites; chatlists.chatlistInviteAlready#fa87f659 filter_id:int missing_peers:Vector<Peer> already_peers:Vector<Peer> chats:Vector<Chat> users:Vector<User> = chatlists.ChatlistInvite; chatlists.chatlistInvite#f10ece2f flags:# title_noanimate:flags.1?true title:TextWithEntities emoticon:flags.0?string peers:Vector<Peer> chats:Vector<Chat> users:Vector<User> = chatlists.ChatlistInvite; chatlists.chatlistUpdates#93bd878d missing_peers:Vector<Peer> chats:Vector<Chat> users:Vector<User> = chatlists.ChatlistUpdates; bots.botInfo#e8a775b0 name:string about:string description:string = bots.BotInfo; messagePeerVote#b6cc2d5c peer:Peer option:bytes date:int = MessagePeerVote; messagePeerVoteInputOption#74cda504 peer:Peer date:int = MessagePeerVote; messagePeerVoteMultiple#4628f6e6 peer:Peer options:Vector<bytes> date:int = MessagePeerVote; storyViews#8d595cd6 flags:# has_viewers:flags.1?true views_count:int forwards_count:flags.2?int reactions:flags.3?Vector<ReactionCount> reactions_count:flags.4?int recent_viewers:flags.0?Vector<long> = StoryViews; storyItemDeleted#51e6ee4f id:int = StoryItem; storyItemSkipped#ffadc913 flags:# close_friends:flags.8?true id:int date:int expire_date:int = StoryItem; storyItem#79b26a24 flags:# pinned:flags.5?true public:flags.7?true close_friends:flags.8?true min:flags.9?true noforwards:flags.10?true edited:flags.11?true contacts:flags.12?true selected_contacts:flags.13?true out:flags.16?true id:int date:int from_id:flags.18?Peer fwd_from:flags.17?StoryFwdHeader expire_date:int caption:flags.0?string entities:flags.1?Vector<MessageEntity> media:MessageMedia media_areas:flags.14?Vector<MediaArea> privacy:flags.2?Vector<PrivacyRule> views:flags.3?StoryViews sent_reaction:flags.15?Reaction = StoryItem; stories.allStoriesNotModified#1158fe3e flags:# state:string stealth_mode:StoriesStealthMode = stories.AllStories; stories.allStories#6efc5e81 flags:# has_more:flags.0?true count:int state:string peer_stories:Vector<PeerStories> chats:Vector<Chat> users:Vector<User> stealth_mode:StoriesStealthMode = stories.AllStories; stories.stories#63c3dd0a flags:# count:int stories:Vector<StoryItem> pinned_to_top:flags.0?Vector<int> chats:Vector<Chat> users:Vector<User> = stories.Stories; storyView#b0bdeac5 flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true user_id:long date:int reaction:flags.2?Reaction = StoryView; storyViewPublicForward#9083670b flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true message:Message = StoryView; storyViewPublicRepost#bd74cf49 flags:# blocked:flags.0?true blocked_my_stories_from:flags.1?true peer_id:Peer story:StoryItem = StoryView; stories.storyViewsList#59d78fc5 flags:# count:int views_count:int forwards_count:int reactions_count:int views:Vector<StoryView> chats:Vector<Chat> users:Vector<User> next_offset:flags.0?string = stories.StoryViewsList; stories.storyViews#de9eed1d views:Vector<StoryViews> users:Vector<User> = stories.StoryViews; inputReplyToMessage#22c0f6d5 flags:# reply_to_msg_id:int top_msg_id:flags.0?int reply_to_peer_id:flags.1?InputPeer quote_text:flags.2?string quote_entities:flags.3?Vector<MessageEntity> quote_offset:flags.4?int = InputReplyTo; inputReplyToStory#5881323a peer:InputPeer story_id:int = InputReplyTo; exportedStoryLink#3fc9053b link:string = ExportedStoryLink; storiesStealthMode#712e27fd flags:# active_until_date:flags.0?int cooldown_until_date:flags.1?int = StoriesStealthMode; mediaAreaCoordinates#cfc9e002 flags:# x:double y:double w:double h:double rotation:double radius:flags.0?double = MediaAreaCoordinates; mediaAreaVenue#be82db9c coordinates:MediaAreaCoordinates geo:GeoPoint title:string address:string provider:string venue_id:string venue_type:string = MediaArea; inputMediaAreaVenue#b282217f coordinates:MediaAreaCoordinates query_id:long result_id:string = MediaArea; mediaAreaGeoPoint#cad5452d flags:# coordinates:MediaAreaCoordinates geo:GeoPoint address:flags.0?GeoPointAddress = MediaArea; mediaAreaSuggestedReaction#14455871 flags:# dark:flags.0?true flipped:flags.1?true coordinates:MediaAreaCoordinates reaction:Reaction = MediaArea; mediaAreaChannelPost#770416af coordinates:MediaAreaCoordinates channel_id:long msg_id:int = MediaArea; inputMediaAreaChannelPost#2271f2bf coordinates:MediaAreaCoordinates channel:InputChannel msg_id:int = MediaArea; mediaAreaUrl#37381085 coordinates:MediaAreaCoordinates url:string = MediaArea; mediaAreaWeather#49a6549c coordinates:MediaAreaCoordinates emoji:string temperature_c:double color:int = MediaArea; mediaAreaStarGift#5787686d coordinates:MediaAreaCoordinates slug:string = MediaArea; peerStories#9a35e999 flags:# peer:Peer max_read_id:flags.0?int stories:Vector<StoryItem> = PeerStories; stories.peerStories#cae68768 stories:PeerStories chats:Vector<Chat> users:Vector<User> = stories.PeerStories; messages.webPage#fd5e12bd webpage:WebPage chats:Vector<Chat> users:Vector<User> = messages.WebPage; premiumGiftCodeOption#257e962b flags:# users:int months:int store_product:flags.0?string store_quantity:flags.1?int currency:string amount:long = PremiumGiftCodeOption; payments.checkedGiftCode#284a1096 flags:# via_giveaway:flags.2?true from_id:flags.4?Peer giveaway_msg_id:flags.3?int to_id:flags.0?long date:int months:int used_date:flags.1?int chats:Vector<Chat> users:Vector<User> = payments.CheckedGiftCode; payments.giveawayInfo#4367daa0 flags:# participating:flags.0?true preparing_results:flags.3?true start_date:int joined_too_early_date:flags.1?int admin_disallowed_chat_id:flags.2?long disallowed_country:flags.4?string = payments.GiveawayInfo; payments.giveawayInfoResults#e175e66f flags:# winner:flags.0?true refunded:flags.1?true start_date:int gift_code_slug:flags.3?string stars_prize:flags.4?long finish_date:int winners_count:int activated_count:flags.2?int = payments.GiveawayInfo; prepaidGiveaway#b2539d54 id:long months:int quantity:int date:int = PrepaidGiveaway; prepaidStarsGiveaway#9a9d77e0 id:long stars:long quantity:int boosts:int date:int = PrepaidGiveaway; boost#4b3e14d6 flags:# gift:flags.1?true giveaway:flags.2?true unclaimed:flags.3?true id:string user_id:flags.0?long giveaway_msg_id:flags.2?int date:int expires:int used_gift_slug:flags.4?string multiplier:flags.5?int stars:flags.6?long = Boost; premium.boostsList#86f8613c flags:# count:int boosts:Vector<Boost> next_offset:flags.0?string users:Vector<User> = premium.BoostsList; myBoost#c448415c flags:# slot:int peer:flags.0?Peer date:int expires:int cooldown_until_date:flags.1?int = MyBoost; premium.myBoosts#9ae228e2 my_boosts:Vector<MyBoost> chats:Vector<Chat> users:Vector<User> = premium.MyBoosts; premium.boostsStatus#4959427a flags:# my_boost:flags.2?true level:int current_level_boosts:int boosts:int gift_boosts:flags.4?int next_level_boosts:flags.0?int premium_audience:flags.1?StatsPercentValue boost_url:string prepaid_giveaways:flags.3?Vector<PrepaidGiveaway> my_boost_slots:flags.2?Vector<int> = premium.BoostsStatus; storyFwdHeader#b826e150 flags:# modified:flags.3?true from:flags.0?Peer from_name:flags.1?string story_id:flags.2?int = StoryFwdHeader; postInteractionCountersMessage#e7058e7f msg_id:int views:int forwards:int reactions:int = PostInteractionCounters; postInteractionCountersStory#8a480e27 story_id:int views:int forwards:int reactions:int = PostInteractionCounters; stats.storyStats#50cd067c views_graph:StatsGraph reactions_by_emotion_graph:StatsGraph = stats.StoryStats; publicForwardMessage#1f2bf4a message:Message = PublicForward; publicForwardStory#edf3add0 peer:Peer story:StoryItem = PublicForward; stats.publicForwards#93037e20 flags:# count:int forwards:Vector<PublicForward> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = stats.PublicForwards; peerColor#b54b5acf flags:# color:flags.0?int background_emoji_id:flags.1?long = PeerColor; help.peerColorSet#26219a58 colors:Vector<int> = help.PeerColorSet; help.peerColorProfileSet#767d61eb palette_colors:Vector<int> bg_colors:Vector<int> story_colors:Vector<int> = help.PeerColorSet; help.peerColorOption#adec6ebe flags:# hidden:flags.0?true color_id:int colors:flags.1?help.PeerColorSet dark_colors:flags.2?help.PeerColorSet channel_min_level:flags.3?int group_min_level:flags.4?int = help.PeerColorOption; help.peerColorsNotModified#2ba1f5ce = help.PeerColors; help.peerColors#f8ed08 hash:int colors:Vector<help.PeerColorOption> = help.PeerColors; storyReaction#6090d6d5 peer_id:Peer date:int reaction:Reaction = StoryReaction; storyReactionPublicForward#bbab2643 message:Message = StoryReaction; storyReactionPublicRepost#cfcd0f13 peer_id:Peer story:StoryItem = StoryReaction; stories.storyReactionsList#aa5f789c flags:# count:int reactions:Vector<StoryReaction> chats:Vector<Chat> users:Vector<User> next_offset:flags.0?string = stories.StoryReactionsList; savedDialog#bd87cb6c flags:# pinned:flags.2?true peer:Peer top_message:int = SavedDialog; messages.savedDialogs#f83ae221 dialogs:Vector<SavedDialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.SavedDialogs; messages.savedDialogsSlice#44ba9dd9 count:int dialogs:Vector<SavedDialog> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.SavedDialogs; messages.savedDialogsNotModified#c01f6fe8 count:int = messages.SavedDialogs; savedReactionTag#cb6ff828 flags:# reaction:Reaction title:flags.0?string count:int = SavedReactionTag; messages.savedReactionTagsNotModified#889b59ef = messages.SavedReactionTags; messages.savedReactionTags#3259950a tags:Vector<SavedReactionTag> hash:long = messages.SavedReactionTags; outboxReadDate#3bb842ac date:int = OutboxReadDate; smsjobs.eligibleToJoin#dc8b44cf terms_url:string monthly_sent_sms:int = smsjobs.EligibilityToJoin; smsjobs.status#2aee9191 flags:# allow_international:flags.0?true recent_sent:int recent_since:int recent_remains:int total_sent:int total_since:int last_gift_slug:flags.1?string terms_url:string = smsjobs.Status; smsJob#e6a1eeb8 job_id:string phone_number:string text:string = SmsJob; businessWeeklyOpen#120b1ab9 start_minute:int end_minute:int = BusinessWeeklyOpen; businessWorkHours#8c92b098 flags:# open_now:flags.0?true timezone_id:string weekly_open:Vector<BusinessWeeklyOpen> = BusinessWorkHours; businessLocation#ac5c1af7 flags:# geo_point:flags.0?GeoPoint address:string = BusinessLocation; inputBusinessRecipients#6f8b32aa flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector<InputUser> = InputBusinessRecipients; businessRecipients#21108ff7 flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector<long> = BusinessRecipients; businessAwayMessageScheduleAlways#c9b9e2b9 = BusinessAwayMessageSchedule; businessAwayMessageScheduleOutsideWorkHours#c3f2f501 = BusinessAwayMessageSchedule; businessAwayMessageScheduleCustom#cc4d9ecc start_date:int end_date:int = BusinessAwayMessageSchedule; inputBusinessGreetingMessage#194cb3b shortcut_id:int recipients:InputBusinessRecipients no_activity_days:int = InputBusinessGreetingMessage; businessGreetingMessage#e519abab shortcut_id:int recipients:BusinessRecipients no_activity_days:int = BusinessGreetingMessage; inputBusinessAwayMessage#832175e0 flags:# offline_only:flags.0?true shortcut_id:int schedule:BusinessAwayMessageSchedule recipients:InputBusinessRecipients = InputBusinessAwayMessage; businessAwayMessage#ef156a5c flags:# offline_only:flags.0?true shortcut_id:int schedule:BusinessAwayMessageSchedule recipients:BusinessRecipients = BusinessAwayMessage; timezone#ff9289f5 id:string name:string utc_offset:int = Timezone; help.timezonesListNotModified#970708cc = help.TimezonesList; help.timezonesList#7b74ed71 timezones:Vector<Timezone> hash:int = help.TimezonesList; quickReply#697102b shortcut_id:int shortcut:string top_message:int count:int = QuickReply; inputQuickReplyShortcut#24596d41 shortcut:string = InputQuickReplyShortcut; inputQuickReplyShortcutId#1190cf1 shortcut_id:int = InputQuickReplyShortcut; messages.quickReplies#c68d6695 quick_replies:Vector<QuickReply> messages:Vector<Message> chats:Vector<Chat> users:Vector<User> = messages.QuickReplies; messages.quickRepliesNotModified#5f91eb5b = messages.QuickReplies; connectedBot#bd068601 flags:# can_reply:flags.0?true bot_id:long recipients:BusinessBotRecipients = ConnectedBot; account.connectedBots#17d7f87b connected_bots:Vector<ConnectedBot> users:Vector<User> = account.ConnectedBots; messages.dialogFilters#2ad93719 flags:# tags_enabled:flags.0?true filters:Vector<DialogFilter> = messages.DialogFilters; birthday#6c8e1e06 flags:# day:int month:int year:flags.0?int = Birthday; botBusinessConnection#896433b4 flags:# can_reply:flags.0?true disabled:flags.1?true connection_id:string user_id:long dc_id:int date:int = BotBusinessConnection; inputBusinessIntro#9c469cd flags:# title:string description:string sticker:flags.0?InputDocument = InputBusinessIntro; businessIntro#5a0a066d flags:# title:string description:string sticker:flags.0?Document = BusinessIntro; messages.myStickers#faff629d count:int sets:Vector<StickerSetCovered> = messages.MyStickers; inputCollectibleUsername#e39460a9 username:string = InputCollectible; inputCollectiblePhone#a2e214a4 phone:string = InputCollectible; fragment.collectibleInfo#6ebdff91 purchase_date:int currency:string amount:long crypto_currency:string crypto_amount:long url:string = fragment.CollectibleInfo; inputBusinessBotRecipients#c4e5921e flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector<InputUser> exclude_users:flags.6?Vector<InputUser> = InputBusinessBotRecipients; businessBotRecipients#b88cf373 flags:# existing_chats:flags.0?true new_chats:flags.1?true contacts:flags.2?true non_contacts:flags.3?true exclude_selected:flags.5?true users:flags.4?Vector<long> exclude_users:flags.6?Vector<long> = BusinessBotRecipients; contactBirthday#1d998733 contact_id:long birthday:Birthday = ContactBirthday; contacts.contactBirthdays#114ff30d contacts:Vector<ContactBirthday> users:Vector<User> = contacts.ContactBirthdays; missingInvitee#628c9224 flags:# premium_would_allow_invite:flags.0?true premium_required_for_pm:flags.1?true user_id:long = MissingInvitee; messages.invitedUsers#7f5defa6 updates:Updates missing_invitees:Vector<MissingInvitee> = messages.InvitedUsers; inputBusinessChatLink#11679fa7 flags:# message:string entities:flags.0?Vector<MessageEntity> title:flags.1?string = InputBusinessChatLink; businessChatLink#b4ae666f flags:# link:string message:string entities:flags.0?Vector<MessageEntity> title:flags.1?string views:int = BusinessChatLink; account.businessChatLinks#ec43a2d1 links:Vector<BusinessChatLink> chats:Vector<Chat> users:Vector<User> = account.BusinessChatLinks; account.resolvedBusinessChatLinks#9a23af21 flags:# peer:Peer message:string entities:flags.0?Vector<MessageEntity> chats:Vector<Chat> users:Vector<User> = account.ResolvedBusinessChatLinks; requestedPeerUser#d62ff46a flags:# user_id:long first_name:flags.0?string last_name:flags.0?string username:flags.1?string photo:flags.2?Photo = RequestedPeer; requestedPeerChat#7307544f flags:# chat_id:long title:flags.0?string photo:flags.2?Photo = RequestedPeer; requestedPeerChannel#8ba403e4 flags:# channel_id:long title:flags.0?string username:flags.1?string photo:flags.2?Photo = RequestedPeer; sponsoredMessageReportOption#430d3150 text:string option:bytes = SponsoredMessageReportOption; channels.sponsoredMessageReportResultChooseOption#846f9e42 title:string options:Vector<SponsoredMessageReportOption> = channels.SponsoredMessageReportResult; channels.sponsoredMessageReportResultAdsHidden#3e3bcf2f = channels.SponsoredMessageReportResult; channels.sponsoredMessageReportResultReported#ad798849 = channels.SponsoredMessageReportResult; stats.broadcastRevenueStats#5407e297 top_hours_graph:StatsGraph revenue_graph:StatsGraph balances:BroadcastRevenueBalances usd_rate:double = stats.BroadcastRevenueStats; stats.broadcastRevenueWithdrawalUrl#ec659737 url:string = stats.BroadcastRevenueWithdrawalUrl; broadcastRevenueTransactionProceeds#557e2cc4 amount:long from_date:int to_date:int = BroadcastRevenueTransaction; broadcastRevenueTransactionWithdrawal#5a590978 flags:# pending:flags.0?true failed:flags.2?true amount:long date:int provider:string transaction_date:flags.1?int transaction_url:flags.1?string = BroadcastRevenueTransaction; broadcastRevenueTransactionRefund#42d30d2e amount:long date:int provider:string = BroadcastRevenueTransaction; stats.broadcastRevenueTransactions#87158466 count:int transactions:Vector<BroadcastRevenueTransaction> = stats.BroadcastRevenueTransactions; reactionNotificationsFromContacts#bac3a61a = ReactionNotificationsFrom; reactionNotificationsFromAll#4b9e22a0 = ReactionNotificationsFrom; reactionsNotifySettings#56e34970 flags:# messages_notify_from:flags.0?ReactionNotificationsFrom stories_notify_from:flags.1?ReactionNotificationsFrom sound:NotificationSound show_previews:Bool = ReactionsNotifySettings; broadcastRevenueBalances#c3ff71e7 flags:# withdrawal_enabled:flags.0?true current_balance:long available_balance:long overall_revenue:long = BroadcastRevenueBalances; availableEffect#93c3e27e flags:# premium_required:flags.2?true id:long emoticon:string static_icon_id:flags.0?long effect_sticker_id:long effect_animation_id:flags.1?long = AvailableEffect; messages.availableEffectsNotModified#d1ed9a5b = messages.AvailableEffects; messages.availableEffects#bddb616e hash:int effects:Vector<AvailableEffect> documents:Vector<Document> = messages.AvailableEffects; factCheck#b89bfccf flags:# need_check:flags.0?true country:flags.1?string text:flags.1?TextWithEntities hash:long = FactCheck; starsTransactionPeerUnsupported#95f2bfe4 = StarsTransactionPeer; starsTransactionPeerAppStore#b457b375 = StarsTransactionPeer; starsTransactionPeerPlayMarket#7b560a0b = StarsTransactionPeer; starsTransactionPeerPremiumBot#250dbaf8 = StarsTransactionPeer; starsTransactionPeerFragment#e92fd902 = StarsTransactionPeer; starsTransactionPeer#d80da15d peer:Peer = StarsTransactionPeer; starsTransactionPeerAds#60682812 = StarsTransactionPeer; starsTransactionPeerAPI#f9677aad = StarsTransactionPeer; starsTopupOption#bd915c0 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsTopupOption; starsTransaction#64dfc926 flags:# refund:flags.3?true pending:flags.4?true failed:flags.6?true gift:flags.10?true reaction:flags.11?true stargift_upgrade:flags.18?true id:string stars:StarsAmount date:int peer:StarsTransactionPeer title:flags.0?string description:flags.1?string photo:flags.2?WebDocument transaction_date:flags.5?int transaction_url:flags.5?string bot_payload:flags.7?bytes msg_id:flags.8?int extended_media:flags.9?Vector<MessageMedia> subscription_period:flags.12?int giveaway_post_id:flags.13?int stargift:flags.14?StarGift floodskip_number:flags.15?int starref_commission_permille:flags.16?int starref_peer:flags.17?Peer starref_amount:flags.17?StarsAmount = StarsTransaction; payments.starsStatus#6c9ce8ed flags:# balance:StarsAmount subscriptions:flags.1?Vector<StarsSubscription> subscriptions_next_offset:flags.2?string subscriptions_missing_balance:flags.4?long history:flags.3?Vector<StarsTransaction> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = payments.StarsStatus; foundStory#e87acbc0 peer:Peer story:StoryItem = FoundStory; stories.foundStories#e2de7737 flags:# count:int stories:Vector<FoundStory> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = stories.FoundStories; geoPointAddress#de4c5d93 flags:# country_iso2:string state:flags.0?string city:flags.1?string street:flags.2?string = GeoPointAddress; starsRevenueStatus#febe5491 flags:# withdrawal_enabled:flags.0?true current_balance:StarsAmount available_balance:StarsAmount overall_revenue:StarsAmount next_withdrawal_at:flags.1?int = StarsRevenueStatus; payments.starsRevenueStats#c92bb73b revenue_graph:StatsGraph status:StarsRevenueStatus usd_rate:double = payments.StarsRevenueStats; payments.starsRevenueWithdrawalUrl#1dab80b7 url:string = payments.StarsRevenueWithdrawalUrl; payments.starsRevenueAdsAccountUrl#394e7f21 url:string = payments.StarsRevenueAdsAccountUrl; inputStarsTransaction#206ae6d1 flags:# refund:flags.0?true id:string = InputStarsTransaction; starsGiftOption#5e0589f1 flags:# extended:flags.1?true stars:long store_product:flags.0?string currency:string amount:long = StarsGiftOption; bots.popularAppBots#1991b13b flags:# next_offset:flags.0?string users:Vector<User> = bots.PopularAppBots; botPreviewMedia#23e91ba3 date:int media:MessageMedia = BotPreviewMedia; bots.previewInfo#ca71d64 media:Vector<BotPreviewMedia> lang_codes:Vector<string> = bots.PreviewInfo; starsSubscriptionPricing#5416d58 period:int amount:long = StarsSubscriptionPricing; starsSubscription#2e6eab1a flags:# canceled:flags.0?true can_refulfill:flags.1?true missing_balance:flags.2?true bot_canceled:flags.7?true id:string peer:Peer until_date:int pricing:StarsSubscriptionPricing chat_invite_hash:flags.3?string title:flags.4?string photo:flags.5?WebDocument invoice_slug:flags.6?string = StarsSubscription; messageReactor#4ba3a95a flags:# top:flags.0?true my:flags.1?true anonymous:flags.2?true peer_id:flags.3?Peer count:int = MessageReactor; starsGiveawayOption#94ce852a flags:# extended:flags.0?true default:flags.1?true stars:long yearly_boosts:int store_product:flags.2?string currency:string amount:long winners:Vector<StarsGiveawayWinnersOption> = StarsGiveawayOption; starsGiveawayWinnersOption#54236209 flags:# default:flags.0?true users:int per_user_stars:long = StarsGiveawayWinnersOption; starGift#2cc73c8 flags:# limited:flags.0?true sold_out:flags.1?true birthday:flags.2?true id:long sticker:Document stars:long availability_remains:flags.0?int availability_total:flags.0?int convert_stars:long first_sale_date:flags.1?int last_sale_date:flags.1?int upgrade_stars:flags.3?long = StarGift; starGiftUnique#f2fe7e4a flags:# id:long title:string slug:string num:int owner_id:flags.0?Peer owner_name:flags.1?string owner_address:flags.2?string attributes:Vector<StarGiftAttribute> availability_issued:int availability_total:int = StarGift; payments.starGiftsNotModified#a388a368 = payments.StarGifts; payments.starGifts#901689ea hash:int gifts:Vector<StarGift> = payments.StarGifts; messageReportOption#7903e3d9 text:string option:bytes = MessageReportOption; reportResultChooseOption#f0e4e0b6 title:string options:Vector<MessageReportOption> = ReportResult; reportResultAddComment#6f09ac31 flags:# optional:flags.0?true option:bytes = ReportResult; reportResultReported#8db33c4b = ReportResult; messages.botPreparedInlineMessage#8ecf0511 id:string expire_date:int = messages.BotPreparedInlineMessage; messages.preparedInlineMessage#ff57708d query_id:long result:BotInlineResult peer_types:Vector<InlineQueryPeerType> cache_time:int users:Vector<User> = messages.PreparedInlineMessage; botAppSettings#c99b1950 flags:# placeholder_path:flags.0?bytes background_color:flags.1?int background_dark_color:flags.2?int header_color:flags.3?int header_dark_color:flags.4?int = BotAppSettings; starRefProgram#dd0c66f2 flags:# bot_id:long commission_permille:int duration_months:flags.0?int end_date:flags.1?int daily_revenue_per_user:flags.2?StarsAmount = StarRefProgram; connectedBotStarRef#19a13f71 flags:# revoked:flags.1?true url:string date:int bot_id:long commission_permille:int duration_months:flags.0?int participants:long revenue:long = ConnectedBotStarRef; payments.connectedStarRefBots#98d5ea1d count:int connected_bots:Vector<ConnectedBotStarRef> users:Vector<User> = payments.ConnectedStarRefBots; payments.suggestedStarRefBots#b4d5d859 flags:# count:int suggested_bots:Vector<StarRefProgram> users:Vector<User> next_offset:flags.0?string = payments.SuggestedStarRefBots; starsAmount#bbb6b4a3 amount:long nanos:int = StarsAmount; messages.foundStickersNotModified#6010c534 flags:# next_offset:flags.0?int = messages.FoundStickers; messages.foundStickers#82c9e290 flags:# next_offset:flags.0?int hash:long stickers:Vector<Document> = messages.FoundStickers; botVerifierSettings#b0cd6617 flags:# can_modify_custom_description:flags.1?true icon:long company:string custom_description:flags.0?string = BotVerifierSettings; botVerification#f93cd45c bot_id:long icon:long description:string = BotVerification; starGiftAttributeModel#39d99013 name:string document:Document rarity_permille:int = StarGiftAttribute; starGiftAttributePattern#13acff19 name:string document:Document rarity_permille:int = StarGiftAttribute; starGiftAttributeBackdrop#94271762 name:string center_color:int edge_color:int pattern_color:int text_color:int rarity_permille:int = StarGiftAttribute; starGiftAttributeOriginalDetails#e0bff26c flags:# sender_id:flags.0?Peer recipient_id:Peer date:int message:flags.1?TextWithEntities = StarGiftAttribute; payments.starGiftUpgradePreview#167bd90b sample_attributes:Vector<StarGiftAttribute> = payments.StarGiftUpgradePreview; users.users#62d706b8 users:Vector<User> = users.Users; users.usersSlice#315a4974 count:int users:Vector<User> = users.Users; payments.uniqueStarGift#caa2f60b gift:StarGift users:Vector<User> = payments.UniqueStarGift; messages.webPagePreview#b53e8b21 media:MessageMedia users:Vector<User> = messages.WebPagePreview; savedStarGift#6056dba5 flags:# name_hidden:flags.0?true unsaved:flags.5?true refunded:flags.9?true can_upgrade:flags.10?true from_id:flags.1?Peer date:int gift:StarGift message:flags.2?TextWithEntities msg_id:flags.3?int saved_id:flags.11?long convert_stars:flags.4?long upgrade_stars:flags.6?long can_export_at:flags.7?int transfer_stars:flags.8?long = SavedStarGift; payments.savedStarGifts#95f389b1 flags:# count:int chat_notifications_enabled:flags.1?Bool gifts:Vector<SavedStarGift> next_offset:flags.0?string chats:Vector<Chat> users:Vector<User> = payments.SavedStarGifts; inputSavedStarGiftUser#69279795 msg_id:int = InputSavedStarGift; inputSavedStarGiftChat#f101aa7f peer:InputPeer saved_id:long = InputSavedStarGift; payments.starGiftWithdrawalUrl#84aa3a9c url:string = payments.StarGiftWithdrawalUrl; ---functions--- invokeAfterMsg#cb9f372d {X:Type} msg_id:long query:!X = X; invokeAfterMsgs#3dc4b4f0 {X:Type} msg_ids:Vector<long> query:!X = X; initConnection#c1cd5ea9 {X:Type} flags:# api_id:int device_model:string system_version:string app_version:string system_lang_code:string lang_pack:string lang_code:string proxy:flags.0?InputClientProxy params:flags.1?JSONValue query:!X = X; invokeWithLayer#da9b0d0d {X:Type} layer:int query:!X = X; invokeWithoutUpdates#bf9459b7 {X:Type} query:!X = X; invokeWithMessagesRange#365275f2 {X:Type} range:MessageRange query:!X = X; invokeWithTakeout#aca9fd2e {X:Type} takeout_id:long query:!X = X; invokeWithBusinessConnection#dd289f8e {X:Type} connection_id:string query:!X = X; invokeWithGooglePlayIntegrity#1df92984 {X:Type} nonce:string token:string query:!X = X; invokeWithApnsSecret#0dae54f8 {X:Type} nonce:string secret:string query:!X = X; auth.sendCode#a677244f phone_number:string api_id:int api_hash:string settings:CodeSettings = auth.SentCode; auth.signUp#aac7b717 flags:# no_joined_notifications:flags.0?true phone_number:string phone_code_hash:string first_name:string last_name:string = auth.Authorization; auth.signIn#8d52a951 flags:# phone_number:string phone_code_hash:string phone_code:flags.0?string email_verification:flags.1?EmailVerification = auth.Authorization; auth.logOut#3e72ba19 = auth.LoggedOut; auth.resetAuthorizations#9fab0d1a = Bool; auth.exportAuthorization#e5bfffcd dc_id:int = auth.ExportedAuthorization; auth.importAuthorization#a57a7dad id:long bytes:bytes = auth.Authorization; auth.bindTempAuthKey#cdd42a05 perm_auth_key_id:long nonce:long expires_at:int encrypted_message:bytes = Bool; auth.importBotAuthorization#67a3ff2c flags:int api_id:int api_hash:string bot_auth_token:string = auth.Authorization; auth.checkPassword#d18b4d16 password:InputCheckPasswordSRP = auth.Authorization; auth.requestPasswordRecovery#d897bc66 = auth.PasswordRecovery; auth.recoverPassword#37096c70 flags:# code:string new_settings:flags.0?account.PasswordInputSettings = auth.Authorization; auth.resendCode#cae47523 flags:# phone_number:string phone_code_hash:string reason:flags.0?string = auth.SentCode; auth.cancelCode#1f040578 phone_number:string phone_code_hash:string = Bool; auth.dropTempAuthKeys#8e48a188 except_auth_keys:Vector<long> = Bool; auth.exportLoginToken#b7e085fe api_id:int api_hash:string except_ids:Vector<long> = auth.LoginToken; auth.importLoginToken#95ac5ce4 token:bytes = auth.LoginToken; auth.acceptLoginToken#e894ad4d token:bytes = Authorization; auth.checkRecoveryPassword#d36bf79 code:string = Bool; auth.importWebTokenAuthorization#2db873a9 api_id:int api_hash:string web_auth_token:string = auth.Authorization; auth.requestFirebaseSms#8e39261e flags:# phone_number:string phone_code_hash:string safety_net_token:flags.0?string play_integrity_token:flags.2?string ios_push_secret:flags.1?string = Bool; auth.resetLoginEmail#7e960193 phone_number:string phone_code_hash:string = auth.SentCode; auth.reportMissingCode#cb9deff6 phone_number:string phone_code_hash:string mnc:string = Bool; account.registerDevice#ec86017a flags:# no_muted:flags.0?true token_type:int token:string app_sandbox:Bool secret:bytes other_uids:Vector<long> = Bool; account.unregisterDevice#6a0d3206 token_type:int token:string other_uids:Vector<long> = Bool; account.updateNotifySettings#84be5b93 peer:InputNotifyPeer settings:InputPeerNotifySettings = Bool; account.getNotifySettings#12b3ad31 peer:InputNotifyPeer = PeerNotifySettings; account.resetNotifySettings#db7e1747 = Bool; account.updateProfile#78515775 flags:# first_name:flags.0?string last_name:flags.1?string about:flags.2?string = User; account.updateStatus#6628562c offline:Bool = Bool; account.getWallPapers#7967d36 hash:long = account.WallPapers; account.reportPeer#c5ba3d86 peer:InputPeer reason:ReportReason message:string = Bool; account.checkUsername#2714d86c username:string = Bool; account.updateUsername#3e0bdd7c username:string = User; account.getPrivacy#dadbc950 key:InputPrivacyKey = account.PrivacyRules; account.setPrivacy#c9f81ce8 key:InputPrivacyKey rules:Vector<InputPrivacyRule> = account.PrivacyRules; account.deleteAccount#a2c0cf74 flags:# reason:string password:flags.0?InputCheckPasswordSRP = Bool; account.getAccountTTL#8fc711d = AccountDaysTTL; account.setAccountTTL#2442485e ttl:AccountDaysTTL = Bool; account.sendChangePhoneCode#82574ae5 phone_number:string settings:CodeSettings = auth.SentCode; account.changePhone#70c32edb phone_number:string phone_code_hash:string phone_code:string = User; account.updateDeviceLocked#38df3532 period:int = Bool; account.getAuthorizations#e320c158 = account.Authorizations; account.resetAuthorization#df77f3bc hash:long = Bool; account.getPassword#548a30f5 = account.Password; account.getPasswordSettings#9cd4eaf9 password:InputCheckPasswordSRP = account.PasswordSettings; account.updatePasswordSettings#a59b102f password:InputCheckPasswordSRP new_settings:account.PasswordInputSettings = Bool; account.sendConfirmPhoneCode#1b3faa88 hash:string settings:CodeSettings = auth.SentCode; account.confirmPhone#5f2178c3 phone_code_hash:string phone_code:string = Bool; account.getTmpPassword#449e0b51 password:InputCheckPasswordSRP period:int = account.TmpPassword; account.getWebAuthorizations#182e6d6f = account.WebAuthorizations; account.resetWebAuthorization#2d01b9ef hash:long = Bool; account.resetWebAuthorizations#682d2594 = Bool; account.getAllSecureValues#b288bc7d = Vector<SecureValue>; account.getSecureValue#73665bc2 types:Vector<SecureValueType> = Vector<SecureValue>; account.saveSecureValue#899fe31d value:InputSecureValue secure_secret_id:long = SecureValue; account.deleteSecureValue#b880bc4b types:Vector<SecureValueType> = Bool; account.getAuthorizationForm#a929597a bot_id:long scope:string public_key:string = account.AuthorizationForm; account.acceptAuthorization#f3ed4c73 bot_id:long scope:string public_key:string value_hashes:Vector<SecureValueHash> credentials:SecureCredentialsEncrypted = Bool; account.sendVerifyPhoneCode#a5a356f9 phone_number:string settings:CodeSettings = auth.SentCode; account.verifyPhone#4dd3a7f6 phone_number:string phone_code_hash:string phone_code:string = Bool; account.sendVerifyEmailCode#98e037bb purpose:EmailVerifyPurpose email:string = account.SentEmailCode; account.verifyEmail#32da4cf purpose:EmailVerifyPurpose verification:EmailVerification = account.EmailVerified; account.initTakeoutSession#8ef3eab0 flags:# contacts:flags.0?true message_users:flags.1?true message_chats:flags.2?true message_megagroups:flags.3?true message_channels:flags.4?true files:flags.5?true file_max_size:flags.5?long = account.Takeout; account.finishTakeoutSession#1d2652ee flags:# success:flags.0?true = Bool; account.confirmPasswordEmail#8fdf1920 code:string = Bool; account.resendPasswordEmail#7a7f2a15 = Bool; account.cancelPasswordEmail#c1cbd5b6 = Bool; account.getContactSignUpNotification#9f07c728 = Bool; account.setContactSignUpNotification#cff43f61 silent:Bool = Bool; account.getNotifyExceptions#53577479 flags:# compare_sound:flags.1?true compare_stories:flags.2?true peer:flags.0?InputNotifyPeer = Updates; account.getWallPaper#fc8ddbea wallpaper:InputWallPaper = WallPaper; account.uploadWallPaper#e39a8f03 flags:# for_chat:flags.0?true file:InputFile mime_type:string settings:WallPaperSettings = WallPaper; account.saveWallPaper#6c5a5b37 wallpaper:InputWallPaper unsave:Bool settings:WallPaperSettings = Bool; account.installWallPaper#feed5769 wallpaper:InputWallPaper settings:WallPaperSettings = Bool; account.resetWallPapers#bb3b9804 = Bool; account.getAutoDownloadSettings#56da0b3f = account.AutoDownloadSettings; account.saveAutoDownloadSettings#76f36233 flags:# low:flags.0?true high:flags.1?true settings:AutoDownloadSettings = Bool; account.uploadTheme#1c3db333 flags:# file:InputFile thumb:flags.0?InputFile file_name:string mime_type:string = Document; account.createTheme#652e4400 flags:# slug:string title:string document:flags.2?InputDocument settings:flags.3?Vector<InputThemeSettings> = Theme; account.updateTheme#2bf40ccc flags:# format:string theme:InputTheme slug:flags.0?string title:flags.1?string document:flags.2?InputDocument settings:flags.3?Vector<InputThemeSettings> = Theme; account.saveTheme#f257106c theme:InputTheme unsave:Bool = Bool; account.installTheme#c727bb3b flags:# dark:flags.0?true theme:flags.1?InputTheme format:flags.2?string base_theme:flags.3?BaseTheme = Bool; account.getTheme#3a5869ec format:string theme:InputTheme = Theme; account.getThemes#7206e458 format:string hash:long = account.Themes; account.setContentSettings#b574b16b flags:# sensitive_enabled:flags.0?true = Bool; account.getContentSettings#8b9b4dae = account.ContentSettings; account.getMultiWallPapers#65ad71dc wallpapers:Vector<InputWallPaper> = Vector<WallPaper>; account.getGlobalPrivacySettings#eb2b4cf6 = GlobalPrivacySettings; account.setGlobalPrivacySettings#1edaaac2 settings:GlobalPrivacySettings = GlobalPrivacySettings; account.reportProfilePhoto#fa8cc6f5 peer:InputPeer photo_id:InputPhoto reason:ReportReason message:string = Bool; account.resetPassword#9308ce1b = account.ResetPasswordResult; account.declinePasswordReset#4c9409f6 = Bool; account.getChatThemes#d638de89 hash:long = account.Themes; account.setAuthorizationTTL#bf899aa0 authorization_ttl_days:int = Bool; account.changeAuthorizationSettings#40f48462 flags:# confirmed:flags.3?true hash:long encrypted_requests_disabled:flags.0?Bool call_requests_disabled:flags.1?Bool = Bool; account.getSavedRingtones#e1902288 hash:long = account.SavedRingtones; account.saveRingtone#3dea5b03 id:InputDocument unsave:Bool = account.SavedRingtone; account.uploadRingtone#831a83a2 file:InputFile file_name:string mime_type:string = Document; account.updateEmojiStatus#fbd3de6b emoji_status:EmojiStatus = Bool; account.getDefaultEmojiStatuses#d6753386 hash:long = account.EmojiStatuses; account.getRecentEmojiStatuses#f578105 hash:long = account.EmojiStatuses; account.clearRecentEmojiStatuses#18201aae = Bool; account.reorderUsernames#ef500eab order:Vector<string> = Bool; account.toggleUsername#58d6b376 username:string active:Bool = Bool; account.getDefaultProfilePhotoEmojis#e2750328 hash:long = EmojiList; account.getDefaultGroupPhotoEmojis#915860ae hash:long = EmojiList; account.getAutoSaveSettings#adcbbcda = account.AutoSaveSettings; account.saveAutoSaveSettings#d69b8361 flags:# users:flags.0?true chats:flags.1?true broadcasts:flags.2?true peer:flags.3?InputPeer settings:AutoSaveSettings = Bool; account.deleteAutoSaveExceptions#53bc0020 = Bool; account.invalidateSignInCodes#ca8ae8ba codes:Vector<string> = Bool; account.updateColor#7cefa15d flags:# for_profile:flags.1?true color:flags.2?int background_emoji_id:flags.0?long = Bool; account.getDefaultBackgroundEmojis#a60ab9ce hash:long = EmojiList; account.getChannelDefaultEmojiStatuses#7727a7d5 hash:long = account.EmojiStatuses; account.getChannelRestrictedStatusEmojis#35a9e0d5 hash:long = EmojiList; account.updateBusinessWorkHours#4b00e066 flags:# business_work_hours:flags.0?BusinessWorkHours = Bool; account.updateBusinessLocation#9e6b131a flags:# geo_point:flags.1?InputGeoPoint address:flags.0?string = Bool; account.updateBusinessGreetingMessage#66cdafc4 flags:# message:flags.0?InputBusinessGreetingMessage = Bool; account.updateBusinessAwayMessage#a26a7fa5 flags:# message:flags.0?InputBusinessAwayMessage = Bool; account.updateConnectedBot#43d8521d flags:# can_reply:flags.0?true deleted:flags.1?true bot:InputUser recipients:InputBusinessBotRecipients = Updates; account.getConnectedBots#4ea4c80f = account.ConnectedBots; account.getBotBusinessConnection#76a86270 connection_id:string = Updates; account.updateBusinessIntro#a614d034 flags:# intro:flags.0?InputBusinessIntro = Bool; account.toggleConnectedBotPaused#646e1097 peer:InputPeer paused:Bool = Bool; account.disablePeerConnectedBot#5e437ed9 peer:InputPeer = Bool; account.updateBirthday#cc6e0c11 flags:# birthday:flags.0?Birthday = Bool; account.createBusinessChatLink#8851e68e link:InputBusinessChatLink = BusinessChatLink; account.editBusinessChatLink#8c3410af slug:string link:InputBusinessChatLink = BusinessChatLink; account.deleteBusinessChatLink#60073674 slug:string = Bool; account.getBusinessChatLinks#6f70dde1 = account.BusinessChatLinks; account.resolveBusinessChatLink#5492e5ee slug:string = account.ResolvedBusinessChatLinks; account.updatePersonalChannel#d94305e0 channel:InputChannel = Bool; account.toggleSponsoredMessages#b9d9a38d enabled:Bool = Bool; account.getReactionsNotifySettings#6dd654c = ReactionsNotifySettings; account.setReactionsNotifySettings#316ce548 settings:ReactionsNotifySettings = ReactionsNotifySettings; account.getCollectibleEmojiStatuses#2e7b4543 hash:long = account.EmojiStatuses; users.getUsers#d91a548 id:Vector<InputUser> = Vector<User>; users.getFullUser#b60f5918 id:InputUser = users.UserFull; users.setSecureValueErrors#90c894b5 id:InputUser errors:Vector<SecureValueError> = Bool; users.getIsPremiumRequiredToContact#a622aa10 id:Vector<InputUser> = Vector<Bool>; contacts.getContactIDs#7adc669d hash:long = Vector<int>; contacts.getStatuses#c4a353ee = Vector<ContactStatus>; contacts.getContacts#5dd69e12 hash:long = contacts.Contacts; contacts.importContacts#2c800be5 contacts:Vector<InputContact> = contacts.ImportedContacts; contacts.deleteContacts#96a0e00 id:Vector<InputUser> = Updates; contacts.deleteByPhones#1013fd9e phones:Vector<string> = Bool; contacts.block#2e2e8734 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; contacts.unblock#b550d328 flags:# my_stories_from:flags.0?true id:InputPeer = Bool; contacts.getBlocked#9a868f80 flags:# my_stories_from:flags.0?true offset:int limit:int = contacts.Blocked; contacts.search#11f812d8 q:string limit:int = contacts.Found; contacts.resolveUsername#725afbbc flags:# username:string referer:flags.0?string = contacts.ResolvedPeer; contacts.getTopPeers#973478b6 flags:# correspondents:flags.0?true bots_pm:flags.1?true bots_inline:flags.2?true phone_calls:flags.3?true forward_users:flags.4?true forward_chats:flags.5?true groups:flags.10?true channels:flags.15?true bots_app:flags.16?true offset:int limit:int hash:long = contacts.TopPeers; contacts.resetTopPeerRating#1ae373ac category:TopPeerCategory peer:InputPeer = Bool; contacts.resetSaved#879537f1 = Bool; contacts.getSaved#82f1e39f = Vector<SavedContact>; contacts.toggleTopPeers#8514bdda enabled:Bool = Bool; contacts.addContact#e8f463d0 flags:# add_phone_privacy_exception:flags.0?true id:InputUser first_name:string last_name:string phone:string = Updates; contacts.acceptContact#f831a20f id:InputUser = Updates; contacts.getLocated#d348bc44 flags:# background:flags.1?true geo_point:InputGeoPoint self_expires:flags.0?int = Updates; contacts.blockFromReplies#29a8962c flags:# delete_message:flags.0?true delete_history:flags.1?true report_spam:flags.2?true msg_id:int = Updates; contacts.resolvePhone#8af94344 phone:string = contacts.ResolvedPeer; contacts.exportContactToken#f8654027 = ExportedContactToken; contacts.importContactToken#13005788 token:string = User; contacts.editCloseFriends#ba6705f0 id:Vector<long> = Bool; contacts.setBlocked#94c65c76 flags:# my_stories_from:flags.0?true id:Vector<InputPeer> limit:int = Bool; contacts.getBirthdays#daeda864 = contacts.ContactBirthdays; messages.getMessages#63c66506 id:Vector<InputMessage> = messages.Messages; messages.getDialogs#a0f4cb4f flags:# exclude_pinned:flags.0?true folder_id:flags.1?int offset_date:int offset_id:int offset_peer:InputPeer limit:int hash:long = messages.Dialogs; messages.getHistory#4423e6c5 peer:InputPeer offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; messages.search#29ee847a flags:# peer:InputPeer q:string from_id:flags.0?InputPeer saved_peer_id:flags.2?InputPeer saved_reaction:flags.3?Vector<Reaction> top_msg_id:flags.1?int filter:MessagesFilter min_date:int max_date:int offset_id:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; messages.readHistory#e306d3a peer:InputPeer max_id:int = messages.AffectedMessages; messages.deleteHistory#b08f922a flags:# just_clear:flags.0?true revoke:flags.1?true peer:InputPeer max_id:int min_date:flags.2?int max_date:flags.3?int = messages.AffectedHistory; messages.deleteMessages#e58e95d2 flags:# revoke:flags.0?true id:Vector<int> = messages.AffectedMessages; messages.receivedMessages#5a954c0 max_id:int = Vector<ReceivedNotifyMessage>; messages.setTyping#58943ee2 flags:# peer:InputPeer top_msg_id:flags.0?int action:SendMessageAction = Bool; messages.sendMessage#983f9745 flags:# no_webpage:flags.1?true silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates; messages.sendMedia#7852834e flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo media:InputMedia message:string random_id:long reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates; messages.forwardMessages#6d74da08 flags:# silent:flags.5?true background:flags.6?true with_my_score:flags.8?true drop_author:flags.11?true drop_media_captions:flags.12?true noforwards:flags.14?true allow_paid_floodskip:flags.19?true from_peer:InputPeer id:Vector<int> random_id:Vector<long> to_peer:InputPeer top_msg_id:flags.9?int schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut video_timestamp:flags.20?int = Updates; messages.reportSpam#cf1592db peer:InputPeer = Bool; messages.getPeerSettings#efd9a6a2 peer:InputPeer = messages.PeerSettings; messages.report#fc78af9b peer:InputPeer id:Vector<int> option:bytes message:string = ReportResult; messages.getChats#49e9528f id:Vector<long> = messages.Chats; messages.getFullChat#aeb00b34 chat_id:long = messages.ChatFull; messages.editChatTitle#73783ffd chat_id:long title:string = Updates; messages.editChatPhoto#35ddd674 chat_id:long photo:InputChatPhoto = Updates; messages.addChatUser#cbc6d107 chat_id:long user_id:InputUser fwd_limit:int = messages.InvitedUsers; messages.deleteChatUser#a2185cab flags:# revoke_history:flags.0?true chat_id:long user_id:InputUser = Updates; messages.createChat#92ceddd4 flags:# users:Vector<InputUser> title:string ttl_period:flags.0?int = messages.InvitedUsers; messages.getDhConfig#26cf8950 version:int random_length:int = messages.DhConfig; messages.requestEncryption#f64daf43 user_id:InputUser random_id:int g_a:bytes = EncryptedChat; messages.acceptEncryption#3dbc0415 peer:InputEncryptedChat g_b:bytes key_fingerprint:long = EncryptedChat; messages.discardEncryption#f393aea0 flags:# delete_history:flags.0?true chat_id:int = Bool; messages.setEncryptedTyping#791451ed peer:InputEncryptedChat typing:Bool = Bool; messages.readEncryptedHistory#7f4b690a peer:InputEncryptedChat max_date:int = Bool; messages.sendEncrypted#44fa7a15 flags:# silent:flags.0?true peer:InputEncryptedChat random_id:long data:bytes = messages.SentEncryptedMessage; messages.sendEncryptedFile#5559481d flags:# silent:flags.0?true peer:InputEncryptedChat random_id:long data:bytes file:InputEncryptedFile = messages.SentEncryptedMessage; messages.sendEncryptedService#32d439a4 peer:InputEncryptedChat random_id:long data:bytes = messages.SentEncryptedMessage; messages.receivedQueue#55a5bb66 max_qts:int = Vector<long>; messages.reportEncryptedSpam#4b0c8c0f peer:InputEncryptedChat = Bool; messages.readMessageContents#36a73f77 id:Vector<int> = messages.AffectedMessages; messages.getStickers#d5a5d3a1 emoticon:string hash:long = messages.Stickers; messages.getAllStickers#b8a0a1a8 hash:long = messages.AllStickers; messages.getWebPagePreview#570d6f6f flags:# message:string entities:flags.3?Vector<MessageEntity> = messages.WebPagePreview; messages.exportChatInvite#a455de90 flags:# legacy_revoke_permanent:flags.2?true request_needed:flags.3?true peer:InputPeer expire_date:flags.0?int usage_limit:flags.1?int title:flags.4?string subscription_pricing:flags.5?StarsSubscriptionPricing = ExportedChatInvite; messages.checkChatInvite#3eadb1bb hash:string = ChatInvite; messages.importChatInvite#6c50051c hash:string = Updates; messages.getStickerSet#c8a0ec74 stickerset:InputStickerSet hash:int = messages.StickerSet; messages.installStickerSet#c78fe460 stickerset:InputStickerSet archived:Bool = messages.StickerSetInstallResult; messages.uninstallStickerSet#f96e55de stickerset:InputStickerSet = Bool; messages.startBot#e6df7378 bot:InputUser peer:InputPeer random_id:long start_param:string = Updates; messages.getMessagesViews#5784d3e1 peer:InputPeer id:Vector<int> increment:Bool = messages.MessageViews; messages.editChatAdmin#a85bd1c2 chat_id:long user_id:InputUser is_admin:Bool = Bool; messages.migrateChat#a2875319 chat_id:long = Updates; messages.searchGlobal#4bc6589a flags:# broadcasts_only:flags.1?true groups_only:flags.2?true users_only:flags.3?true folder_id:flags.0?int q:string filter:MessagesFilter min_date:int max_date:int offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages; messages.reorderStickerSets#78337739 flags:# masks:flags.0?true emojis:flags.1?true order:Vector<long> = Bool; messages.getDocumentByHash#b1f2061f sha256:bytes size:long mime_type:string = Document; messages.getSavedGifs#5cf09635 hash:long = messages.SavedGifs; messages.saveGif#327a30cb id:InputDocument unsave:Bool = Bool; messages.getInlineBotResults#514e999d flags:# bot:InputUser peer:InputPeer geo_point:flags.0?InputGeoPoint query:string offset:string = messages.BotResults; messages.setInlineBotResults#bb12a419 flags:# gallery:flags.0?true private:flags.1?true query_id:long results:Vector<InputBotInlineResult> cache_time:int next_offset:flags.2?string switch_pm:flags.3?InlineBotSwitchPM switch_webview:flags.4?InlineBotWebView = Bool; messages.sendInlineBotResult#3ebee86a flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true hide_via:flags.11?true peer:InputPeer reply_to:flags.0?InputReplyTo random_id:long query_id:long id:string schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut = Updates; messages.getMessageEditData#fda68d36 peer:InputPeer id:int = messages.MessageEditData; messages.editMessage#dfd14005 flags:# no_webpage:flags.1?true invert_media:flags.16?true peer:InputPeer id:int message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> schedule_date:flags.15?int quick_reply_shortcut_id:flags.17?int = Updates; messages.editInlineBotMessage#83557dba flags:# no_webpage:flags.1?true invert_media:flags.16?true id:InputBotInlineMessageID message:flags.11?string media:flags.14?InputMedia reply_markup:flags.2?ReplyMarkup entities:flags.3?Vector<MessageEntity> = Bool; messages.getBotCallbackAnswer#9342ca07 flags:# game:flags.1?true peer:InputPeer msg_id:int data:flags.0?bytes password:flags.2?InputCheckPasswordSRP = messages.BotCallbackAnswer; messages.setBotCallbackAnswer#d58f130a flags:# alert:flags.1?true query_id:long message:flags.0?string url:flags.2?string cache_time:int = Bool; messages.getPeerDialogs#e470bcfd peers:Vector<InputDialogPeer> = messages.PeerDialogs; messages.saveDraft#d372c5ce flags:# no_webpage:flags.1?true invert_media:flags.6?true reply_to:flags.4?InputReplyTo peer:InputPeer message:string entities:flags.3?Vector<MessageEntity> media:flags.5?InputMedia effect:flags.7?long = Bool; messages.getAllDrafts#6a3f8d65 = Updates; messages.getFeaturedStickers#64780b14 hash:long = messages.FeaturedStickers; messages.readFeaturedStickers#5b118126 id:Vector<long> = Bool; messages.getRecentStickers#9da9403b flags:# attached:flags.0?true hash:long = messages.RecentStickers; messages.saveRecentSticker#392718f8 flags:# attached:flags.0?true id:InputDocument unsave:Bool = Bool; messages.clearRecentStickers#8999602d flags:# attached:flags.0?true = Bool; messages.getArchivedStickers#57f17692 flags:# masks:flags.0?true emojis:flags.1?true offset_id:long limit:int = messages.ArchivedStickers; messages.getMaskStickers#640f82b8 hash:long = messages.AllStickers; messages.getAttachedStickers#cc5b67cc media:InputStickeredMedia = Vector<StickerSetCovered>; messages.setGameScore#8ef8ecc0 flags:# edit_message:flags.0?true force:flags.1?true peer:InputPeer id:int user_id:InputUser score:int = Updates; messages.setInlineGameScore#15ad9f64 flags:# edit_message:flags.0?true force:flags.1?true id:InputBotInlineMessageID user_id:InputUser score:int = Bool; messages.getGameHighScores#e822649d peer:InputPeer id:int user_id:InputUser = messages.HighScores; messages.getInlineGameHighScores#f635e1b id:InputBotInlineMessageID user_id:InputUser = messages.HighScores; messages.getCommonChats#e40ca104 user_id:InputUser max_id:long limit:int = messages.Chats; messages.getWebPage#8d9692a3 url:string hash:int = messages.WebPage; messages.toggleDialogPin#a731e257 flags:# pinned:flags.0?true peer:InputDialogPeer = Bool; messages.reorderPinnedDialogs#3b1adf37 flags:# force:flags.0?true folder_id:int order:Vector<InputDialogPeer> = Bool; messages.getPinnedDialogs#d6b94df2 folder_id:int = messages.PeerDialogs; messages.setBotShippingResults#e5f672fa flags:# query_id:long error:flags.0?string shipping_options:flags.1?Vector<ShippingOption> = Bool; messages.setBotPrecheckoutResults#9c2dd95 flags:# success:flags.1?true query_id:long error:flags.0?string = Bool; messages.uploadMedia#14967978 flags:# business_connection_id:flags.0?string peer:InputPeer media:InputMedia = MessageMedia; messages.sendScreenshotNotification#a1405817 peer:InputPeer reply_to:InputReplyTo random_id:long = Updates; messages.getFavedStickers#4f1aaa9 hash:long = messages.FavedStickers; messages.faveSticker#b9ffc55b id:InputDocument unfave:Bool = Bool; messages.getUnreadMentions#f107e790 flags:# peer:InputPeer top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; messages.readMentions#36e5bf4d flags:# peer:InputPeer top_msg_id:flags.0?int = messages.AffectedHistory; messages.getRecentLocations#702a40e0 peer:InputPeer limit:int hash:long = messages.Messages; messages.sendMultiMedia#37b74355 flags:# silent:flags.5?true background:flags.6?true clear_draft:flags.7?true noforwards:flags.14?true update_stickersets_order:flags.15?true invert_media:flags.16?true allow_paid_floodskip:flags.19?true peer:InputPeer reply_to:flags.0?InputReplyTo multi_media:Vector<InputSingleMedia> schedule_date:flags.10?int send_as:flags.13?InputPeer quick_reply_shortcut:flags.17?InputQuickReplyShortcut effect:flags.18?long = Updates; messages.uploadEncryptedFile#5057c497 peer:InputEncryptedChat file:InputEncryptedFile = EncryptedFile; messages.searchStickerSets#35705b8a flags:# exclude_featured:flags.0?true q:string hash:long = messages.FoundStickerSets; messages.getSplitRanges#1cff7e08 = Vector<MessageRange>; messages.markDialogUnread#c286d98f flags:# unread:flags.0?true peer:InputDialogPeer = Bool; messages.getDialogUnreadMarks#22e24e22 = Vector<DialogPeer>; messages.clearAllDrafts#7e58ee9c = Bool; messages.updatePinnedMessage#d2aaf7ec flags:# silent:flags.0?true unpin:flags.1?true pm_oneside:flags.2?true peer:InputPeer id:int = Updates; messages.sendVote#10ea6184 peer:InputPeer msg_id:int options:Vector<bytes> = Updates; messages.getPollResults#73bb643b peer:InputPeer msg_id:int = Updates; messages.getOnlines#6e2be050 peer:InputPeer = ChatOnlines; messages.editChatAbout#def60797 peer:InputPeer about:string = Bool; messages.editChatDefaultBannedRights#a5866b41 peer:InputPeer banned_rights:ChatBannedRights = Updates; messages.getEmojiKeywords#35a0e062 lang_code:string = EmojiKeywordsDifference; messages.getEmojiKeywordsDifference#1508b6af lang_code:string from_version:int = EmojiKeywordsDifference; messages.getEmojiKeywordsLanguages#4e9963b2 lang_codes:Vector<string> = Vector<EmojiLanguage>; messages.getEmojiURL#d5b10c26 lang_code:string = EmojiURL; messages.getSearchCounters#1bbcf300 flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer top_msg_id:flags.0?int filters:Vector<MessagesFilter> = Vector<messages.SearchCounter>; messages.requestUrlAuth#198fb446 flags:# peer:flags.1?InputPeer msg_id:flags.1?int button_id:flags.1?int url:flags.2?string = UrlAuthResult; messages.acceptUrlAuth#b12c7125 flags:# write_allowed:flags.0?true peer:flags.1?InputPeer msg_id:flags.1?int button_id:flags.1?int url:flags.2?string = UrlAuthResult; messages.hidePeerSettingsBar#4facb138 peer:InputPeer = Bool; messages.getScheduledHistory#f516760b peer:InputPeer hash:long = messages.Messages; messages.getScheduledMessages#bdbb0464 peer:InputPeer id:Vector<int> = messages.Messages; messages.sendScheduledMessages#bd38850a peer:InputPeer id:Vector<int> = Updates; messages.deleteScheduledMessages#59ae2b16 peer:InputPeer id:Vector<int> = Updates; messages.getPollVotes#b86e380e flags:# peer:InputPeer id:int option:flags.0?bytes offset:flags.1?string limit:int = messages.VotesList; messages.toggleStickerSets#b5052fea flags:# uninstall:flags.0?true archive:flags.1?true unarchive:flags.2?true stickersets:Vector<InputStickerSet> = Bool; messages.getDialogFilters#efd48c89 = messages.DialogFilters; messages.getSuggestedDialogFilters#a29cd42c = Vector<DialogFilterSuggested>; messages.updateDialogFilter#1ad4a04a flags:# id:int filter:flags.0?DialogFilter = Bool; messages.updateDialogFiltersOrder#c563c1e4 order:Vector<int> = Bool; messages.getOldFeaturedStickers#7ed094a1 offset:int limit:int hash:long = messages.FeaturedStickers; messages.getReplies#22ddd30c peer:InputPeer msg_id:int offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; messages.getDiscussionMessage#446972fd peer:InputPeer msg_id:int = messages.DiscussionMessage; messages.readDiscussion#f731a9f4 peer:InputPeer msg_id:int read_max_id:int = Bool; messages.unpinAllMessages#ee22b9a8 flags:# peer:InputPeer top_msg_id:flags.0?int = messages.AffectedHistory; messages.deleteChat#5bd0ee50 chat_id:long = Bool; messages.deletePhoneCallHistory#f9cbe409 flags:# revoke:flags.0?true = messages.AffectedFoundMessages; messages.checkHistoryImport#43fe19f3 import_head:string = messages.HistoryImportParsed; messages.initHistoryImport#34090c3b peer:InputPeer file:InputFile media_count:int = messages.HistoryImport; messages.uploadImportedMedia#2a862092 peer:InputPeer import_id:long file_name:string media:InputMedia = MessageMedia; messages.startHistoryImport#b43df344 peer:InputPeer import_id:long = Bool; messages.getExportedChatInvites#a2b5a3f6 flags:# revoked:flags.3?true peer:InputPeer admin_id:InputUser offset_date:flags.2?int offset_link:flags.2?string limit:int = messages.ExportedChatInvites; messages.getExportedChatInvite#73746f5c peer:InputPeer link:string = messages.ExportedChatInvite; messages.editExportedChatInvite#bdca2f75 flags:# revoked:flags.2?true peer:InputPeer link:string expire_date:flags.0?int usage_limit:flags.1?int request_needed:flags.3?Bool title:flags.4?string = messages.ExportedChatInvite; messages.deleteRevokedExportedChatInvites#56987bd5 peer:InputPeer admin_id:InputUser = Bool; messages.deleteExportedChatInvite#d464a42b peer:InputPeer link:string = Bool; messages.getAdminsWithInvites#3920e6ef peer:InputPeer = messages.ChatAdminsWithInvites; messages.getChatInviteImporters#df04dd4e flags:# requested:flags.0?true subscription_expired:flags.3?true peer:InputPeer link:flags.1?string q:flags.2?string offset_date:int offset_user:InputUser limit:int = messages.ChatInviteImporters; messages.setHistoryTTL#b80e5fe4 peer:InputPeer period:int = Updates; messages.checkHistoryImportPeer#5dc60f03 peer:InputPeer = messages.CheckedHistoryImportPeer; messages.setChatTheme#e63be13f peer:InputPeer emoticon:string = Updates; messages.getMessageReadParticipants#31c1c44f peer:InputPeer msg_id:int = Vector<ReadParticipantDate>; messages.getSearchResultsCalendar#6aa3f6bd flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer filter:MessagesFilter offset_id:int offset_date:int = messages.SearchResultsCalendar; messages.getSearchResultsPositions#9c7f2f10 flags:# peer:InputPeer saved_peer_id:flags.2?InputPeer filter:MessagesFilter offset_id:int limit:int = messages.SearchResultsPositions; messages.hideChatJoinRequest#7fe7e815 flags:# approved:flags.0?true peer:InputPeer user_id:InputUser = Updates; messages.hideAllChatJoinRequests#e085f4ea flags:# approved:flags.0?true peer:InputPeer link:flags.1?string = Updates; messages.toggleNoForwards#b11eafa2 peer:InputPeer enabled:Bool = Updates; messages.saveDefaultSendAs#ccfddf96 peer:InputPeer send_as:InputPeer = Bool; messages.sendReaction#d30d78d4 flags:# big:flags.1?true add_to_recent:flags.2?true peer:InputPeer msg_id:int reaction:flags.0?Vector<Reaction> = Updates; messages.getMessagesReactions#8bba90e6 peer:InputPeer id:Vector<int> = Updates; messages.getMessageReactionsList#461b3f48 flags:# peer:InputPeer id:int reaction:flags.0?Reaction offset:flags.1?string limit:int = messages.MessageReactionsList; messages.setChatAvailableReactions#864b2581 flags:# peer:InputPeer available_reactions:ChatReactions reactions_limit:flags.0?int paid_enabled:flags.1?Bool = Updates; messages.getAvailableReactions#18dea0ac hash:int = messages.AvailableReactions; messages.setDefaultReaction#4f47a016 reaction:Reaction = Bool; messages.translateText#63183030 flags:# peer:flags.0?InputPeer id:flags.0?Vector<int> text:flags.1?Vector<TextWithEntities> to_lang:string = messages.TranslatedText; messages.getUnreadReactions#3223495b flags:# peer:InputPeer top_msg_id:flags.0?int offset_id:int add_offset:int limit:int max_id:int min_id:int = messages.Messages; messages.readReactions#54aa7f8e flags:# peer:InputPeer top_msg_id:flags.0?int = messages.AffectedHistory; messages.searchSentMedia#107e31a0 q:string filter:MessagesFilter limit:int = messages.Messages; messages.getAttachMenuBots#16fcc2cb hash:long = AttachMenuBots; messages.getAttachMenuBot#77216192 bot:InputUser = AttachMenuBotsBot; messages.toggleBotInAttachMenu#69f59d69 flags:# write_allowed:flags.0?true bot:InputUser enabled:Bool = Bool; messages.requestWebView#269dc2c1 flags:# from_bot_menu:flags.4?true silent:flags.5?true compact:flags.7?true fullscreen:flags.8?true peer:InputPeer bot:InputUser url:flags.1?string start_param:flags.3?string theme_params:flags.2?DataJSON platform:string reply_to:flags.0?InputReplyTo send_as:flags.13?InputPeer = WebViewResult; messages.prolongWebView#b0d81a83 flags:# silent:flags.5?true peer:InputPeer bot:InputUser query_id:long reply_to:flags.0?InputReplyTo send_as:flags.13?InputPeer = Bool; messages.requestSimpleWebView#413a3e73 flags:# from_switch_webview:flags.1?true from_side_menu:flags.2?true compact:flags.7?true fullscreen:flags.8?true bot:InputUser url:flags.3?string start_param:flags.4?string theme_params:flags.0?DataJSON platform:string = WebViewResult; messages.sendWebViewResultMessage#a4314f5 bot_query_id:string result:InputBotInlineResult = WebViewMessageSent; messages.sendWebViewData#dc0242c8 bot:InputUser random_id:long button_text:string data:string = Updates; messages.transcribeAudio#269e9a49 peer:InputPeer msg_id:int = messages.TranscribedAudio; messages.rateTranscribedAudio#7f1d072f peer:InputPeer msg_id:int transcription_id:long good:Bool = Bool; messages.getCustomEmojiDocuments#d9ab0f54 document_id:Vector<long> = Vector<Document>; messages.getEmojiStickers#fbfca18f hash:long = messages.AllStickers; messages.getFeaturedEmojiStickers#ecf6736 hash:long = messages.FeaturedStickers; messages.reportReaction#3f64c076 peer:InputPeer id:int reaction_peer:InputPeer = Bool; messages.getTopReactions#bb8125ba limit:int hash:long = messages.Reactions; messages.getRecentReactions#39461db2 limit:int hash:long = messages.Reactions; messages.clearRecentReactions#9dfeefb4 = Bool; messages.getExtendedMedia#84f80814 peer:InputPeer id:Vector<int> = Updates; messages.setDefaultHistoryTTL#9eb51445 period:int = Bool; messages.getDefaultHistoryTTL#658b7188 = DefaultHistoryTTL; messages.sendBotRequestedPeer#91b2d060 peer:InputPeer msg_id:int button_id:int requested_peers:Vector<InputPeer> = Updates; messages.getEmojiGroups#7488ce5b hash:int = messages.EmojiGroups; messages.getEmojiStatusGroups#2ecd56cd hash:int = messages.EmojiGroups; messages.getEmojiProfilePhotoGroups#21a548f3 hash:int = messages.EmojiGroups; messages.searchCustomEmoji#2c11c0d7 emoticon:string hash:long = EmojiList; messages.togglePeerTranslations#e47cb579 flags:# disabled:flags.0?true peer:InputPeer = Bool; messages.getBotApp#34fdc5c3 app:InputBotApp hash:long = messages.BotApp; messages.requestAppWebView#53618bce flags:# write_allowed:flags.0?true compact:flags.7?true fullscreen:flags.8?true peer:InputPeer app:InputBotApp start_param:flags.1?string theme_params:flags.2?DataJSON platform:string = WebViewResult; messages.setChatWallPaper#8ffacae1 flags:# for_both:flags.3?true revert:flags.4?true peer:InputPeer wallpaper:flags.0?InputWallPaper settings:flags.2?WallPaperSettings id:flags.1?int = Updates; messages.searchEmojiStickerSets#92b4494c flags:# exclude_featured:flags.0?true q:string hash:long = messages.FoundStickerSets; messages.getSavedDialogs#5381d21a flags:# exclude_pinned:flags.0?true offset_date:int offset_id:int offset_peer:InputPeer limit:int hash:long = messages.SavedDialogs; messages.getSavedHistory#3d9a414d peer:InputPeer offset_id:int offset_date:int add_offset:int limit:int max_id:int min_id:int hash:long = messages.Messages; messages.deleteSavedHistory#6e98102b flags:# peer:InputPeer max_id:int min_date:flags.2?int max_date:flags.3?int = messages.AffectedHistory; messages.getPinnedSavedDialogs#d63d94e0 = messages.SavedDialogs; messages.toggleSavedDialogPin#ac81bbde flags:# pinned:flags.0?true peer:InputDialogPeer = Bool; messages.reorderPinnedSavedDialogs#8b716587 flags:# force:flags.0?true order:Vector<InputDialogPeer> = Bool; messages.getSavedReactionTags#3637e05b flags:# peer:flags.0?InputPeer hash:long = messages.SavedReactionTags; messages.updateSavedReactionTag#60297dec flags:# reaction:Reaction title:flags.0?string = Bool; messages.getDefaultTagReactions#bdf93428 hash:long = messages.Reactions; messages.getOutboxReadDate#8c4bfe5d peer:InputPeer msg_id:int = OutboxReadDate; messages.getQuickReplies#d483f2a8 hash:long = messages.QuickReplies; messages.reorderQuickReplies#60331907 order:Vector<int> = Bool; messages.checkQuickReplyShortcut#f1d0fbd3 shortcut:string = Bool; messages.editQuickReplyShortcut#5c003cef shortcut_id:int shortcut:string = Bool; messages.deleteQuickReplyShortcut#3cc04740 shortcut_id:int = Bool; messages.getQuickReplyMessages#94a495c3 flags:# shortcut_id:int id:flags.0?Vector<int> hash:long = messages.Messages; messages.sendQuickReplyMessages#6c750de1 peer:InputPeer shortcut_id:int id:Vector<int> random_id:Vector<long> = Updates; messages.deleteQuickReplyMessages#e105e910 shortcut_id:int id:Vector<int> = Updates; messages.toggleDialogFilterTags#fd2dda49 enabled:Bool = Bool; messages.getMyStickers#d0b5e1fc offset_id:long limit:int = messages.MyStickers; messages.getEmojiStickerGroups#1dd840f5 hash:int = messages.EmojiGroups; messages.getAvailableEffects#dea20a39 hash:int = messages.AvailableEffects; messages.editFactCheck#589ee75 peer:InputPeer msg_id:int text:TextWithEntities = Updates; messages.deleteFactCheck#d1da940c peer:InputPeer msg_id:int = Updates; messages.getFactCheck#b9cdc5ee peer:InputPeer msg_id:Vector<int> = Vector<FactCheck>; messages.requestMainWebView#c9e01e7b flags:# compact:flags.7?true fullscreen:flags.8?true peer:InputPeer bot:InputUser start_param:flags.1?string theme_params:flags.0?DataJSON platform:string = WebViewResult; messages.sendPaidReaction#9dd6a67b flags:# peer:InputPeer msg_id:int count:int random_id:long private:flags.0?Bool = Updates; messages.togglePaidReactionPrivacy#849ad397 peer:InputPeer msg_id:int private:Bool = Bool; messages.getPaidReactionPrivacy#472455aa = Updates; messages.viewSponsoredMessage#673ad8f1 peer:InputPeer random_id:bytes = Bool; messages.clickSponsoredMessage#f093465 flags:# media:flags.0?true fullscreen:flags.1?true peer:InputPeer random_id:bytes = Bool; messages.reportSponsoredMessage#1af3dbb8 peer:InputPeer random_id:bytes option:bytes = channels.SponsoredMessageReportResult; messages.getSponsoredMessages#9bd2f439 peer:InputPeer = messages.SponsoredMessages; messages.savePreparedInlineMessage#f21f7f2f flags:# result:InputBotInlineResult user_id:InputUser peer_types:flags.0?Vector<InlineQueryPeerType> = messages.BotPreparedInlineMessage; messages.getPreparedInlineMessage#857ebdb8 bot:InputUser id:string = messages.PreparedInlineMessage; messages.searchStickers#29b1c66a flags:# emojis:flags.0?true q:string emoticon:string lang_code:Vector<string> offset:int limit:int hash:long = messages.FoundStickers; messages.reportMessagesDelivery#5a6d7395 flags:# push:flags.0?true peer:InputPeer id:Vector<int> = Bool; updates.getState#edd4882a = updates.State; updates.getDifference#19c2f763 flags:# pts:int pts_limit:flags.1?int pts_total_limit:flags.0?int date:int qts:int qts_limit:flags.2?int = updates.Difference; updates.getChannelDifference#3173d78 flags:# force:flags.0?true channel:InputChannel filter:ChannelMessagesFilter pts:int limit:int = updates.ChannelDifference; photos.updateProfilePhoto#9e82039 flags:# fallback:flags.0?true bot:flags.1?InputUser id:InputPhoto = photos.Photo; photos.uploadProfilePhoto#388a3b5 flags:# fallback:flags.3?true bot:flags.5?InputUser file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double video_emoji_markup:flags.4?VideoSize = photos.Photo; photos.deletePhotos#87cf7f2f id:Vector<InputPhoto> = Vector<long>; photos.getUserPhotos#91cd32a8 user_id:InputUser offset:int max_id:long limit:int = photos.Photos; photos.uploadContactProfilePhoto#e14c4a71 flags:# suggest:flags.3?true save:flags.4?true user_id:InputUser file:flags.0?InputFile video:flags.1?InputFile video_start_ts:flags.2?double video_emoji_markup:flags.5?VideoSize = photos.Photo; upload.saveFilePart#b304a621 file_id:long file_part:int bytes:bytes = Bool; upload.getFile#be5335be flags:# precise:flags.0?true cdn_supported:flags.1?true location:InputFileLocation offset:long limit:int = upload.File; upload.saveBigFilePart#de7b673d file_id:long file_part:int file_total_parts:int bytes:bytes = Bool; upload.getWebFile#24e6818d location:InputWebFileLocation offset:int limit:int = upload.WebFile; upload.getCdnFile#395f69da file_token:bytes offset:long limit:int = upload.CdnFile; upload.reuploadCdnFile#9b2754a8 file_token:bytes request_token:bytes = Vector<FileHash>; upload.getCdnFileHashes#91dc3f31 file_token:bytes offset:long = Vector<FileHash>; upload.getFileHashes#9156982a location:InputFileLocation offset:long = Vector<FileHash>; help.getConfig#c4f9186b = Config; help.getNearestDc#1fb33026 = NearestDc; help.getAppUpdate#522d5a7d source:string = help.AppUpdate; help.getInviteText#4d392343 = help.InviteText; help.getSupport#9cdf08cd = help.Support; help.setBotUpdatesStatus#ec22cfcd pending_updates_count:int message:string = Bool; help.getCdnConfig#52029342 = CdnConfig; help.getRecentMeUrls#3dc0f114 referer:string = help.RecentMeUrls; help.getTermsOfServiceUpdate#2ca51fd1 = help.TermsOfServiceUpdate; help.acceptTermsOfService#ee72f79a id:DataJSON = Bool; help.getDeepLinkInfo#3fedc75f path:string = help.DeepLinkInfo; help.getAppConfig#61e3f854 hash:int = help.AppConfig; help.saveAppLog#6f02f748 events:Vector<InputAppEvent> = Bool; help.getPassportConfig#c661ad08 hash:int = help.PassportConfig; help.getSupportName#d360e72c = help.SupportName; help.getUserInfo#38a08d3 user_id:InputUser = help.UserInfo; help.editUserInfo#66b91b70 user_id:InputUser message:string entities:Vector<MessageEntity> = help.UserInfo; help.getPromoData#c0977421 = help.PromoData; help.hidePromoData#1e251c95 peer:InputPeer = Bool; help.dismissSuggestion#f50dbaa1 peer:InputPeer suggestion:string = Bool; help.getCountriesList#735787a8 lang_code:string hash:int = help.CountriesList; help.getPremiumPromo#b81b93d4 = help.PremiumPromo; help.getPeerColors#da80f42f hash:int = help.PeerColors; help.getPeerProfileColors#abcfa9fd hash:int = help.PeerColors; help.getTimezonesList#49b30240 hash:int = help.TimezonesList; channels.readHistory#cc104937 channel:InputChannel max_id:int = Bool; channels.deleteMessages#84c1fd4e channel:InputChannel id:Vector<int> = messages.AffectedMessages; channels.reportSpam#f44a8315 channel:InputChannel participant:InputPeer id:Vector<int> = Bool; channels.getMessages#ad8c9a23 channel:InputChannel id:Vector<InputMessage> = messages.Messages; channels.getParticipants#77ced9d0 channel:InputChannel filter:ChannelParticipantsFilter offset:int limit:int hash:long = channels.ChannelParticipants; channels.getParticipant#a0ab6cc6 channel:InputChannel participant:InputPeer = channels.ChannelParticipant; channels.getChannels#a7f6bbb id:Vector<InputChannel> = messages.Chats; channels.getFullChannel#8736a09 channel:InputChannel = messages.ChatFull; channels.createChannel#91006707 flags:# broadcast:flags.0?true megagroup:flags.1?true for_import:flags.3?true forum:flags.5?true title:string about:string geo_point:flags.2?InputGeoPoint address:flags.2?string ttl_period:flags.4?int = Updates; channels.editAdmin#d33c8902 channel:InputChannel user_id:InputUser admin_rights:ChatAdminRights rank:string = Updates; channels.editTitle#566decd0 channel:InputChannel title:string = Updates; channels.editPhoto#f12e57c9 channel:InputChannel photo:InputChatPhoto = Updates; channels.checkUsername#10e6bd2c channel:InputChannel username:string = Bool; channels.updateUsername#3514b3de channel:InputChannel username:string = Bool; channels.joinChannel#24b524c5 channel:InputChannel = Updates; channels.leaveChannel#f836aa95 channel:InputChannel = Updates; channels.inviteToChannel#c9e33d54 channel:InputChannel users:Vector<InputUser> = messages.InvitedUsers; channels.deleteChannel#c0111fe3 channel:InputChannel = Updates; channels.exportMessageLink#e63fadeb flags:# grouped:flags.0?true thread:flags.1?true channel:InputChannel id:int = ExportedMessageLink; channels.toggleSignatures#418d549c flags:# signatures_enabled:flags.0?true profiles_enabled:flags.1?true channel:InputChannel = Updates; channels.getAdminedPublicChannels#f8b036af flags:# by_location:flags.0?true check_limit:flags.1?true for_personal:flags.2?true = messages.Chats; channels.editBanned#96e6cd81 channel:InputChannel participant:InputPeer banned_rights:ChatBannedRights = Updates; channels.getAdminLog#33ddf480 flags:# channel:InputChannel q:string events_filter:flags.0?ChannelAdminLogEventsFilter admins:flags.1?Vector<InputUser> max_id:long min_id:long limit:int = channels.AdminLogResults; channels.setStickers#ea8ca4f9 channel:InputChannel stickerset:InputStickerSet = Bool; channels.readMessageContents#eab5dc38 channel:InputChannel id:Vector<int> = Bool; channels.deleteHistory#9baa9647 flags:# for_everyone:flags.0?true channel:InputChannel max_id:int = Updates; channels.togglePreHistoryHidden#eabbb94c channel:InputChannel enabled:Bool = Updates; channels.getLeftChannels#8341ecc0 offset:int = messages.Chats; channels.getGroupsForDiscussion#f5dad378 = messages.Chats; channels.setDiscussionGroup#40582bb2 broadcast:InputChannel group:InputChannel = Bool; channels.editCreator#8f38cd1f channel:InputChannel user_id:InputUser password:InputCheckPasswordSRP = Updates; channels.editLocation#58e63f6d channel:InputChannel geo_point:InputGeoPoint address:string = Bool; channels.toggleSlowMode#edd49ef0 channel:InputChannel seconds:int = Updates; channels.getInactiveChannels#11e831ee = messages.InactiveChats; channels.convertToGigagroup#b290c69 channel:InputChannel = Updates; channels.getSendAs#dc770ee peer:InputPeer = channels.SendAsPeers; channels.deleteParticipantHistory#367544db channel:InputChannel participant:InputPeer = messages.AffectedHistory; channels.toggleJoinToSend#e4cb9580 channel:InputChannel enabled:Bool = Updates; channels.toggleJoinRequest#4c2985b6 channel:InputChannel enabled:Bool = Updates; channels.reorderUsernames#b45ced1d channel:InputChannel order:Vector<string> = Bool; channels.toggleUsername#50f24105 channel:InputChannel username:string active:Bool = Bool; channels.deactivateAllUsernames#a245dd3 channel:InputChannel = Bool; channels.toggleForum#a4298b29 channel:InputChannel enabled:Bool = Updates; channels.createForumTopic#f40c0224 flags:# channel:InputChannel title:string icon_color:flags.0?int icon_emoji_id:flags.3?long random_id:long send_as:flags.2?InputPeer = Updates; channels.getForumTopics#de560d1 flags:# channel:InputChannel q:flags.0?string offset_date:int offset_id:int offset_topic:int limit:int = messages.ForumTopics; channels.getForumTopicsByID#b0831eb9 channel:InputChannel topics:Vector<int> = messages.ForumTopics; channels.editForumTopic#f4dfa185 flags:# channel:InputChannel topic_id:int title:flags.0?string icon_emoji_id:flags.1?long closed:flags.2?Bool hidden:flags.3?Bool = Updates; channels.updatePinnedForumTopic#6c2d9026 channel:InputChannel topic_id:int pinned:Bool = Updates; channels.deleteTopicHistory#34435f2d channel:InputChannel top_msg_id:int = messages.AffectedHistory; channels.reorderPinnedForumTopics#2950a18f flags:# force:flags.0?true channel:InputChannel order:Vector<int> = Updates; channels.toggleAntiSpam#68f3e4eb channel:InputChannel enabled:Bool = Updates; channels.reportAntiSpamFalsePositive#a850a693 channel:InputChannel msg_id:int = Bool; channels.toggleParticipantsHidden#6a6e7854 channel:InputChannel enabled:Bool = Updates; channels.updateColor#d8aa3671 flags:# for_profile:flags.1?true channel:InputChannel color:flags.2?int background_emoji_id:flags.0?long = Updates; channels.toggleViewForumAsMessages#9738bb15 channel:InputChannel enabled:Bool = Updates; channels.getChannelRecommendations#25a71742 flags:# channel:flags.0?InputChannel = messages.Chats; channels.updateEmojiStatus#f0d3e6a8 channel:InputChannel emoji_status:EmojiStatus = Updates; channels.setBoostsToUnblockRestrictions#ad399cee channel:InputChannel boosts:int = Updates; channels.setEmojiStickers#3cd930b7 channel:InputChannel stickerset:InputStickerSet = Bool; channels.restrictSponsoredMessages#9ae91519 channel:InputChannel restricted:Bool = Updates; channels.searchPosts#d19f987b hashtag:string offset_rate:int offset_peer:InputPeer offset_id:int limit:int = messages.Messages; bots.sendCustomRequest#aa2769ed custom_method:string params:DataJSON = DataJSON; bots.answerWebhookJSONQuery#e6213f4d query_id:long data:DataJSON = Bool; bots.setBotCommands#517165a scope:BotCommandScope lang_code:string commands:Vector<BotCommand> = Bool; bots.resetBotCommands#3d8de0f9 scope:BotCommandScope lang_code:string = Bool; bots.getBotCommands#e34c0dd6 scope:BotCommandScope lang_code:string = Vector<BotCommand>; bots.setBotMenuButton#4504d54f user_id:InputUser button:BotMenuButton = Bool; bots.getBotMenuButton#9c60eb28 user_id:InputUser = BotMenuButton; bots.setBotBroadcastDefaultAdminRights#788464e1 admin_rights:ChatAdminRights = Bool; bots.setBotGroupDefaultAdminRights#925ec9ea admin_rights:ChatAdminRights = Bool; bots.setBotInfo#10cf3123 flags:# bot:flags.2?InputUser lang_code:string name:flags.3?string about:flags.0?string description:flags.1?string = Bool; bots.getBotInfo#dcd914fd flags:# bot:flags.0?InputUser lang_code:string = bots.BotInfo; bots.reorderUsernames#9709b1c2 bot:InputUser order:Vector<string> = Bool; bots.toggleUsername#53ca973 bot:InputUser username:string active:Bool = Bool; bots.canSendMessage#1359f4e6 bot:InputUser = Bool; bots.allowSendMessage#f132e3ef bot:InputUser = Updates; bots.invokeWebViewCustomMethod#87fc5e7 bot:InputUser custom_method:string params:DataJSON = DataJSON; bots.getPopularAppBots#c2510192 offset:string limit:int = bots.PopularAppBots; bots.addPreviewMedia#17aeb75a bot:InputUser lang_code:string media:InputMedia = BotPreviewMedia; bots.editPreviewMedia#8525606f bot:InputUser lang_code:string media:InputMedia new_media:InputMedia = BotPreviewMedia; bots.deletePreviewMedia#2d0135b3 bot:InputUser lang_code:string media:Vector<InputMedia> = Bool; bots.reorderPreviewMedias#b627f3aa bot:InputUser lang_code:string order:Vector<InputMedia> = Bool; bots.getPreviewInfo#423ab3ad bot:InputUser lang_code:string = bots.PreviewInfo; bots.getPreviewMedias#a2a5594d bot:InputUser = Vector<BotPreviewMedia>; bots.updateUserEmojiStatus#ed9f30c5 user_id:InputUser emoji_status:EmojiStatus = Bool; bots.toggleUserEmojiStatusPermission#6de6392 bot:InputUser enabled:Bool = Bool; bots.checkDownloadFileParams#50077589 bot:InputUser file_name:string url:string = Bool; bots.getAdminedBots#b0711d83 = Vector<User>; bots.updateStarRefProgram#778b5ab3 flags:# bot:InputUser commission_permille:int duration_months:flags.0?int = StarRefProgram; bots.setCustomVerification#8b89dfbd flags:# enabled:flags.1?true bot:flags.0?InputUser peer:InputPeer custom_description:flags.2?string = Bool; bots.getBotRecommendations#a1b70815 bot:InputUser = users.Users; payments.getPaymentForm#37148dbb flags:# invoice:InputInvoice theme_params:flags.0?DataJSON = payments.PaymentForm; payments.getPaymentReceipt#2478d1cc peer:InputPeer msg_id:int = payments.PaymentReceipt; payments.validateRequestedInfo#b6c8f12b flags:# save:flags.0?true invoice:InputInvoice info:PaymentRequestedInfo = payments.ValidatedRequestedInfo; payments.sendPaymentForm#2d03522f flags:# form_id:long invoice:InputInvoice requested_info_id:flags.0?string shipping_option_id:flags.1?string credentials:InputPaymentCredentials tip_amount:flags.2?long = payments.PaymentResult; payments.getSavedInfo#227d824b = payments.SavedInfo; payments.clearSavedInfo#d83d70c1 flags:# credentials:flags.0?true info:flags.1?true = Bool; payments.getBankCardData#2e79d779 number:string = payments.BankCardData; payments.exportInvoice#f91b065 invoice_media:InputMedia = payments.ExportedInvoice; payments.assignAppStoreTransaction#80ed747d receipt:bytes purpose:InputStorePaymentPurpose = Updates; payments.assignPlayMarketTransaction#dffd50d3 receipt:DataJSON purpose:InputStorePaymentPurpose = Updates; payments.canPurchasePremium#9fc19eb6 purpose:InputStorePaymentPurpose = Bool; payments.getPremiumGiftCodeOptions#2757ba54 flags:# boost_peer:flags.0?InputPeer = Vector<PremiumGiftCodeOption>; payments.checkGiftCode#8e51b4c1 slug:string = payments.CheckedGiftCode; payments.applyGiftCode#f6e26854 slug:string = Updates; payments.getGiveawayInfo#f4239425 peer:InputPeer msg_id:int = payments.GiveawayInfo; payments.launchPrepaidGiveaway#5ff58f20 peer:InputPeer giveaway_id:long purpose:InputStorePaymentPurpose = Updates; payments.getStarsTopupOptions#c00ec7d3 = Vector<StarsTopupOption>; payments.getStarsStatus#104fcfa7 peer:InputPeer = payments.StarsStatus; payments.getStarsTransactions#69da4557 flags:# inbound:flags.0?true outbound:flags.1?true ascending:flags.2?true subscription_id:flags.3?string peer:InputPeer offset:string limit:int = payments.StarsStatus; payments.sendStarsForm#7998c914 form_id:long invoice:InputInvoice = payments.PaymentResult; payments.refundStarsCharge#25ae8f4a user_id:InputUser charge_id:string = Updates; payments.getStarsRevenueStats#d91ffad6 flags:# dark:flags.0?true peer:InputPeer = payments.StarsRevenueStats; payments.getStarsRevenueWithdrawalUrl#13bbe8b3 peer:InputPeer stars:long password:InputCheckPasswordSRP = payments.StarsRevenueWithdrawalUrl; payments.getStarsRevenueAdsAccountUrl#d1d7efc5 peer:InputPeer = payments.StarsRevenueAdsAccountUrl; payments.getStarsTransactionsByID#27842d2e peer:InputPeer id:Vector<InputStarsTransaction> = payments.StarsStatus; payments.getStarsGiftOptions#d3c96bc8 flags:# user_id:flags.0?InputUser = Vector<StarsGiftOption>; payments.getStarsSubscriptions#32512c5 flags:# missing_balance:flags.0?true peer:InputPeer offset:string = payments.StarsStatus; payments.changeStarsSubscription#c7770878 flags:# peer:InputPeer subscription_id:string canceled:flags.0?Bool = Bool; payments.fulfillStarsSubscription#cc5bebb3 peer:InputPeer subscription_id:string = Bool; payments.getStarsGiveawayOptions#bd1efd3e = Vector<StarsGiveawayOption>; payments.getStarGifts#c4563590 hash:int = payments.StarGifts; payments.saveStarGift#2a2a697c flags:# unsave:flags.0?true stargift:InputSavedStarGift = Bool; payments.convertStarGift#74bf076b stargift:InputSavedStarGift = Bool; payments.botCancelStarsSubscription#6dfa0622 flags:# restore:flags.0?true user_id:InputUser charge_id:string = Bool; payments.getConnectedStarRefBots#5869a553 flags:# peer:InputPeer offset_date:flags.2?int offset_link:flags.2?string limit:int = payments.ConnectedStarRefBots; payments.getConnectedStarRefBot#b7d998f0 peer:InputPeer bot:InputUser = payments.ConnectedStarRefBots; payments.getSuggestedStarRefBots#d6b48f7 flags:# order_by_revenue:flags.0?true order_by_date:flags.1?true peer:InputPeer offset:string limit:int = payments.SuggestedStarRefBots; payments.connectStarRefBot#7ed5348a peer:InputPeer bot:InputUser = payments.ConnectedStarRefBots; payments.editConnectedStarRefBot#e4fca4a3 flags:# revoked:flags.0?true peer:InputPeer link:string = payments.ConnectedStarRefBots; payments.getStarGiftUpgradePreview#9c9abcb1 gift_id:long = payments.StarGiftUpgradePreview; payments.upgradeStarGift#aed6e4f5 flags:# keep_original_details:flags.0?true stargift:InputSavedStarGift = Updates; payments.transferStarGift#7f18176a stargift:InputSavedStarGift to_id:InputPeer = Updates; payments.getUniqueStarGift#a1974d72 slug:string = payments.UniqueStarGift; payments.getSavedStarGifts#23830de9 flags:# exclude_unsaved:flags.0?true exclude_saved:flags.1?true exclude_unlimited:flags.2?true exclude_limited:flags.3?true exclude_unique:flags.4?true sort_by_value:flags.5?true peer:InputPeer offset:string limit:int = payments.SavedStarGifts; payments.getSavedStarGift#b455a106 stargift:Vector<InputSavedStarGift> = payments.SavedStarGifts; payments.getStarGiftWithdrawalUrl#d06e93a8 stargift:InputSavedStarGift password:InputCheckPasswordSRP = payments.StarGiftWithdrawalUrl; payments.toggleChatStarGiftNotifications#60eaefa1 flags:# enabled:flags.0?true peer:InputPeer = Bool; stickers.createStickerSet#9021ab67 flags:# masks:flags.0?true emojis:flags.5?true text_color:flags.6?true user_id:InputUser title:string short_name:string thumb:flags.2?InputDocument stickers:Vector<InputStickerSetItem> software:flags.3?string = messages.StickerSet; stickers.removeStickerFromSet#f7760f51 sticker:InputDocument = messages.StickerSet; stickers.changeStickerPosition#ffb6d4ca sticker:InputDocument position:int = messages.StickerSet; stickers.addStickerToSet#8653febe stickerset:InputStickerSet sticker:InputStickerSetItem = messages.StickerSet; stickers.setStickerSetThumb#a76a5392 flags:# stickerset:InputStickerSet thumb:flags.0?InputDocument thumb_document_id:flags.1?long = messages.StickerSet; stickers.checkShortName#284b3639 short_name:string = Bool; stickers.suggestShortName#4dafc503 title:string = stickers.SuggestedShortName; stickers.changeSticker#f5537ebc flags:# sticker:InputDocument emoji:flags.0?string mask_coords:flags.1?MaskCoords keywords:flags.2?string = messages.StickerSet; stickers.renameStickerSet#124b1c00 stickerset:InputStickerSet title:string = messages.StickerSet; stickers.deleteStickerSet#87704394 stickerset:InputStickerSet = Bool; stickers.replaceSticker#4696459a sticker:InputDocument new_sticker:InputStickerSetItem = messages.StickerSet; phone.getCallConfig#55451fa9 = DataJSON; phone.requestCall#a6c4600c flags:# video:flags.0?true user_id:InputUser conference_call:flags.1?InputGroupCall random_id:int g_a_hash:bytes protocol:PhoneCallProtocol = phone.PhoneCall; phone.acceptCall#3bd2b4a0 peer:InputPhoneCall g_b:bytes protocol:PhoneCallProtocol = phone.PhoneCall; phone.confirmCall#2efe1722 peer:InputPhoneCall g_a:bytes key_fingerprint:long protocol:PhoneCallProtocol = phone.PhoneCall; phone.receivedCall#17d54f61 peer:InputPhoneCall = Bool; phone.discardCall#b2cbc1c0 flags:# video:flags.0?true peer:InputPhoneCall duration:int reason:PhoneCallDiscardReason connection_id:long = Updates; phone.setCallRating#59ead627 flags:# user_initiative:flags.0?true peer:InputPhoneCall rating:int comment:string = Updates; phone.saveCallDebug#277add7e peer:InputPhoneCall debug:DataJSON = Bool; phone.sendSignalingData#ff7a9383 peer:InputPhoneCall data:bytes = Bool; phone.createGroupCall#48cdc6d8 flags:# rtmp_stream:flags.2?true peer:InputPeer random_id:int title:flags.0?string schedule_date:flags.1?int = Updates; phone.joinGroupCall#d61e1df3 flags:# muted:flags.0?true video_stopped:flags.2?true call:InputGroupCall join_as:InputPeer invite_hash:flags.1?string key_fingerprint:flags.3?long params:DataJSON = Updates; phone.leaveGroupCall#500377f9 call:InputGroupCall source:int = Updates; phone.inviteToGroupCall#7b393160 call:InputGroupCall users:Vector<InputUser> = Updates; phone.discardGroupCall#7a777135 call:InputGroupCall = Updates; phone.toggleGroupCallSettings#74bbb43d flags:# reset_invite_hash:flags.1?true call:InputGroupCall join_muted:flags.0?Bool = Updates; phone.getGroupCall#41845db call:InputGroupCall limit:int = phone.GroupCall; phone.getGroupParticipants#c558d8ab call:InputGroupCall ids:Vector<InputPeer> sources:Vector<int> offset:string limit:int = phone.GroupParticipants; phone.checkGroupCall#b59cf977 call:InputGroupCall sources:Vector<int> = Vector<int>; phone.toggleGroupCallRecord#f128c708 flags:# start:flags.0?true video:flags.2?true call:InputGroupCall title:flags.1?string video_portrait:flags.2?Bool = Updates; phone.editGroupCallParticipant#a5273abf flags:# call:InputGroupCall participant:InputPeer muted:flags.0?Bool volume:flags.1?int raise_hand:flags.2?Bool video_stopped:flags.3?Bool video_paused:flags.4?Bool presentation_paused:flags.5?Bool = Updates; phone.editGroupCallTitle#1ca6ac0a call:InputGroupCall title:string = Updates; phone.getGroupCallJoinAs#ef7c213a peer:InputPeer = phone.JoinAsPeers; phone.exportGroupCallInvite#e6aa647f flags:# can_self_unmute:flags.0?true call:InputGroupCall = phone.ExportedGroupCallInvite; phone.toggleGroupCallStartSubscription#219c34e6 call:InputGroupCall subscribed:Bool = Updates; phone.startScheduledGroupCall#5680e342 call:InputGroupCall = Updates; phone.saveDefaultGroupCallJoinAs#575e1f8c peer:InputPeer join_as:InputPeer = Bool; phone.joinGroupCallPresentation#cbea6bc4 call:InputGroupCall params:DataJSON = Updates; phone.leaveGroupCallPresentation#1c50d144 call:InputGroupCall = Updates; phone.getGroupCallStreamChannels#1ab21940 call:InputGroupCall = phone.GroupCallStreamChannels; phone.getGroupCallStreamRtmpUrl#deb3abbf peer:InputPeer revoke:Bool = phone.GroupCallStreamRtmpUrl; phone.saveCallLog#41248786 peer:InputPhoneCall file:InputFile = Bool; phone.createConferenceCall#dfc909ab peer:InputPhoneCall key_fingerprint:long = phone.PhoneCall; langpack.getLangPack#f2f2330a lang_pack:string lang_code:string = LangPackDifference; langpack.getStrings#efea3803 lang_pack:string lang_code:string keys:Vector<string> = Vector<LangPackString>; langpack.getDifference#cd984aa5 lang_pack:string lang_code:string from_version:int = LangPackDifference; langpack.getLanguages#42c6978f lang_pack:string = Vector<LangPackLanguage>; langpack.getLanguage#6a596502 lang_pack:string lang_code:string = LangPackLanguage; folders.editPeerFolders#6847d0ab folder_peers:Vector<InputFolderPeer> = Updates; stats.getBroadcastStats#ab42441a flags:# dark:flags.0?true channel:InputChannel = stats.BroadcastStats; stats.loadAsyncGraph#621d5fa0 flags:# token:string x:flags.0?long = StatsGraph; stats.getMegagroupStats#dcdf8607 flags:# dark:flags.0?true channel:InputChannel = stats.MegagroupStats; stats.getMessagePublicForwards#5f150144 channel:InputChannel msg_id:int offset:string limit:int = stats.PublicForwards; stats.getMessageStats#b6e0a3f5 flags:# dark:flags.0?true channel:InputChannel msg_id:int = stats.MessageStats; stats.getStoryStats#374fef40 flags:# dark:flags.0?true peer:InputPeer id:int = stats.StoryStats; stats.getStoryPublicForwards#a6437ef6 peer:InputPeer id:int offset:string limit:int = stats.PublicForwards; stats.getBroadcastRevenueStats#f788ee19 flags:# dark:flags.0?true peer:InputPeer = stats.BroadcastRevenueStats; stats.getBroadcastRevenueWithdrawalUrl#9df4faad peer:InputPeer password:InputCheckPasswordSRP = stats.BroadcastRevenueWithdrawalUrl; stats.getBroadcastRevenueTransactions#70990b6d peer:InputPeer offset:int limit:int = stats.BroadcastRevenueTransactions; chatlists.exportChatlistInvite#8472478e chatlist:InputChatlist title:string peers:Vector<InputPeer> = chatlists.ExportedChatlistInvite; chatlists.deleteExportedInvite#719c5c5e chatlist:InputChatlist slug:string = Bool; chatlists.editExportedInvite#653db63d flags:# chatlist:InputChatlist slug:string title:flags.1?string peers:flags.2?Vector<InputPeer> = ExportedChatlistInvite; chatlists.getExportedInvites#ce03da83 chatlist:InputChatlist = chatlists.ExportedInvites; chatlists.checkChatlistInvite#41c10fff slug:string = chatlists.ChatlistInvite; chatlists.joinChatlistInvite#a6b1e39a slug:string peers:Vector<InputPeer> = Updates; chatlists.getChatlistUpdates#89419521 chatlist:InputChatlist = chatlists.ChatlistUpdates; chatlists.joinChatlistUpdates#e089f8f5 chatlist:InputChatlist peers:Vector<InputPeer> = Updates; chatlists.hideChatlistUpdates#66e486fb chatlist:InputChatlist = Bool; chatlists.getLeaveChatlistSuggestions#fdbcd714 chatlist:InputChatlist = Vector<Peer>; chatlists.leaveChatlist#74fae13a chatlist:InputChatlist peers:Vector<InputPeer> = Updates; stories.canSendStory#c7dfdfdd peer:InputPeer = Bool; stories.sendStory#e4e6694b flags:# pinned:flags.2?true noforwards:flags.4?true fwd_modified:flags.7?true peer:InputPeer media:InputMedia media_areas:flags.5?Vector<MediaArea> caption:flags.0?string entities:flags.1?Vector<MessageEntity> privacy_rules:Vector<InputPrivacyRule> random_id:long period:flags.3?int fwd_from_id:flags.6?InputPeer fwd_from_story:flags.6?int = Updates; stories.editStory#b583ba46 flags:# peer:InputPeer id:int media:flags.0?InputMedia media_areas:flags.3?Vector<MediaArea> caption:flags.1?string entities:flags.1?Vector<MessageEntity> privacy_rules:flags.2?Vector<InputPrivacyRule> = Updates; stories.deleteStories#ae59db5f peer:InputPeer id:Vector<int> = Vector<int>; stories.togglePinned#9a75a1ef peer:InputPeer id:Vector<int> pinned:Bool = Vector<int>; stories.getAllStories#eeb0d625 flags:# next:flags.1?true hidden:flags.2?true state:flags.0?string = stories.AllStories; stories.getPinnedStories#5821a5dc peer:InputPeer offset_id:int limit:int = stories.Stories; stories.getStoriesArchive#b4352016 peer:InputPeer offset_id:int limit:int = stories.Stories; stories.getStoriesByID#5774ca74 peer:InputPeer id:Vector<int> = stories.Stories; stories.toggleAllStoriesHidden#7c2557c4 hidden:Bool = Bool; stories.readStories#a556dac8 peer:InputPeer max_id:int = Vector<int>; stories.incrementStoryViews#b2028afb peer:InputPeer id:Vector<int> = Bool; stories.getStoryViewsList#7ed23c57 flags:# just_contacts:flags.0?true reactions_first:flags.2?true forwards_first:flags.3?true peer:InputPeer q:flags.1?string id:int offset:string limit:int = stories.StoryViewsList; stories.getStoriesViews#28e16cc8 peer:InputPeer id:Vector<int> = stories.StoryViews; stories.exportStoryLink#7b8def20 peer:InputPeer id:int = ExportedStoryLink; stories.report#19d8eb45 peer:InputPeer id:Vector<int> option:bytes message:string = ReportResult; stories.activateStealthMode#57bbd166 flags:# past:flags.0?true future:flags.1?true = Updates; stories.sendReaction#7fd736b2 flags:# add_to_recent:flags.0?true peer:InputPeer story_id:int reaction:Reaction = Updates; stories.getPeerStories#2c4ada50 peer:InputPeer = stories.PeerStories; stories.getAllReadPeerStories#9b5ae7f9 = Updates; stories.getPeerMaxIDs#535983c3 id:Vector<InputPeer> = Vector<int>; stories.getChatsToSend#a56a8b60 = messages.Chats; stories.togglePeerStoriesHidden#bd0415c4 peer:InputPeer hidden:Bool = Bool; stories.getStoryReactionsList#b9b2881f flags:# forwards_first:flags.2?true peer:InputPeer id:int reaction:flags.0?Reaction offset:flags.1?string limit:int = stories.StoryReactionsList; stories.togglePinnedToTop#b297e9b peer:InputPeer id:Vector<int> = Bool; stories.searchPosts#d1810907 flags:# hashtag:flags.0?string area:flags.1?MediaArea peer:flags.2?InputPeer offset:string limit:int = stories.FoundStories; premium.getBoostsList#60f67660 flags:# gifts:flags.0?true peer:InputPeer offset:string limit:int = premium.BoostsList; premium.getMyBoosts#be77b4a = premium.MyBoosts; premium.applyBoost#6b7da746 flags:# slots:flags.0?Vector<int> peer:InputPeer = premium.MyBoosts; premium.getBoostsStatus#42f1f61 peer:InputPeer = premium.BoostsStatus; premium.getUserBoosts#39854d1f peer:InputPeer user_id:InputUser = premium.BoostsList; smsjobs.isEligibleToJoin#edc39d0 = smsjobs.EligibilityToJoin; smsjobs.join#a74ece2d = Bool; smsjobs.leave#9898ad73 = Bool; smsjobs.updateSettings#93fa0bf flags:# allow_international:flags.0?true = Bool; smsjobs.getStatus#10a698e8 = smsjobs.Status; smsjobs.getSmsJob#778d902f job_id:string = SmsJob; smsjobs.finishJob#4f1ebf24 flags:# job_id:string error:flags.0?string = Bool; fragment.getCollectibleInfo#be1e85ba collectible:InputCollectible = fragment.CollectibleInfo; `; } }); // node_modules/telegram/tl/schemaTl.js var require_schemaTl = __commonJS({ "node_modules/telegram/tl/schemaTl.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = ` resPQ#05162463 nonce:int128 server_nonce:int128 pq:string server_public_key_fingerprints:Vector<long> = ResPQ; p_q_inner_data#83c95aec pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 = P_Q_inner_data; p_q_inner_data_dc#a9f55f95 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int = P_Q_inner_data; p_q_inner_data_temp#3c6a84d4 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 expires_in:int = P_Q_inner_data; p_q_inner_data_temp_dc#56fddf88 pq:string p:string q:string nonce:int128 server_nonce:int128 new_nonce:int256 dc:int expires_in:int = P_Q_inner_data; bind_auth_key_inner#75a3f765 nonce:long temp_auth_key_id:long perm_auth_key_id:long temp_session_id:long expires_at:int = BindAuthKeyInner; server_DH_params_fail#79cb045d nonce:int128 server_nonce:int128 new_nonce_hash:int128 = Server_DH_Params; server_DH_params_ok#d0e8075c nonce:int128 server_nonce:int128 encrypted_answer:string = Server_DH_Params; server_DH_inner_data#b5890dba nonce:int128 server_nonce:int128 g:int dh_prime:string g_a:string server_time:int = Server_DH_inner_data; client_DH_inner_data#6643b654 nonce:int128 server_nonce:int128 retry_id:long g_b:string = Client_DH_Inner_Data; dh_gen_ok#3bcbf734 nonce:int128 server_nonce:int128 new_nonce_hash1:int128 = Set_client_DH_params_answer; dh_gen_retry#46dc1fb9 nonce:int128 server_nonce:int128 new_nonce_hash2:int128 = Set_client_DH_params_answer; dh_gen_fail#a69dae02 nonce:int128 server_nonce:int128 new_nonce_hash3:int128 = Set_client_DH_params_answer; destroy_auth_key_ok#f660e1d4 = DestroyAuthKeyRes; destroy_auth_key_none#0a9f2259 = DestroyAuthKeyRes; destroy_auth_key_fail#ea109b13 = DestroyAuthKeyRes; ---functions--- req_pq#60469778 nonce:int128 = ResPQ; req_pq_multi#be7e8ef1 nonce:int128 = ResPQ; req_DH_params#d712e4be nonce:int128 server_nonce:int128 p:string q:string public_key_fingerprint:long encrypted_data:string = Server_DH_Params; set_client_DH_params#f5045f1f nonce:int128 server_nonce:int128 encrypted_data:string = Set_client_DH_params_answer; destroy_auth_key#d1435160 = DestroyAuthKeyRes; ---types--- msgs_ack#62d6b459 msg_ids:Vector<long> = MsgsAck; bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int error_code:int = BadMsgNotification; bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int error_code:int new_server_salt:long = BadMsgNotification; msgs_state_req#da69fb52 msg_ids:Vector<long> = MsgsStateReq; msgs_state_info#04deb57d req_msg_id:long info:string = MsgsStateInfo; msgs_all_info#8cc0d131 msg_ids:Vector<long> info:string = MsgsAllInfo; msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long bytes:int status:int = MsgDetailedInfo; msg_new_detailed_info#809db6df answer_msg_id:long bytes:int status:int = MsgDetailedInfo; msg_resend_req#7d861a08 msg_ids:Vector<long> = MsgResendReq; rpc_error#2144ca19 error_code:int error_message:string = RpcError; rpc_answer_unknown#5e2ad36e = RpcDropAnswer; rpc_answer_dropped_running#cd78e586 = RpcDropAnswer; rpc_answer_dropped#a43ad8b7 msg_id:long seq_no:int bytes:int = RpcDropAnswer; future_salt#0949d9dc valid_since:int valid_until:int salt:long = FutureSalt; future_salts#ae500895 req_msg_id:long now:int salts:vector<future_salt> = FutureSalts; pong#347773c5 msg_id:long ping_id:long = Pong; destroy_session_ok#e22045fc session_id:long = DestroySessionRes; destroy_session_none#62d350c9 session_id:long = DestroySessionRes; new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession; http_wait#9299359f max_delay:int wait_after:int max_wait:int = HttpWait; ipPort#d433ad73 ipv4:int port:int = IpPort; ipPortSecret#37982646 ipv4:int port:int secret:bytes = IpPort; accessPointRule#4679b65f phone_prefix_rules:string dc_id:int ips:vector<IpPort> = AccessPointRule; help.configSimple#5a592a6c date:int expires:int rules:vector<AccessPointRule> = help.ConfigSimple; tlsClientHello blocks:vector<TlsBlock> = TlsClientHello; tlsBlockString data:string = TlsBlock; tlsBlockRandom length:int = TlsBlock; tlsBlockZero length:int = TlsBlock; tlsBlockDomain = TlsBlock; tlsBlockGrease seed:int = TlsBlock; tlsBlockPublicKey = TlsBlock; tlsBlockScope entries:Vector<TlsBlock> = TlsBlock; tlsBlockPermutation entries:Vector<Vector<TlsBlock>> = TlsBlock; ---functions--- rpc_drop_answer#58e4a740 req_msg_id:long = RpcDropAnswer; get_future_salts#b921bd04 num:int = FutureSalts; ping#7abe77ec ping_id:long = Pong; ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong; destroy_session#e7512126 session_id:long = DestroySessionRes; `; } }); // node_modules/telegram/tl/generationHelpers.js var require_generationHelpers = __commonJS({ "node_modules/telegram/tl/generationHelpers.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.variableSnakeToCamelCase = exports2.snakeToCamelCase = exports2.CORE_TYPES = exports2.fromLine = exports2.parseTl = exports2.findAll = void 0; exports2.serializeBytes = serializeBytes; exports2.serializeDate = serializeDate; exports2.buildArgConfig = buildArgConfig; var Helpers_1 = require_Helpers(); var snakeToCamelCase = (name) => { const result = name.replace(/(?:^|_)([a-z])/g, (_, g) => g.toUpperCase()); return result.replace(/_/g, ""); }; exports2.snakeToCamelCase = snakeToCamelCase; var variableSnakeToCamelCase = (str) => str.replace(/([-_][a-z])/g, (group) => group.toUpperCase().replace("-", "").replace("_", "")); exports2.variableSnakeToCamelCase = variableSnakeToCamelCase; var CORE_TYPES = /* @__PURE__ */ new Set([ 3162085175, // boolFalse#bc799737 = Bool; 2574415285, // boolTrue#997275b5 = Bool; 1072550713, // true#3fedd339 = True; 3300522427, // error#c4b9f9bb code:int text:string = Error; 1450380236 // null#56730bcc = Null; ]); exports2.CORE_TYPES = CORE_TYPES; var AUTH_KEY_TYPES = /* @__PURE__ */ new Set([ 85337187, // resPQ, 2211011308, // p_q_inner_data 2851430293, // p_q_inner_data_dc 1013613780, // p_q_inner_data_temp 1459478408, // p_q_inner_data_temp_dc 3504867164, // server_DH_params_ok 3045658042, // server_DH_inner_data 1715713620, // client_DH_inner_data 3608339646, // req_DH_params 4110704415, // set_client_DH_params 812830625 // gzip_packed ]); var fromLine = (line, isFunction) => { const match = line.match(/([\w.]+)(?:#([0-9a-fA-F]+))?(?:\s{?\w+:[\w\d<>#.?!]+}?)*\s=\s([\w\d<>#.?]+);$/); if (!match) { throw new Error(`Cannot parse TLObject ${line}`); } const argsMatch = findAll3(/({)?(\w+):([\w\d<>#.?!]+)}?/, line); const currentConfig = { name: match[1], constructorId: parseInt(match[2], 16), argsConfig: {}, subclassOfId: (0, Helpers_1.crc32)(match[3]), result: match[3], isFunction, namespace: void 0 }; if (!currentConfig.constructorId) { const hexId = ""; let args; if (Object.values(currentConfig.argsConfig).length) { args = ` ${Object.keys(currentConfig.argsConfig).map((arg) => arg.toString()).join(" ")}`; } else { args = ""; } const representation = `${currentConfig.name}${hexId}${args} = ${currentConfig.result}`.replace(/(:|\?)bytes /g, "$1string ").replace(/</g, " ").replace(/>|{|}/g, "").replace(/ \w+:flags(\d+)?\.\d+\?true/g, ""); if (currentConfig.name === "inputMediaInvoice") { if (currentConfig.name === "inputMediaInvoice") { } } currentConfig.constructorId = (0, Helpers_1.crc32)(Buffer.from(representation, "utf8")); } for (const [brace, name, argType] of argsMatch) { if (brace === void 0) { currentConfig.argsConfig[variableSnakeToCamelCase(name)] = buildArgConfig(name, argType); } } if (currentConfig.name.includes(".")) { [currentConfig.namespace, currentConfig.name] = currentConfig.name.split(/\.(.+)/); } currentConfig.name = snakeToCamelCase(currentConfig.name); return currentConfig; }; exports2.fromLine = fromLine; function buildArgConfig(name, argType) { name = name === "self" ? "is_self" : name; const currentConfig = { isVector: false, isFlag: false, skipConstructorId: false, flagName: null, flagIndex: -1, flagIndicator: true, type: null, useVectorId: null }; const canBeInferred = name === "random_id"; if (argType !== "#") { currentConfig.flagIndicator = false; currentConfig.type = argType.replace(/^!+/, ""); const flagMatch = currentConfig.type.match(/(flags(?:\d+)?).(\d+)\?([\w<>.]+)/); if (flagMatch) { currentConfig.isFlag = true; currentConfig.flagName = flagMatch[1]; currentConfig.flagIndex = Number(flagMatch[2]); currentConfig.type = flagMatch[3]; } const vectorMatch = currentConfig.type.match(/[Vv]ector<([\w\d.]+)>/); if (vectorMatch) { currentConfig.isVector = true; currentConfig.useVectorId = currentConfig.type.charAt(0) === "V"; [, currentConfig.type] = vectorMatch; } if (/^[a-z]$/.test(currentConfig.type.split(".").pop().charAt(0))) { currentConfig.skipConstructorId = true; } } if (currentConfig.type == "future_salt") { currentConfig.type = "FutureSalt"; } return currentConfig; } var parseTl = function* (content, layer, methods = [], ignoreIds = CORE_TYPES) { const methodInfo = (methods || []).reduce((o, m) => Object.assign(Object.assign({}, o), { [m.name]: m }), {}); const objAll = []; const objByName = {}; const objByType = {}; const file = content; let isFunction = false; for (let line of file.split("\n")) { const commentIndex = line.indexOf("//"); if (commentIndex !== -1) { line = line.slice(0, commentIndex); } line = line.trim(); if (!line) { continue; } const match = line.match(/---(\w+)---/); if (match) { const [, followingTypes] = match; isFunction = followingTypes === "functions"; continue; } try { const result = fromLine(line, isFunction); if (ignoreIds.has(result.constructorId)) { continue; } objAll.push(result); if (!result.isFunction) { if (!objByType[result.result]) { objByType[result.result] = []; } objByName[result.name] = result; objByType[result.result].push(result); } } catch (e) { if (!e.toString().includes("vector#1cb5c415")) { throw e; } } } for (const obj of objAll) { if (AUTH_KEY_TYPES.has(obj.constructorId)) { for (const arg in obj.argsConfig) { if (obj.argsConfig[arg].type === "string") { obj.argsConfig[arg].type = "bytes"; } } } } for (const obj of objAll) { yield obj; } }; exports2.parseTl = parseTl; var findAll3 = (regex, str, matches = []) => { if (!regex.flags.includes("g")) { regex = new RegExp(regex.source, "g"); } const res = regex.exec(str); if (res) { matches.push(res.slice(1)); findAll3(regex, str, matches); } return matches; }; exports2.findAll = findAll3; function serializeBytes(data) { if (!(data instanceof Buffer)) { if (typeof data == "string") { data = Buffer.from(data); } else { throw Error(`Bytes or str expected, not ${data.constructor.name}`); } } const r = []; let padding; if (data.length < 254) { padding = (data.length + 1) % 4; if (padding !== 0) { padding = 4 - padding; } r.push(Buffer.from([data.length])); r.push(data); } else { padding = data.length % 4; if (padding !== 0) { padding = 4 - padding; } r.push(Buffer.from([ 254, data.length % 256, (data.length >> 8) % 256, (data.length >> 16) % 256 ])); r.push(data); } r.push(Buffer.alloc(padding).fill(0)); return Buffer.concat(r); } function serializeDate(dt) { if (!dt) { return Buffer.alloc(4).fill(0); } if (dt instanceof Date) { dt = Math.floor((Date.now() - dt.getTime()) / 1e3); } if (typeof dt == "number") { const t = Buffer.alloc(4); t.writeInt32LE(dt, 0); return t; } throw Error(`Cannot interpret "${dt}" as a date`); } } }); // node_modules/telegram/tl/api.js var require_api = __commonJS({ "node_modules/telegram/tl/api.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var { inspect } = require_inspect(); var bigInt2 = require_BigInteger(); var { generateRandomBytes, readBigIntFromBuffer, isArrayLike, betterConsoleLog } = require_Helpers(); var tlContent = require_apiTl(); var schemeContent = require_schemaTl(); function generateRandomBigInt() { return readBigIntFromBuffer(generateRandomBytes(8), false, true); } var { parseTl, serializeBytes, serializeDate } = require_generationHelpers(); var { toSignedLittleBuffer } = require_Helpers(); var NAMED_AUTO_CASTS = /* @__PURE__ */ new Set(["chatId,int"]); var AUTO_CASTS = /* @__PURE__ */ new Set([ "InputPeer", "InputChannel", "InputUser", "InputDialogPeer", "InputNotifyPeer", "InputMedia", "InputPhoto", "InputMessage", "InputDocument", "InputChatPhoto" ]); var CastError = class _CastError extends Error { constructor(objectName, expected, actual, ...params) { const message = "Found wrong type for " + objectName + ". expected " + expected + " but received " + actual + ".If you think this is a mistake please report it."; super(message, ...params); if (Error.captureStackTrace) { Error.captureStackTrace(this, _CastError); } this.name = "CastError"; } }; var CACHING_SUPPORTED = typeof self !== "undefined" && self.localStorage !== void 0; var CACHE_KEY = "GramJs:apiCache"; function buildApiFromTlSchema() { let definitions; const fromCache = CACHING_SUPPORTED && loadFromCache(); if (fromCache) { definitions = fromCache; } else { definitions = loadFromTlSchemas(); if (CACHING_SUPPORTED) { localStorage.setItem(CACHE_KEY, JSON.stringify(definitions)); } } return createClasses("all", definitions); } function loadFromCache() { const jsonCache = localStorage.getItem(CACHE_KEY); return jsonCache && JSON.parse(jsonCache); } function loadFromTlSchemas() { const [constructorParamsApi, functionParamsApi] = extractParams(tlContent); const [constructorParamsSchema, functionParamsSchema] = extractParams(schemeContent); const constructors = [].concat(constructorParamsApi, constructorParamsSchema); const requests = [].concat(functionParamsApi, functionParamsSchema); return [].concat(constructors, requests); } function extractParams(fileContent) { const f = parseTl(fileContent, 109); const constructors = []; const functions = []; for (const d of f) { d.isFunction ? functions.push(d) : constructors.push(d); } return [constructors, functions]; } function argToBytes(x, type, argName, requestName) { switch (type) { case "int": const i = Buffer.alloc(4); i.writeInt32LE(x, 0); return i; case "long": return toSignedLittleBuffer(x, 8); case "int128": return toSignedLittleBuffer(x, 16); case "int256": return toSignedLittleBuffer(x, 32); case "double": const d = Buffer.alloc(8); d.writeDoubleLE(x, 0); return d; case "string": return serializeBytes(x); case "Bool": return x ? Buffer.from("b5757299", "hex") : Buffer.from("379779bc", "hex"); case "true": return Buffer.alloc(0); case "bytes": return serializeBytes(x); case "date": return serializeDate(x); default: if (x === void 0 || typeof x.getBytes !== "function") { throw new Error(`Required object ${argName} of ${requestName} is undefined`); } return x.getBytes(); } } async function getInputFromResolve(utils, client2, peer, peerType) { switch (peerType) { case "InputPeer": return utils.getInputPeer(await client2.getInputEntity(peer)); case "InputChannel": return utils.getInputChannel(await client2.getInputEntity(peer)); case "InputUser": return utils.getInputUser(await client2.getInputEntity(peer)); case "InputDialogPeer": return await client2._getInputDialog(peer); case "InputNotifyPeer": return await client2._getInputNotify(peer); case "InputMedia": return utils.getInputMedia(peer); case "InputPhoto": return utils.getInputPhoto(peer); case "InputMessage": return utils.getInputMessage(peer); case "InputDocument": return utils.getInputDocument(peer); case "InputChatPhoto": return utils.getInputChatPhoto(peer); case "chatId,int": return await client2.getPeerId(peer, false); default: throw new Error("unsupported peer type : " + peerType); } } function getArgFromReader(reader, arg) { if (arg.isVector) { if (arg.useVectorId) { reader.readInt(); } const temp = []; const len = reader.readInt(); arg.isVector = false; for (let i = 0; i < len; i++) { temp.push(getArgFromReader(reader, arg)); } arg.isVector = true; return temp; } else if (arg.flagIndicator) { return reader.readInt(); } else { switch (arg.type) { case "int": return reader.readInt(); case "long": return reader.readLong(); case "int128": return reader.readLargeInt(128); case "int256": return reader.readLargeInt(256); case "double": return reader.readDouble(); case "string": return reader.tgReadString(); case "Bool": return reader.tgReadBool(); case "true": return true; case "bytes": return reader.tgReadBytes(); case "date": return reader.tgReadDate(); default: if (!arg.skipConstructorId) { return reader.tgReadObject(); } else { return api.constructors[arg.type].fromReader(reader); } } } } function compareType(value, type) { let correct = true; switch (type) { case "number": correct = typeof value === "number" || value === void 0; break; case "string": case "boolean": correct = typeof value === type; break; case "bigInt": correct = bigInt2.isInstance(value) || typeof value === "bigint" || typeof value === "number" || typeof value === "string" || value === void 0; break; case "true": break; case "buffer": correct = Buffer.isBuffer(value); break; case "date": correct = value && Object.prototype.toString.call(value) === "[object Date]" && !isNaN(value) || typeof value === "number"; break; default: console.error(new Error("Unknown type." + type)); } return correct; } function createClasses(classesType, params) { const classes = {}; for (const classParams of params) { const { name, constructorId, subclassOfId, argsConfig, namespace, isFunction, result } = classParams; const fullName = [namespace, name].join(".").replace(/^\./, ""); class VirtualClass { constructor(args) { this.CONSTRUCTOR_ID = constructorId; this.SUBCLASS_OF_ID = subclassOfId; this.className = fullName; this.classType = isFunction ? "request" : "constructor"; args = args || {}; this.originalArgs = args; this.init(args); for (const argName in argsConfig) { if (argName === "randomId" && !args[argName]) { if (argsConfig[argName].isVector) { const rands = []; for (let i = 0; i < args["id"].length; i++) { rands.push(generateRandomBigInt()); } this[argName] = rands; } else { this[argName] = generateRandomBigInt(); } } else { this[argName] = args[argName]; } } } init(args) { } static fromReader(reader) { const args = {}; for (const argName in argsConfig) { if (argsConfig.hasOwnProperty(argName)) { const arg = argsConfig[argName]; if (arg.isFlag) { if (arg.type === "true") { args[argName] = Boolean(args[arg.flagName] & 1 << arg.flagIndex); continue; } if (args[arg.flagName] & 1 << arg.flagIndex) { args[argName] = getArgFromReader(reader, arg); } else { args[argName] = null; } } else { if (arg.flagIndicator) { arg.name = argName; } args[argName] = getArgFromReader(reader, arg); } } } return new this(args); } validate() { for (const arg in argsConfig) { if (argsConfig.hasOwnProperty(arg)) { if (argsConfig[arg].flagIndicator || argsConfig[arg].isFlag) { continue; } const currentValue = this[arg]; this.assertType(arg, argsConfig[arg], currentValue); } } } assertType(objectName, object, value) { let expected; if (object["isVector"]) { if (!isArrayLike(value)) { console.error(new CastError(objectName, "array", value)); } if (value == void 0) { value = []; } for (const o of value) { this.assertType(objectName, Object.assign(Object.assign({}, object), { isVector: false }), o); } } else { switch (object["type"]) { case "int": expected = "number"; break; case "long": case "int128": case "int256": expected = "bigInt"; break; case "double": expected = "number"; break; case "string": expected = "string"; break; case "Bool": expected = "boolean"; break; case "true": expected = "true"; break; case "bytes": expected = "buffer"; break; case "date": expected = "date"; break; default: expected = "object"; } if (expected === "object") { } else { const isCorrectType = compareType(value, expected); if (isCorrectType !== true) { console.error(new CastError(objectName, expected, value)); } } } } getBytes() { try { this.validate(); } catch (e) { } const idForBytes = this.CONSTRUCTOR_ID; const c = Buffer.alloc(4); c.writeUInt32LE(idForBytes, 0); const buffers = [c]; for (const arg in argsConfig) { if (argsConfig.hasOwnProperty(arg)) { if (argsConfig[arg].isFlag) { if (this[arg] === false && argsConfig[arg].type !== "Bool" || this[arg] === null || this[arg] === void 0 || argsConfig[arg].type === "true") { continue; } } if (argsConfig[arg].isVector) { if (argsConfig[arg].useVectorId) { buffers.push(Buffer.from("15c4b51c", "hex")); } const l = Buffer.alloc(4); l.writeInt32LE(this[arg].length, 0); buffers.push(l, Buffer.concat(this[arg].map((x) => argToBytes(x, argsConfig[arg].type, fullName)))); } else if (argsConfig[arg].flagIndicator) { if (!Object.values(argsConfig).some((f) => f.isFlag)) { buffers.push(Buffer.alloc(4)); } else { let flagCalculate = 0; for (const f2 in argsConfig) { if (argsConfig[f2].isFlag && arg === argsConfig[f2].flagName) { if (this[f2] === false && argsConfig[f2].type !== "Bool" || this[f2] === void 0 || this[f2] === null) { flagCalculate |= 0; } else { flagCalculate |= 1 << argsConfig[f2].flagIndex; } } } const f = Buffer.alloc(4); f.writeUInt32LE(flagCalculate, 0); buffers.push(f); } } else { buffers.push(argToBytes(this[arg], argsConfig[arg].type, arg, fullName)); if (this[arg] && typeof this[arg].getBytes === "function") { let boxed = argsConfig[arg].type.charAt(argsConfig[arg].type.indexOf(".") + 1); boxed = boxed === boxed.toUpperCase(); if (!boxed) { buffers.shift(); } } } } } return Buffer.concat(buffers); } readResult(reader) { if (!isFunction) { throw new Error("`readResult()` called for non-request instance"); } const m = result.match(/Vector<(int|long)>/); if (m) { reader.readInt(); const temp = []; const len = reader.readInt(); if (m[1] === "int") { for (let i = 0; i < len; i++) { temp.push(reader.readInt()); } } else { for (let i = 0; i < len; i++) { temp.push(reader.readLong()); } } return temp; } else { return reader.tgReadObject(); } } async resolve(client2, utils) { if (!isFunction) { throw new Error("`resolve()` called for non-request instance"); } for (const arg in argsConfig) { if (argsConfig.hasOwnProperty(arg)) { if (!AUTO_CASTS.has(argsConfig[arg].type)) { if (!NAMED_AUTO_CASTS.has(`${argsConfig[arg].name},${argsConfig[arg].type}`)) { continue; } } if (argsConfig[arg].isFlag) { if (!this[arg]) { continue; } } if (argsConfig[arg].isVector) { const temp = []; for (const x of this[arg]) { temp.push(await getInputFromResolve(utils, client2, x, argsConfig[arg].type)); } this[arg] = temp; } else { this[arg] = await getInputFromResolve(utils, client2, this[arg], argsConfig[arg].type); } } } } [inspect.custom]() { return betterConsoleLog(this); } toJSON() { return Object.assign(Object.assign({}, this.originalArgs), { className: fullName }); } } VirtualClass.CONSTRUCTOR_ID = constructorId; VirtualClass.SUBCLASS_OF_ID = subclassOfId; VirtualClass.className = fullName; VirtualClass.classType = isFunction ? "request" : "constructor"; if (namespace) { if (!classes[namespace]) { classes[namespace] = {}; } classes[namespace][name] = VirtualClass; } else { classes[name] = VirtualClass; } } return classes; } var api = buildApiFromTlSchema(); module2.exports = { Api: api }; } }); // node_modules/telegram/tl/custom/chatGetter.js var require_chatGetter = __commonJS({ "node_modules/telegram/tl/custom/chatGetter.js"(exports2) { "use strict"; init_define_import_meta_env(); var __asyncValues2 = exports2 && exports2.__asyncValues || function(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; 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); 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); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve({ value: v2, done: d }); }, reject); } }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ChatGetter = void 0; var __1 = require_telegram(); var api_1 = require_api(); var Helpers_1 = require_Helpers(); var inspect_1 = require_inspect(); var ChatGetter = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } static initChatClass(c, { chatPeer, inputChat, chat, broadcast }) { c._chatPeer = chatPeer; c._inputChat = inputChat; c._chat = chat; c._broadcast = broadcast; c._client = void 0; } get chat() { return this._chat; } async getChat() { var _a; if (!this._chat || "min" in this._chat && await this.getInputChat()) { try { if (this._inputChat) { this._chat = await ((_a = this._client) === null || _a === void 0 ? void 0 : _a.getEntity(this._inputChat)); } } catch (e) { await this._refetchChat(); } } return this._chat; } get inputChat() { if (!this._inputChat && this._chatPeer && this._client) { try { this._inputChat = this._client._entityCache.get(__1.utils.getPeerId(this._chatPeer)); } catch (e) { } } return this._inputChat; } async getInputChat() { var _a, e_1, _b, _c; if (!this.inputChat && this.chatId && this._client) { try { const target = this.chatId; try { for (var _d = true, _e = __asyncValues2(this._client.iterDialogs({ limit: 100 })), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; const dialog = _c; if (dialog.id.eq(target)) { this._chat = dialog.entity; this._inputChat = dialog.inputEntity; break; } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (!_d && !_a && (_b = _e.return)) await _b.call(_e); } finally { if (e_1) throw e_1.error; } } } catch (e) { } return this._inputChat; } return this._inputChat; } get chatId() { return this._chatPeer ? (0, Helpers_1.returnBigInt)(__1.utils.getPeerId(this._chatPeer)) : void 0; } get isPrivate() { return this._chatPeer ? this._chatPeer instanceof api_1.Api.PeerUser : void 0; } get isGroup() { if (!this._broadcast && this.chat && "broadcast" in this.chat) { this._broadcast = Boolean(this.chat.broadcast); } if (this._chatPeer instanceof api_1.Api.PeerChannel) { if (this._broadcast === void 0) { return void 0; } else { return !this._broadcast; } } return this._chatPeer instanceof api_1.Api.PeerChat; } get isChannel() { return this._chatPeer instanceof api_1.Api.PeerChannel; } async _refetchChat() { } }; exports2.ChatGetter = ChatGetter; } }); // node_modules/telegram/tl/custom/senderGetter.js var require_senderGetter = __commonJS({ "node_modules/telegram/tl/custom/senderGetter.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SenderGetter = void 0; var api_1 = require_api(); var Helpers_1 = require_Helpers(); var chatGetter_1 = require_chatGetter(); var inspect_1 = require_inspect(); var SenderGetter = class extends chatGetter_1.ChatGetter { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } static initSenderClass(c, { senderId, sender, inputSender }) { c._senderId = senderId; c._sender = sender; c._inputSender = inputSender; c._client = void 0; } get sender() { return this._sender; } async getSender() { if (this._client && (!this._sender || this._sender instanceof api_1.Api.Channel && this._sender.min) && await this.getInputSender()) { try { this._sender = await this._client.getEntity(this._inputSender); } catch (e) { await this._refetchSender(); } } return this._sender; } get inputSender() { if (!this._inputSender && this._senderId && this._client) { try { this._inputSender = this._client._entityCache.get(this._senderId); } catch (e) { } } return this._inputSender; } async getInputSender() { if (!this.inputSender && this._senderId && this._client) { await this._refetchSender(); } return this._inputSender; } get senderId() { return this._senderId; } async _refetchSender() { } }; exports2.SenderGetter = SenderGetter; } }); // node_modules/mime/Mime.js var require_Mime = __commonJS({ "node_modules/mime/Mime.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); function Mime() { this._types = /* @__PURE__ */ Object.create(null); this._extensions = /* @__PURE__ */ Object.create(null); for (let i = 0; i < arguments.length; i++) { this.define(arguments[i]); } this.define = this.define.bind(this); this.getType = this.getType.bind(this); this.getExtension = this.getExtension.bind(this); } Mime.prototype.define = function(typeMap, force) { for (let type in typeMap) { let extensions = typeMap[type].map(function(t) { return t.toLowerCase(); }); type = type.toLowerCase(); for (let i = 0; i < extensions.length; i++) { const ext = extensions[i]; if (ext[0] === "*") { continue; } if (!force && ext in this._types) { throw new Error( 'Attempt to change mapping for "' + ext + '" extension from "' + this._types[ext] + '" to "' + type + '". Pass `force=true` to allow this, otherwise remove "' + ext + '" from the list of extensions for "' + type + '".' ); } this._types[ext] = type; } if (force || !this._extensions[type]) { const ext = extensions[0]; this._extensions[type] = ext[0] !== "*" ? ext : ext.substr(1); } } }; Mime.prototype.getType = function(path2) { path2 = String(path2); let last = path2.replace(/^.*[/\\]/, "").toLowerCase(); let ext = last.replace(/^.*\./, "").toLowerCase(); let hasPath = last.length < path2.length; let hasDot = ext.length < last.length - 1; return (hasDot || !hasPath) && this._types[ext] || null; }; Mime.prototype.getExtension = function(type) { type = /^\s*([^;\s]*)/.test(type) && RegExp.$1; return type && this._extensions[type.toLowerCase()] || null; }; module2.exports = Mime; } }); // node_modules/mime/types/standard.js var require_standard = __commonJS({ "node_modules/mime/types/standard.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = { "application/andrew-inset": ["ez"], "application/applixware": ["aw"], "application/atom+xml": ["atom"], "application/atomcat+xml": ["atomcat"], "application/atomdeleted+xml": ["atomdeleted"], "application/atomsvc+xml": ["atomsvc"], "application/atsc-dwd+xml": ["dwd"], "application/atsc-held+xml": ["held"], "application/atsc-rsat+xml": ["rsat"], "application/bdoc": ["bdoc"], "application/calendar+xml": ["xcs"], "application/ccxml+xml": ["ccxml"], "application/cdfx+xml": ["cdfx"], "application/cdmi-capability": ["cdmia"], "application/cdmi-container": ["cdmic"], "application/cdmi-domain": ["cdmid"], "application/cdmi-object": ["cdmio"], "application/cdmi-queue": ["cdmiq"], "application/cu-seeme": ["cu"], "application/dash+xml": ["mpd"], "application/davmount+xml": ["davmount"], "application/docbook+xml": ["dbk"], "application/dssc+der": ["dssc"], "application/dssc+xml": ["xdssc"], "application/ecmascript": ["es", "ecma"], "application/emma+xml": ["emma"], "application/emotionml+xml": ["emotionml"], "application/epub+zip": ["epub"], "application/exi": ["exi"], "application/express": ["exp"], "application/fdt+xml": ["fdt"], "application/font-tdpfr": ["pfr"], "application/geo+json": ["geojson"], "application/gml+xml": ["gml"], "application/gpx+xml": ["gpx"], "application/gxf": ["gxf"], "application/gzip": ["gz"], "application/hjson": ["hjson"], "application/hyperstudio": ["stk"], "application/inkml+xml": ["ink", "inkml"], "application/ipfix": ["ipfix"], "application/its+xml": ["its"], "application/java-archive": ["jar", "war", "ear"], "application/java-serialized-object": ["ser"], "application/java-vm": ["class"], "application/javascript": ["js", "mjs"], "application/json": ["json", "map"], "application/json5": ["json5"], "application/jsonml+json": ["jsonml"], "application/ld+json": ["jsonld"], "application/lgr+xml": ["lgr"], "application/lost+xml": ["lostxml"], "application/mac-binhex40": ["hqx"], "application/mac-compactpro": ["cpt"], "application/mads+xml": ["mads"], "application/manifest+json": ["webmanifest"], "application/marc": ["mrc"], "application/marcxml+xml": ["mrcx"], "application/mathematica": ["ma", "nb", "mb"], "application/mathml+xml": ["mathml"], "application/mbox": ["mbox"], "application/mediaservercontrol+xml": ["mscml"], "application/metalink+xml": ["metalink"], "application/metalink4+xml": ["meta4"], "application/mets+xml": ["mets"], "application/mmt-aei+xml": ["maei"], "application/mmt-usd+xml": ["musd"], "application/mods+xml": ["mods"], "application/mp21": ["m21", "mp21"], "application/mp4": ["mp4s", "m4p"], "application/msword": ["doc", "dot"], "application/mxf": ["mxf"], "application/n-quads": ["nq"], "application/n-triples": ["nt"], "application/node": ["cjs"], "application/octet-stream": ["bin", "dms", "lrf", "mar", "so", "dist", "distz", "pkg", "bpk", "dump", "elc", "deploy", "exe", "dll", "deb", "dmg", "iso", "img", "msi", "msp", "msm", "buffer"], "application/oda": ["oda"], "application/oebps-package+xml": ["opf"], "application/ogg": ["ogx"], "application/omdoc+xml": ["omdoc"], "application/onenote": ["onetoc", "onetoc2", "onetmp", "onepkg"], "application/oxps": ["oxps"], "application/p2p-overlay+xml": ["relo"], "application/patch-ops-error+xml": ["xer"], "application/pdf": ["pdf"], "application/pgp-encrypted": ["pgp"], "application/pgp-signature": ["asc", "sig"], "application/pics-rules": ["prf"], "application/pkcs10": ["p10"], "application/pkcs7-mime": ["p7m", "p7c"], "application/pkcs7-signature": ["p7s"], "application/pkcs8": ["p8"], "application/pkix-attr-cert": ["ac"], "application/pkix-cert": ["cer"], "application/pkix-crl": ["crl"], "application/pkix-pkipath": ["pkipath"], "application/pkixcmp": ["pki"], "application/pls+xml": ["pls"], "application/postscript": ["ai", "eps", "ps"], "application/provenance+xml": ["provx"], "application/pskc+xml": ["pskcxml"], "application/raml+yaml": ["raml"], "application/rdf+xml": ["rdf", "owl"], "application/reginfo+xml": ["rif"], "application/relax-ng-compact-syntax": ["rnc"], "application/resource-lists+xml": ["rl"], "application/resource-lists-diff+xml": ["rld"], "application/rls-services+xml": ["rs"], "application/route-apd+xml": ["rapd"], "application/route-s-tsid+xml": ["sls"], "application/route-usd+xml": ["rusd"], "application/rpki-ghostbusters": ["gbr"], "application/rpki-manifest": ["mft"], "application/rpki-roa": ["roa"], "application/rsd+xml": ["rsd"], "application/rss+xml": ["rss"], "application/rtf": ["rtf"], "application/sbml+xml": ["sbml"], "application/scvp-cv-request": ["scq"], "application/scvp-cv-response": ["scs"], "application/scvp-vp-request": ["spq"], "application/scvp-vp-response": ["spp"], "application/sdp": ["sdp"], "application/senml+xml": ["senmlx"], "application/sensml+xml": ["sensmlx"], "application/set-payment-initiation": ["setpay"], "application/set-registration-initiation": ["setreg"], "application/shf+xml": ["shf"], "application/sieve": ["siv", "sieve"], "application/smil+xml": ["smi", "smil"], "application/sparql-query": ["rq"], "application/sparql-results+xml": ["srx"], "application/srgs": ["gram"], "application/srgs+xml": ["grxml"], "application/sru+xml": ["sru"], "application/ssdl+xml": ["ssdl"], "application/ssml+xml": ["ssml"], "application/swid+xml": ["swidtag"], "application/tei+xml": ["tei", "teicorpus"], "application/thraud+xml": ["tfi"], "application/timestamped-data": ["tsd"], "application/toml": ["toml"], "application/trig": ["trig"], "application/ttml+xml": ["ttml"], "application/ubjson": ["ubj"], "application/urc-ressheet+xml": ["rsheet"], "application/urc-targetdesc+xml": ["td"], "application/voicexml+xml": ["vxml"], "application/wasm": ["wasm"], "application/widget": ["wgt"], "application/winhlp": ["hlp"], "application/wsdl+xml": ["wsdl"], "application/wspolicy+xml": ["wspolicy"], "application/xaml+xml": ["xaml"], "application/xcap-att+xml": ["xav"], "application/xcap-caps+xml": ["xca"], "application/xcap-diff+xml": ["xdf"], "application/xcap-el+xml": ["xel"], "application/xcap-ns+xml": ["xns"], "application/xenc+xml": ["xenc"], "application/xhtml+xml": ["xhtml", "xht"], "application/xliff+xml": ["xlf"], "application/xml": ["xml", "xsl", "xsd", "rng"], "application/xml-dtd": ["dtd"], "application/xop+xml": ["xop"], "application/xproc+xml": ["xpl"], "application/xslt+xml": ["*xsl", "xslt"], "application/xspf+xml": ["xspf"], "application/xv+xml": ["mxml", "xhvml", "xvml", "xvm"], "application/yang": ["yang"], "application/yin+xml": ["yin"], "application/zip": ["zip"], "audio/3gpp": ["*3gpp"], "audio/adpcm": ["adp"], "audio/amr": ["amr"], "audio/basic": ["au", "snd"], "audio/midi": ["mid", "midi", "kar", "rmi"], "audio/mobile-xmf": ["mxmf"], "audio/mp3": ["*mp3"], "audio/mp4": ["m4a", "mp4a"], "audio/mpeg": ["mpga", "mp2", "mp2a", "mp3", "m2a", "m3a"], "audio/ogg": ["oga", "ogg", "spx", "opus"], "audio/s3m": ["s3m"], "audio/silk": ["sil"], "audio/wav": ["wav"], "audio/wave": ["*wav"], "audio/webm": ["weba"], "audio/xm": ["xm"], "font/collection": ["ttc"], "font/otf": ["otf"], "font/ttf": ["ttf"], "font/woff": ["woff"], "font/woff2": ["woff2"], "image/aces": ["exr"], "image/apng": ["apng"], "image/avif": ["avif"], "image/bmp": ["bmp"], "image/cgm": ["cgm"], "image/dicom-rle": ["drle"], "image/emf": ["emf"], "image/fits": ["fits"], "image/g3fax": ["g3"], "image/gif": ["gif"], "image/heic": ["heic"], "image/heic-sequence": ["heics"], "image/heif": ["heif"], "image/heif-sequence": ["heifs"], "image/hej2k": ["hej2"], "image/hsj2": ["hsj2"], "image/ief": ["ief"], "image/jls": ["jls"], "image/jp2": ["jp2", "jpg2"], "image/jpeg": ["jpeg", "jpg", "jpe"], "image/jph": ["jph"], "image/jphc": ["jhc"], "image/jpm": ["jpm"], "image/jpx": ["jpx", "jpf"], "image/jxr": ["jxr"], "image/jxra": ["jxra"], "image/jxrs": ["jxrs"], "image/jxs": ["jxs"], "image/jxsc": ["jxsc"], "image/jxsi": ["jxsi"], "image/jxss": ["jxss"], "image/ktx": ["ktx"], "image/ktx2": ["ktx2"], "image/png": ["png"], "image/sgi": ["sgi"], "image/svg+xml": ["svg", "svgz"], "image/t38": ["t38"], "image/tiff": ["tif", "tiff"], "image/tiff-fx": ["tfx"], "image/webp": ["webp"], "image/wmf": ["wmf"], "message/disposition-notification": ["disposition-notification"], "message/global": ["u8msg"], "message/global-delivery-status": ["u8dsn"], "message/global-disposition-notification": ["u8mdn"], "message/global-headers": ["u8hdr"], "message/rfc822": ["eml", "mime"], "model/3mf": ["3mf"], "model/gltf+json": ["gltf"], "model/gltf-binary": ["glb"], "model/iges": ["igs", "iges"], "model/mesh": ["msh", "mesh", "silo"], "model/mtl": ["mtl"], "model/obj": ["obj"], "model/step+xml": ["stpx"], "model/step+zip": ["stpz"], "model/step-xml+zip": ["stpxz"], "model/stl": ["stl"], "model/vrml": ["wrl", "vrml"], "model/x3d+binary": ["*x3db", "x3dbz"], "model/x3d+fastinfoset": ["x3db"], "model/x3d+vrml": ["*x3dv", "x3dvz"], "model/x3d+xml": ["x3d", "x3dz"], "model/x3d-vrml": ["x3dv"], "text/cache-manifest": ["appcache", "manifest"], "text/calendar": ["ics", "ifb"], "text/coffeescript": ["coffee", "litcoffee"], "text/css": ["css"], "text/csv": ["csv"], "text/html": ["html", "htm", "shtml"], "text/jade": ["jade"], "text/jsx": ["jsx"], "text/less": ["less"], "text/markdown": ["markdown", "md"], "text/mathml": ["mml"], "text/mdx": ["mdx"], "text/n3": ["n3"], "text/plain": ["txt", "text", "conf", "def", "list", "log", "in", "ini"], "text/richtext": ["rtx"], "text/rtf": ["*rtf"], "text/sgml": ["sgml", "sgm"], "text/shex": ["shex"], "text/slim": ["slim", "slm"], "text/spdx": ["spdx"], "text/stylus": ["stylus", "styl"], "text/tab-separated-values": ["tsv"], "text/troff": ["t", "tr", "roff", "man", "me", "ms"], "text/turtle": ["ttl"], "text/uri-list": ["uri", "uris", "urls"], "text/vcard": ["vcard"], "text/vtt": ["vtt"], "text/xml": ["*xml"], "text/yaml": ["yaml", "yml"], "video/3gpp": ["3gp", "3gpp"], "video/3gpp2": ["3g2"], "video/h261": ["h261"], "video/h263": ["h263"], "video/h264": ["h264"], "video/iso.segment": ["m4s"], "video/jpeg": ["jpgv"], "video/jpm": ["*jpm", "jpgm"], "video/mj2": ["mj2", "mjp2"], "video/mp2t": ["ts"], "video/mp4": ["mp4", "mp4v", "mpg4"], "video/mpeg": ["mpeg", "mpg", "mpe", "m1v", "m2v"], "video/ogg": ["ogv"], "video/quicktime": ["qt", "mov"], "video/webm": ["webm"] }; } }); // node_modules/mime/types/other.js var require_other = __commonJS({ "node_modules/mime/types/other.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = { "application/prs.cww": ["cww"], "application/vnd.1000minds.decision-model+xml": ["1km"], "application/vnd.3gpp.pic-bw-large": ["plb"], "application/vnd.3gpp.pic-bw-small": ["psb"], "application/vnd.3gpp.pic-bw-var": ["pvb"], "application/vnd.3gpp2.tcap": ["tcap"], "application/vnd.3m.post-it-notes": ["pwn"], "application/vnd.accpac.simply.aso": ["aso"], "application/vnd.accpac.simply.imp": ["imp"], "application/vnd.acucobol": ["acu"], "application/vnd.acucorp": ["atc", "acutc"], "application/vnd.adobe.air-application-installer-package+zip": ["air"], "application/vnd.adobe.formscentral.fcdt": ["fcdt"], "application/vnd.adobe.fxp": ["fxp", "fxpl"], "application/vnd.adobe.xdp+xml": ["xdp"], "application/vnd.adobe.xfdf": ["xfdf"], "application/vnd.ahead.space": ["ahead"], "application/vnd.airzip.filesecure.azf": ["azf"], "application/vnd.airzip.filesecure.azs": ["azs"], "application/vnd.amazon.ebook": ["azw"], "application/vnd.americandynamics.acc": ["acc"], "application/vnd.amiga.ami": ["ami"], "application/vnd.android.package-archive": ["apk"], "application/vnd.anser-web-certificate-issue-initiation": ["cii"], "application/vnd.anser-web-funds-transfer-initiation": ["fti"], "application/vnd.antix.game-component": ["atx"], "application/vnd.apple.installer+xml": ["mpkg"], "application/vnd.apple.keynote": ["key"], "application/vnd.apple.mpegurl": ["m3u8"], "application/vnd.apple.numbers": ["numbers"], "application/vnd.apple.pages": ["pages"], "application/vnd.apple.pkpass": ["pkpass"], "application/vnd.aristanetworks.swi": ["swi"], "application/vnd.astraea-software.iota": ["iota"], "application/vnd.audiograph": ["aep"], "application/vnd.balsamiq.bmml+xml": ["bmml"], "application/vnd.blueice.multipass": ["mpm"], "application/vnd.bmi": ["bmi"], "application/vnd.businessobjects": ["rep"], "application/vnd.chemdraw+xml": ["cdxml"], "application/vnd.chipnuts.karaoke-mmd": ["mmd"], "application/vnd.cinderella": ["cdy"], "application/vnd.citationstyles.style+xml": ["csl"], "application/vnd.claymore": ["cla"], "application/vnd.cloanto.rp9": ["rp9"], "application/vnd.clonk.c4group": ["c4g", "c4d", "c4f", "c4p", "c4u"], "application/vnd.cluetrust.cartomobile-config": ["c11amc"], "application/vnd.cluetrust.cartomobile-config-pkg": ["c11amz"], "application/vnd.commonspace": ["csp"], "application/vnd.contact.cmsg": ["cdbcmsg"], "application/vnd.cosmocaller": ["cmc"], "application/vnd.crick.clicker": ["clkx"], "application/vnd.crick.clicker.keyboard": ["clkk"], "application/vnd.crick.clicker.palette": ["clkp"], "application/vnd.crick.clicker.template": ["clkt"], "application/vnd.crick.clicker.wordbank": ["clkw"], "application/vnd.criticaltools.wbs+xml": ["wbs"], "application/vnd.ctc-posml": ["pml"], "application/vnd.cups-ppd": ["ppd"], "application/vnd.curl.car": ["car"], "application/vnd.curl.pcurl": ["pcurl"], "application/vnd.dart": ["dart"], "application/vnd.data-vision.rdz": ["rdz"], "application/vnd.dbf": ["dbf"], "application/vnd.dece.data": ["uvf", "uvvf", "uvd", "uvvd"], "application/vnd.dece.ttml+xml": ["uvt", "uvvt"], "application/vnd.dece.unspecified": ["uvx", "uvvx"], "application/vnd.dece.zip": ["uvz", "uvvz"], "application/vnd.denovo.fcselayout-link": ["fe_launch"], "application/vnd.dna": ["dna"], "application/vnd.dolby.mlp": ["mlp"], "application/vnd.dpgraph": ["dpg"], "application/vnd.dreamfactory": ["dfac"], "application/vnd.ds-keypoint": ["kpxx"], "application/vnd.dvb.ait": ["ait"], "application/vnd.dvb.service": ["svc"], "application/vnd.dynageo": ["geo"], "application/vnd.ecowin.chart": ["mag"], "application/vnd.enliven": ["nml"], "application/vnd.epson.esf": ["esf"], "application/vnd.epson.msf": ["msf"], "application/vnd.epson.quickanime": ["qam"], "application/vnd.epson.salt": ["slt"], "application/vnd.epson.ssf": ["ssf"], "application/vnd.eszigno3+xml": ["es3", "et3"], "application/vnd.ezpix-album": ["ez2"], "application/vnd.ezpix-package": ["ez3"], "application/vnd.fdf": ["fdf"], "application/vnd.fdsn.mseed": ["mseed"], "application/vnd.fdsn.seed": ["seed", "dataless"], "application/vnd.flographit": ["gph"], "application/vnd.fluxtime.clip": ["ftc"], "application/vnd.framemaker": ["fm", "frame", "maker", "book"], "application/vnd.frogans.fnc": ["fnc"], "application/vnd.frogans.ltf": ["ltf"], "application/vnd.fsc.weblaunch": ["fsc"], "application/vnd.fujitsu.oasys": ["oas"], "application/vnd.fujitsu.oasys2": ["oa2"], "application/vnd.fujitsu.oasys3": ["oa3"], "application/vnd.fujitsu.oasysgp": ["fg5"], "application/vnd.fujitsu.oasysprs": ["bh2"], "application/vnd.fujixerox.ddd": ["ddd"], "application/vnd.fujixerox.docuworks": ["xdw"], "application/vnd.fujixerox.docuworks.binder": ["xbd"], "application/vnd.fuzzysheet": ["fzs"], "application/vnd.genomatix.tuxedo": ["txd"], "application/vnd.geogebra.file": ["ggb"], "application/vnd.geogebra.tool": ["ggt"], "application/vnd.geometry-explorer": ["gex", "gre"], "application/vnd.geonext": ["gxt"], "application/vnd.geoplan": ["g2w"], "application/vnd.geospace": ["g3w"], "application/vnd.gmx": ["gmx"], "application/vnd.google-apps.document": ["gdoc"], "application/vnd.google-apps.presentation": ["gslides"], "application/vnd.google-apps.spreadsheet": ["gsheet"], "application/vnd.google-earth.kml+xml": ["kml"], "application/vnd.google-earth.kmz": ["kmz"], "application/vnd.grafeq": ["gqf", "gqs"], "application/vnd.groove-account": ["gac"], "application/vnd.groove-help": ["ghf"], "application/vnd.groove-identity-message": ["gim"], "application/vnd.groove-injector": ["grv"], "application/vnd.groove-tool-message": ["gtm"], "application/vnd.groove-tool-template": ["tpl"], "application/vnd.groove-vcard": ["vcg"], "application/vnd.hal+xml": ["hal"], "application/vnd.handheld-entertainment+xml": ["zmm"], "application/vnd.hbci": ["hbci"], "application/vnd.hhe.lesson-player": ["les"], "application/vnd.hp-hpgl": ["hpgl"], "application/vnd.hp-hpid": ["hpid"], "application/vnd.hp-hps": ["hps"], "application/vnd.hp-jlyt": ["jlt"], "application/vnd.hp-pcl": ["pcl"], "application/vnd.hp-pclxl": ["pclxl"], "application/vnd.hydrostatix.sof-data": ["sfd-hdstx"], "application/vnd.ibm.minipay": ["mpy"], "application/vnd.ibm.modcap": ["afp", "listafp", "list3820"], "application/vnd.ibm.rights-management": ["irm"], "application/vnd.ibm.secure-container": ["sc"], "application/vnd.iccprofile": ["icc", "icm"], "application/vnd.igloader": ["igl"], "application/vnd.immervision-ivp": ["ivp"], "application/vnd.immervision-ivu": ["ivu"], "application/vnd.insors.igm": ["igm"], "application/vnd.intercon.formnet": ["xpw", "xpx"], "application/vnd.intergeo": ["i2g"], "application/vnd.intu.qbo": ["qbo"], "application/vnd.intu.qfx": ["qfx"], "application/vnd.ipunplugged.rcprofile": ["rcprofile"], "application/vnd.irepository.package+xml": ["irp"], "application/vnd.is-xpr": ["xpr"], "application/vnd.isac.fcs": ["fcs"], "application/vnd.jam": ["jam"], "application/vnd.jcp.javame.midlet-rms": ["rms"], "application/vnd.jisp": ["jisp"], "application/vnd.joost.joda-archive": ["joda"], "application/vnd.kahootz": ["ktz", "ktr"], "application/vnd.kde.karbon": ["karbon"], "application/vnd.kde.kchart": ["chrt"], "application/vnd.kde.kformula": ["kfo"], "application/vnd.kde.kivio": ["flw"], "application/vnd.kde.kontour": ["kon"], "application/vnd.kde.kpresenter": ["kpr", "kpt"], "application/vnd.kde.kspread": ["ksp"], "application/vnd.kde.kword": ["kwd", "kwt"], "application/vnd.kenameaapp": ["htke"], "application/vnd.kidspiration": ["kia"], "application/vnd.kinar": ["kne", "knp"], "application/vnd.koan": ["skp", "skd", "skt", "skm"], "application/vnd.kodak-descriptor": ["sse"], "application/vnd.las.las+xml": ["lasxml"], "application/vnd.llamagraphics.life-balance.desktop": ["lbd"], "application/vnd.llamagraphics.life-balance.exchange+xml": ["lbe"], "application/vnd.lotus-1-2-3": ["123"], "application/vnd.lotus-approach": ["apr"], "application/vnd.lotus-freelance": ["pre"], "application/vnd.lotus-notes": ["nsf"], "application/vnd.lotus-organizer": ["org"], "application/vnd.lotus-screencam": ["scm"], "application/vnd.lotus-wordpro": ["lwp"], "application/vnd.macports.portpkg": ["portpkg"], "application/vnd.mapbox-vector-tile": ["mvt"], "application/vnd.mcd": ["mcd"], "application/vnd.medcalcdata": ["mc1"], "application/vnd.mediastation.cdkey": ["cdkey"], "application/vnd.mfer": ["mwf"], "application/vnd.mfmp": ["mfm"], "application/vnd.micrografx.flo": ["flo"], "application/vnd.micrografx.igx": ["igx"], "application/vnd.mif": ["mif"], "application/vnd.mobius.daf": ["daf"], "application/vnd.mobius.dis": ["dis"], "application/vnd.mobius.mbk": ["mbk"], "application/vnd.mobius.mqy": ["mqy"], "application/vnd.mobius.msl": ["msl"], "application/vnd.mobius.plc": ["plc"], "application/vnd.mobius.txf": ["txf"], "application/vnd.mophun.application": ["mpn"], "application/vnd.mophun.certificate": ["mpc"], "application/vnd.mozilla.xul+xml": ["xul"], "application/vnd.ms-artgalry": ["cil"], "application/vnd.ms-cab-compressed": ["cab"], "application/vnd.ms-excel": ["xls", "xlm", "xla", "xlc", "xlt", "xlw"], "application/vnd.ms-excel.addin.macroenabled.12": ["xlam"], "application/vnd.ms-excel.sheet.binary.macroenabled.12": ["xlsb"], "application/vnd.ms-excel.sheet.macroenabled.12": ["xlsm"], "application/vnd.ms-excel.template.macroenabled.12": ["xltm"], "application/vnd.ms-fontobject": ["eot"], "application/vnd.ms-htmlhelp": ["chm"], "application/vnd.ms-ims": ["ims"], "application/vnd.ms-lrm": ["lrm"], "application/vnd.ms-officetheme": ["thmx"], "application/vnd.ms-outlook": ["msg"], "application/vnd.ms-pki.seccat": ["cat"], "application/vnd.ms-pki.stl": ["*stl"], "application/vnd.ms-powerpoint": ["ppt", "pps", "pot"], "application/vnd.ms-powerpoint.addin.macroenabled.12": ["ppam"], "application/vnd.ms-powerpoint.presentation.macroenabled.12": ["pptm"], "application/vnd.ms-powerpoint.slide.macroenabled.12": ["sldm"], "application/vnd.ms-powerpoint.slideshow.macroenabled.12": ["ppsm"], "application/vnd.ms-powerpoint.template.macroenabled.12": ["potm"], "application/vnd.ms-project": ["mpp", "mpt"], "application/vnd.ms-word.document.macroenabled.12": ["docm"], "application/vnd.ms-word.template.macroenabled.12": ["dotm"], "application/vnd.ms-works": ["wps", "wks", "wcm", "wdb"], "application/vnd.ms-wpl": ["wpl"], "application/vnd.ms-xpsdocument": ["xps"], "application/vnd.mseq": ["mseq"], "application/vnd.musician": ["mus"], "application/vnd.muvee.style": ["msty"], "application/vnd.mynfc": ["taglet"], "application/vnd.neurolanguage.nlu": ["nlu"], "application/vnd.nitf": ["ntf", "nitf"], "application/vnd.noblenet-directory": ["nnd"], "application/vnd.noblenet-sealer": ["nns"], "application/vnd.noblenet-web": ["nnw"], "application/vnd.nokia.n-gage.ac+xml": ["*ac"], "application/vnd.nokia.n-gage.data": ["ngdat"], "application/vnd.nokia.n-gage.symbian.install": ["n-gage"], "application/vnd.nokia.radio-preset": ["rpst"], "application/vnd.nokia.radio-presets": ["rpss"], "application/vnd.novadigm.edm": ["edm"], "application/vnd.novadigm.edx": ["edx"], "application/vnd.novadigm.ext": ["ext"], "application/vnd.oasis.opendocument.chart": ["odc"], "application/vnd.oasis.opendocument.chart-template": ["otc"], "application/vnd.oasis.opendocument.database": ["odb"], "application/vnd.oasis.opendocument.formula": ["odf"], "application/vnd.oasis.opendocument.formula-template": ["odft"], "application/vnd.oasis.opendocument.graphics": ["odg"], "application/vnd.oasis.opendocument.graphics-template": ["otg"], "application/vnd.oasis.opendocument.image": ["odi"], "application/vnd.oasis.opendocument.image-template": ["oti"], "application/vnd.oasis.opendocument.presentation": ["odp"], "application/vnd.oasis.opendocument.presentation-template": ["otp"], "application/vnd.oasis.opendocument.spreadsheet": ["ods"], "application/vnd.oasis.opendocument.spreadsheet-template": ["ots"], "application/vnd.oasis.opendocument.text": ["odt"], "application/vnd.oasis.opendocument.text-master": ["odm"], "application/vnd.oasis.opendocument.text-template": ["ott"], "application/vnd.oasis.opendocument.text-web": ["oth"], "application/vnd.olpc-sugar": ["xo"], "application/vnd.oma.dd2+xml": ["dd2"], "application/vnd.openblox.game+xml": ["obgx"], "application/vnd.openofficeorg.extension": ["oxt"], "application/vnd.openstreetmap.data+xml": ["osm"], "application/vnd.openxmlformats-officedocument.presentationml.presentation": ["pptx"], "application/vnd.openxmlformats-officedocument.presentationml.slide": ["sldx"], "application/vnd.openxmlformats-officedocument.presentationml.slideshow": ["ppsx"], "application/vnd.openxmlformats-officedocument.presentationml.template": ["potx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": ["xlsx"], "application/vnd.openxmlformats-officedocument.spreadsheetml.template": ["xltx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.document": ["docx"], "application/vnd.openxmlformats-officedocument.wordprocessingml.template": ["dotx"], "application/vnd.osgeo.mapguide.package": ["mgp"], "application/vnd.osgi.dp": ["dp"], "application/vnd.osgi.subsystem": ["esa"], "application/vnd.palm": ["pdb", "pqa", "oprc"], "application/vnd.pawaafile": ["paw"], "application/vnd.pg.format": ["str"], "application/vnd.pg.osasli": ["ei6"], "application/vnd.picsel": ["efif"], "application/vnd.pmi.widget": ["wg"], "application/vnd.pocketlearn": ["plf"], "application/vnd.powerbuilder6": ["pbd"], "application/vnd.previewsystems.box": ["box"], "application/vnd.proteus.magazine": ["mgz"], "application/vnd.publishare-delta-tree": ["qps"], "application/vnd.pvi.ptid1": ["ptid"], "application/vnd.quark.quarkxpress": ["qxd", "qxt", "qwd", "qwt", "qxl", "qxb"], "application/vnd.rar": ["rar"], "application/vnd.realvnc.bed": ["bed"], "application/vnd.recordare.musicxml": ["mxl"], "application/vnd.recordare.musicxml+xml": ["musicxml"], "application/vnd.rig.cryptonote": ["cryptonote"], "application/vnd.rim.cod": ["cod"], "application/vnd.rn-realmedia": ["rm"], "application/vnd.rn-realmedia-vbr": ["rmvb"], "application/vnd.route66.link66+xml": ["link66"], "application/vnd.sailingtracker.track": ["st"], "application/vnd.seemail": ["see"], "application/vnd.sema": ["sema"], "application/vnd.semd": ["semd"], "application/vnd.semf": ["semf"], "application/vnd.shana.informed.formdata": ["ifm"], "application/vnd.shana.informed.formtemplate": ["itp"], "application/vnd.shana.informed.interchange": ["iif"], "application/vnd.shana.informed.package": ["ipk"], "application/vnd.simtech-mindmapper": ["twd", "twds"], "application/vnd.smaf": ["mmf"], "application/vnd.smart.teacher": ["teacher"], "application/vnd.software602.filler.form+xml": ["fo"], "application/vnd.solent.sdkm+xml": ["sdkm", "sdkd"], "application/vnd.spotfire.dxp": ["dxp"], "application/vnd.spotfire.sfs": ["sfs"], "application/vnd.stardivision.calc": ["sdc"], "application/vnd.stardivision.draw": ["sda"], "application/vnd.stardivision.impress": ["sdd"], "application/vnd.stardivision.math": ["smf"], "application/vnd.stardivision.writer": ["sdw", "vor"], "application/vnd.stardivision.writer-global": ["sgl"], "application/vnd.stepmania.package": ["smzip"], "application/vnd.stepmania.stepchart": ["sm"], "application/vnd.sun.wadl+xml": ["wadl"], "application/vnd.sun.xml.calc": ["sxc"], "application/vnd.sun.xml.calc.template": ["stc"], "application/vnd.sun.xml.draw": ["sxd"], "application/vnd.sun.xml.draw.template": ["std"], "application/vnd.sun.xml.impress": ["sxi"], "application/vnd.sun.xml.impress.template": ["sti"], "application/vnd.sun.xml.math": ["sxm"], "application/vnd.sun.xml.writer": ["sxw"], "application/vnd.sun.xml.writer.global": ["sxg"], "application/vnd.sun.xml.writer.template": ["stw"], "application/vnd.sus-calendar": ["sus", "susp"], "application/vnd.svd": ["svd"], "application/vnd.symbian.install": ["sis", "sisx"], "application/vnd.syncml+xml": ["xsm"], "application/vnd.syncml.dm+wbxml": ["bdm"], "application/vnd.syncml.dm+xml": ["xdm"], "application/vnd.syncml.dmddf+xml": ["ddf"], "application/vnd.tao.intent-module-archive": ["tao"], "application/vnd.tcpdump.pcap": ["pcap", "cap", "dmp"], "application/vnd.tmobile-livetv": ["tmo"], "application/vnd.trid.tpt": ["tpt"], "application/vnd.triscape.mxs": ["mxs"], "application/vnd.trueapp": ["tra"], "application/vnd.ufdl": ["ufd", "ufdl"], "application/vnd.uiq.theme": ["utz"], "application/vnd.umajin": ["umj"], "application/vnd.unity": ["unityweb"], "application/vnd.uoml+xml": ["uoml"], "application/vnd.vcx": ["vcx"], "application/vnd.visio": ["vsd", "vst", "vss", "vsw"], "application/vnd.visionary": ["vis"], "application/vnd.vsf": ["vsf"], "application/vnd.wap.wbxml": ["wbxml"], "application/vnd.wap.wmlc": ["wmlc"], "application/vnd.wap.wmlscriptc": ["wmlsc"], "application/vnd.webturbo": ["wtb"], "application/vnd.wolfram.player": ["nbp"], "application/vnd.wordperfect": ["wpd"], "application/vnd.wqd": ["wqd"], "application/vnd.wt.stf": ["stf"], "application/vnd.xara": ["xar"], "application/vnd.xfdl": ["xfdl"], "application/vnd.yamaha.hv-dic": ["hvd"], "application/vnd.yamaha.hv-script": ["hvs"], "application/vnd.yamaha.hv-voice": ["hvp"], "application/vnd.yamaha.openscoreformat": ["osf"], "application/vnd.yamaha.openscoreformat.osfpvg+xml": ["osfpvg"], "application/vnd.yamaha.smaf-audio": ["saf"], "application/vnd.yamaha.smaf-phrase": ["spf"], "application/vnd.yellowriver-custom-menu": ["cmp"], "application/vnd.zul": ["zir", "zirz"], "application/vnd.zzazz.deck+xml": ["zaz"], "application/x-7z-compressed": ["7z"], "application/x-abiword": ["abw"], "application/x-ace-compressed": ["ace"], "application/x-apple-diskimage": ["*dmg"], "application/x-arj": ["arj"], "application/x-authorware-bin": ["aab", "x32", "u32", "vox"], "application/x-authorware-map": ["aam"], "application/x-authorware-seg": ["aas"], "application/x-bcpio": ["bcpio"], "application/x-bdoc": ["*bdoc"], "application/x-bittorrent": ["torrent"], "application/x-blorb": ["blb", "blorb"], "application/x-bzip": ["bz"], "application/x-bzip2": ["bz2", "boz"], "application/x-cbr": ["cbr", "cba", "cbt", "cbz", "cb7"], "application/x-cdlink": ["vcd"], "application/x-cfs-compressed": ["cfs"], "application/x-chat": ["chat"], "application/x-chess-pgn": ["pgn"], "application/x-chrome-extension": ["crx"], "application/x-cocoa": ["cco"], "application/x-conference": ["nsc"], "application/x-cpio": ["cpio"], "application/x-csh": ["csh"], "application/x-debian-package": ["*deb", "udeb"], "application/x-dgc-compressed": ["dgc"], "application/x-director": ["dir", "dcr", "dxr", "cst", "cct", "cxt", "w3d", "fgd", "swa"], "application/x-doom": ["wad"], "application/x-dtbncx+xml": ["ncx"], "application/x-dtbook+xml": ["dtb"], "application/x-dtbresource+xml": ["res"], "application/x-dvi": ["dvi"], "application/x-envoy": ["evy"], "application/x-eva": ["eva"], "application/x-font-bdf": ["bdf"], "application/x-font-ghostscript": ["gsf"], "application/x-font-linux-psf": ["psf"], "application/x-font-pcf": ["pcf"], "application/x-font-snf": ["snf"], "application/x-font-type1": ["pfa", "pfb", "pfm", "afm"], "application/x-freearc": ["arc"], "application/x-futuresplash": ["spl"], "application/x-gca-compressed": ["gca"], "application/x-glulx": ["ulx"], "application/x-gnumeric": ["gnumeric"], "application/x-gramps-xml": ["gramps"], "application/x-gtar": ["gtar"], "application/x-hdf": ["hdf"], "application/x-httpd-php": ["php"], "application/x-install-instructions": ["install"], "application/x-iso9660-image": ["*iso"], "application/x-iwork-keynote-sffkey": ["*key"], "application/x-iwork-numbers-sffnumbers": ["*numbers"], "application/x-iwork-pages-sffpages": ["*pages"], "application/x-java-archive-diff": ["jardiff"], "application/x-java-jnlp-file": ["jnlp"], "application/x-keepass2": ["kdbx"], "application/x-latex": ["latex"], "application/x-lua-bytecode": ["luac"], "application/x-lzh-compressed": ["lzh", "lha"], "application/x-makeself": ["run"], "application/x-mie": ["mie"], "application/x-mobipocket-ebook": ["prc", "mobi"], "application/x-ms-application": ["application"], "application/x-ms-shortcut": ["lnk"], "application/x-ms-wmd": ["wmd"], "application/x-ms-wmz": ["wmz"], "application/x-ms-xbap": ["xbap"], "application/x-msaccess": ["mdb"], "application/x-msbinder": ["obd"], "application/x-mscardfile": ["crd"], "application/x-msclip": ["clp"], "application/x-msdos-program": ["*exe"], "application/x-msdownload": ["*exe", "*dll", "com", "bat", "*msi"], "application/x-msmediaview": ["mvb", "m13", "m14"], "application/x-msmetafile": ["*wmf", "*wmz", "*emf", "emz"], "application/x-msmoney": ["mny"], "application/x-mspublisher": ["pub"], "application/x-msschedule": ["scd"], "application/x-msterminal": ["trm"], "application/x-mswrite": ["wri"], "application/x-netcdf": ["nc", "cdf"], "application/x-ns-proxy-autoconfig": ["pac"], "application/x-nzb": ["nzb"], "application/x-perl": ["pl", "pm"], "application/x-pilot": ["*prc", "*pdb"], "application/x-pkcs12": ["p12", "pfx"], "application/x-pkcs7-certificates": ["p7b", "spc"], "application/x-pkcs7-certreqresp": ["p7r"], "application/x-rar-compressed": ["*rar"], "application/x-redhat-package-manager": ["rpm"], "application/x-research-info-systems": ["ris"], "application/x-sea": ["sea"], "application/x-sh": ["sh"], "application/x-shar": ["shar"], "application/x-shockwave-flash": ["swf"], "application/x-silverlight-app": ["xap"], "application/x-sql": ["sql"], "application/x-stuffit": ["sit"], "application/x-stuffitx": ["sitx"], "application/x-subrip": ["srt"], "application/x-sv4cpio": ["sv4cpio"], "application/x-sv4crc": ["sv4crc"], "application/x-t3vm-image": ["t3"], "application/x-tads": ["gam"], "application/x-tar": ["tar"], "application/x-tcl": ["tcl", "tk"], "application/x-tex": ["tex"], "application/x-tex-tfm": ["tfm"], "application/x-texinfo": ["texinfo", "texi"], "application/x-tgif": ["*obj"], "application/x-ustar": ["ustar"], "application/x-virtualbox-hdd": ["hdd"], "application/x-virtualbox-ova": ["ova"], "application/x-virtualbox-ovf": ["ovf"], "application/x-virtualbox-vbox": ["vbox"], "application/x-virtualbox-vbox-extpack": ["vbox-extpack"], "application/x-virtualbox-vdi": ["vdi"], "application/x-virtualbox-vhd": ["vhd"], "application/x-virtualbox-vmdk": ["vmdk"], "application/x-wais-source": ["src"], "application/x-web-app-manifest+json": ["webapp"], "application/x-x509-ca-cert": ["der", "crt", "pem"], "application/x-xfig": ["fig"], "application/x-xliff+xml": ["*xlf"], "application/x-xpinstall": ["xpi"], "application/x-xz": ["xz"], "application/x-zmachine": ["z1", "z2", "z3", "z4", "z5", "z6", "z7", "z8"], "audio/vnd.dece.audio": ["uva", "uvva"], "audio/vnd.digital-winds": ["eol"], "audio/vnd.dra": ["dra"], "audio/vnd.dts": ["dts"], "audio/vnd.dts.hd": ["dtshd"], "audio/vnd.lucent.voice": ["lvp"], "audio/vnd.ms-playready.media.pya": ["pya"], "audio/vnd.nuera.ecelp4800": ["ecelp4800"], "audio/vnd.nuera.ecelp7470": ["ecelp7470"], "audio/vnd.nuera.ecelp9600": ["ecelp9600"], "audio/vnd.rip": ["rip"], "audio/x-aac": ["aac"], "audio/x-aiff": ["aif", "aiff", "aifc"], "audio/x-caf": ["caf"], "audio/x-flac": ["flac"], "audio/x-m4a": ["*m4a"], "audio/x-matroska": ["mka"], "audio/x-mpegurl": ["m3u"], "audio/x-ms-wax": ["wax"], "audio/x-ms-wma": ["wma"], "audio/x-pn-realaudio": ["ram", "ra"], "audio/x-pn-realaudio-plugin": ["rmp"], "audio/x-realaudio": ["*ra"], "audio/x-wav": ["*wav"], "chemical/x-cdx": ["cdx"], "chemical/x-cif": ["cif"], "chemical/x-cmdf": ["cmdf"], "chemical/x-cml": ["cml"], "chemical/x-csml": ["csml"], "chemical/x-xyz": ["xyz"], "image/prs.btif": ["btif"], "image/prs.pti": ["pti"], "image/vnd.adobe.photoshop": ["psd"], "image/vnd.airzip.accelerator.azv": ["azv"], "image/vnd.dece.graphic": ["uvi", "uvvi", "uvg", "uvvg"], "image/vnd.djvu": ["djvu", "djv"], "image/vnd.dvb.subtitle": ["*sub"], "image/vnd.dwg": ["dwg"], "image/vnd.dxf": ["dxf"], "image/vnd.fastbidsheet": ["fbs"], "image/vnd.fpx": ["fpx"], "image/vnd.fst": ["fst"], "image/vnd.fujixerox.edmics-mmr": ["mmr"], "image/vnd.fujixerox.edmics-rlc": ["rlc"], "image/vnd.microsoft.icon": ["ico"], "image/vnd.ms-dds": ["dds"], "image/vnd.ms-modi": ["mdi"], "image/vnd.ms-photo": ["wdp"], "image/vnd.net-fpx": ["npx"], "image/vnd.pco.b16": ["b16"], "image/vnd.tencent.tap": ["tap"], "image/vnd.valve.source.texture": ["vtf"], "image/vnd.wap.wbmp": ["wbmp"], "image/vnd.xiff": ["xif"], "image/vnd.zbrush.pcx": ["pcx"], "image/x-3ds": ["3ds"], "image/x-cmu-raster": ["ras"], "image/x-cmx": ["cmx"], "image/x-freehand": ["fh", "fhc", "fh4", "fh5", "fh7"], "image/x-icon": ["*ico"], "image/x-jng": ["jng"], "image/x-mrsid-image": ["sid"], "image/x-ms-bmp": ["*bmp"], "image/x-pcx": ["*pcx"], "image/x-pict": ["pic", "pct"], "image/x-portable-anymap": ["pnm"], "image/x-portable-bitmap": ["pbm"], "image/x-portable-graymap": ["pgm"], "image/x-portable-pixmap": ["ppm"], "image/x-rgb": ["rgb"], "image/x-tga": ["tga"], "image/x-xbitmap": ["xbm"], "image/x-xpixmap": ["xpm"], "image/x-xwindowdump": ["xwd"], "message/vnd.wfa.wsc": ["wsc"], "model/vnd.collada+xml": ["dae"], "model/vnd.dwf": ["dwf"], "model/vnd.gdl": ["gdl"], "model/vnd.gtw": ["gtw"], "model/vnd.mts": ["mts"], "model/vnd.opengex": ["ogex"], "model/vnd.parasolid.transmit.binary": ["x_b"], "model/vnd.parasolid.transmit.text": ["x_t"], "model/vnd.sap.vds": ["vds"], "model/vnd.usdz+zip": ["usdz"], "model/vnd.valve.source.compiled-map": ["bsp"], "model/vnd.vtu": ["vtu"], "text/prs.lines.tag": ["dsc"], "text/vnd.curl": ["curl"], "text/vnd.curl.dcurl": ["dcurl"], "text/vnd.curl.mcurl": ["mcurl"], "text/vnd.curl.scurl": ["scurl"], "text/vnd.dvb.subtitle": ["sub"], "text/vnd.fly": ["fly"], "text/vnd.fmi.flexstor": ["flx"], "text/vnd.graphviz": ["gv"], "text/vnd.in3d.3dml": ["3dml"], "text/vnd.in3d.spot": ["spot"], "text/vnd.sun.j2me.app-descriptor": ["jad"], "text/vnd.wap.wml": ["wml"], "text/vnd.wap.wmlscript": ["wmls"], "text/x-asm": ["s", "asm"], "text/x-c": ["c", "cc", "cxx", "cpp", "h", "hh", "dic"], "text/x-component": ["htc"], "text/x-fortran": ["f", "for", "f77", "f90"], "text/x-handlebars-template": ["hbs"], "text/x-java-source": ["java"], "text/x-lua": ["lua"], "text/x-markdown": ["mkd"], "text/x-nfo": ["nfo"], "text/x-opml": ["opml"], "text/x-org": ["*org"], "text/x-pascal": ["p", "pas"], "text/x-processing": ["pde"], "text/x-sass": ["sass"], "text/x-scss": ["scss"], "text/x-setext": ["etx"], "text/x-sfv": ["sfv"], "text/x-suse-ymp": ["ymp"], "text/x-uuencode": ["uu"], "text/x-vcalendar": ["vcs"], "text/x-vcard": ["vcf"], "video/vnd.dece.hd": ["uvh", "uvvh"], "video/vnd.dece.mobile": ["uvm", "uvvm"], "video/vnd.dece.pd": ["uvp", "uvvp"], "video/vnd.dece.sd": ["uvs", "uvvs"], "video/vnd.dece.video": ["uvv", "uvvv"], "video/vnd.dvb.file": ["dvb"], "video/vnd.fvt": ["fvt"], "video/vnd.mpegurl": ["mxu", "m4u"], "video/vnd.ms-playready.media.pyv": ["pyv"], "video/vnd.uvvu.mp4": ["uvu", "uvvu"], "video/vnd.vivo": ["viv"], "video/x-f4v": ["f4v"], "video/x-fli": ["fli"], "video/x-flv": ["flv"], "video/x-m4v": ["m4v"], "video/x-matroska": ["mkv", "mk3d", "mks"], "video/x-mng": ["mng"], "video/x-ms-asf": ["asf", "asx"], "video/x-ms-vob": ["vob"], "video/x-ms-wm": ["wm"], "video/x-ms-wmv": ["wmv"], "video/x-ms-wmx": ["wmx"], "video/x-ms-wvx": ["wvx"], "video/x-msvideo": ["avi"], "video/x-sgi-movie": ["movie"], "video/x-smv": ["smv"], "x-conference/x-cooltalk": ["ice"] }; } }); // node_modules/mime/index.js var require_mime3 = __commonJS({ "node_modules/mime/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Mime = require_Mime(); module2.exports = new Mime(require_standard(), require_other()); } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/decode.json var require_decode3 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/decode.json"(exports2, module2) { module2.exports = { "0": 65533, "128": 8364, "130": 8218, "131": 402, "132": 8222, "133": 8230, "134": 8224, "135": 8225, "136": 710, "137": 8240, "138": 352, "139": 8249, "140": 338, "142": 381, "145": 8216, "146": 8217, "147": 8220, "148": 8221, "149": 8226, "150": 8211, "151": 8212, "152": 732, "153": 8482, "154": 353, "155": 8250, "156": 339, "158": 382, "159": 376 }; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/decode_codepoint.js var require_decode_codepoint3 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/decode_codepoint.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); var decode_json_1 = __importDefault2(require_decode3()); var fromCodePoint = ( // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition String.fromCodePoint || function(codePoint) { var output = ""; if (codePoint > 65535) { codePoint -= 65536; output += String.fromCharCode(codePoint >>> 10 & 1023 | 55296); codePoint = 56320 | codePoint & 1023; } output += String.fromCharCode(codePoint); return output; } ); function decodeCodePoint(codePoint) { if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) { return "\uFFFD"; } if (codePoint in decode_json_1.default) { codePoint = decode_json_1.default[codePoint]; } return fromCodePoint(codePoint); } exports2.default = decodeCodePoint; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/entities.json var require_entities = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/entities.json"(exports2, module2) { module2.exports = { Aacute: "\xC1", aacute: "\xE1", Abreve: "\u0102", abreve: "\u0103", ac: "\u223E", acd: "\u223F", acE: "\u223E\u0333", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", Acy: "\u0410", acy: "\u0430", AElig: "\xC6", aelig: "\xE6", af: "\u2061", Afr: "\u{1D504}", afr: "\u{1D51E}", Agrave: "\xC0", agrave: "\xE0", alefsym: "\u2135", aleph: "\u2135", Alpha: "\u0391", alpha: "\u03B1", Amacr: "\u0100", amacr: "\u0101", amalg: "\u2A3F", amp: "&", AMP: "&", andand: "\u2A55", And: "\u2A53", and: "\u2227", andd: "\u2A5C", andslope: "\u2A58", andv: "\u2A5A", ang: "\u2220", ange: "\u29A4", angle: "\u2220", angmsdaa: "\u29A8", angmsdab: "\u29A9", angmsdac: "\u29AA", angmsdad: "\u29AB", angmsdae: "\u29AC", angmsdaf: "\u29AD", angmsdag: "\u29AE", angmsdah: "\u29AF", angmsd: "\u2221", angrt: "\u221F", angrtvb: "\u22BE", angrtvbd: "\u299D", angsph: "\u2222", angst: "\xC5", angzarr: "\u237C", Aogon: "\u0104", aogon: "\u0105", Aopf: "\u{1D538}", aopf: "\u{1D552}", apacir: "\u2A6F", ap: "\u2248", apE: "\u2A70", ape: "\u224A", apid: "\u224B", apos: "'", ApplyFunction: "\u2061", approx: "\u2248", approxeq: "\u224A", Aring: "\xC5", aring: "\xE5", Ascr: "\u{1D49C}", ascr: "\u{1D4B6}", Assign: "\u2254", ast: "*", asymp: "\u2248", asympeq: "\u224D", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", awconint: "\u2233", awint: "\u2A11", backcong: "\u224C", backepsilon: "\u03F6", backprime: "\u2035", backsim: "\u223D", backsimeq: "\u22CD", Backslash: "\u2216", Barv: "\u2AE7", barvee: "\u22BD", barwed: "\u2305", Barwed: "\u2306", barwedge: "\u2305", bbrk: "\u23B5", bbrktbrk: "\u23B6", bcong: "\u224C", Bcy: "\u0411", bcy: "\u0431", bdquo: "\u201E", becaus: "\u2235", because: "\u2235", Because: "\u2235", bemptyv: "\u29B0", bepsi: "\u03F6", bernou: "\u212C", Bernoullis: "\u212C", Beta: "\u0392", beta: "\u03B2", beth: "\u2136", between: "\u226C", Bfr: "\u{1D505}", bfr: "\u{1D51F}", bigcap: "\u22C2", bigcirc: "\u25EF", bigcup: "\u22C3", bigodot: "\u2A00", bigoplus: "\u2A01", bigotimes: "\u2A02", bigsqcup: "\u2A06", bigstar: "\u2605", bigtriangledown: "\u25BD", bigtriangleup: "\u25B3", biguplus: "\u2A04", bigvee: "\u22C1", bigwedge: "\u22C0", bkarow: "\u290D", blacklozenge: "\u29EB", blacksquare: "\u25AA", blacktriangle: "\u25B4", blacktriangledown: "\u25BE", blacktriangleleft: "\u25C2", blacktriangleright: "\u25B8", blank: "\u2423", blk12: "\u2592", blk14: "\u2591", blk34: "\u2593", block: "\u2588", bne: "=\u20E5", bnequiv: "\u2261\u20E5", bNot: "\u2AED", bnot: "\u2310", Bopf: "\u{1D539}", bopf: "\u{1D553}", bot: "\u22A5", bottom: "\u22A5", bowtie: "\u22C8", boxbox: "\u29C9", boxdl: "\u2510", boxdL: "\u2555", boxDl: "\u2556", boxDL: "\u2557", boxdr: "\u250C", boxdR: "\u2552", boxDr: "\u2553", boxDR: "\u2554", boxh: "\u2500", boxH: "\u2550", boxhd: "\u252C", boxHd: "\u2564", boxhD: "\u2565", boxHD: "\u2566", boxhu: "\u2534", boxHu: "\u2567", boxhU: "\u2568", boxHU: "\u2569", boxminus: "\u229F", boxplus: "\u229E", boxtimes: "\u22A0", boxul: "\u2518", boxuL: "\u255B", boxUl: "\u255C", boxUL: "\u255D", boxur: "\u2514", boxuR: "\u2558", boxUr: "\u2559", boxUR: "\u255A", boxv: "\u2502", boxV: "\u2551", boxvh: "\u253C", boxvH: "\u256A", boxVh: "\u256B", boxVH: "\u256C", boxvl: "\u2524", boxvL: "\u2561", boxVl: "\u2562", boxVL: "\u2563", boxvr: "\u251C", boxvR: "\u255E", boxVr: "\u255F", boxVR: "\u2560", bprime: "\u2035", breve: "\u02D8", Breve: "\u02D8", brvbar: "\xA6", bscr: "\u{1D4B7}", Bscr: "\u212C", bsemi: "\u204F", bsim: "\u223D", bsime: "\u22CD", bsolb: "\u29C5", bsol: "\\", bsolhsub: "\u27C8", bull: "\u2022", bullet: "\u2022", bump: "\u224E", bumpE: "\u2AAE", bumpe: "\u224F", Bumpeq: "\u224E", bumpeq: "\u224F", Cacute: "\u0106", cacute: "\u0107", capand: "\u2A44", capbrcup: "\u2A49", capcap: "\u2A4B", cap: "\u2229", Cap: "\u22D2", capcup: "\u2A47", capdot: "\u2A40", CapitalDifferentialD: "\u2145", caps: "\u2229\uFE00", caret: "\u2041", caron: "\u02C7", Cayleys: "\u212D", ccaps: "\u2A4D", Ccaron: "\u010C", ccaron: "\u010D", Ccedil: "\xC7", ccedil: "\xE7", Ccirc: "\u0108", ccirc: "\u0109", Cconint: "\u2230", ccups: "\u2A4C", ccupssm: "\u2A50", Cdot: "\u010A", cdot: "\u010B", cedil: "\xB8", Cedilla: "\xB8", cemptyv: "\u29B2", cent: "\xA2", centerdot: "\xB7", CenterDot: "\xB7", cfr: "\u{1D520}", Cfr: "\u212D", CHcy: "\u0427", chcy: "\u0447", check: "\u2713", checkmark: "\u2713", Chi: "\u03A7", chi: "\u03C7", circ: "\u02C6", circeq: "\u2257", circlearrowleft: "\u21BA", circlearrowright: "\u21BB", circledast: "\u229B", circledcirc: "\u229A", circleddash: "\u229D", CircleDot: "\u2299", circledR: "\xAE", circledS: "\u24C8", CircleMinus: "\u2296", CirclePlus: "\u2295", CircleTimes: "\u2297", cir: "\u25CB", cirE: "\u29C3", cire: "\u2257", cirfnint: "\u2A10", cirmid: "\u2AEF", cirscir: "\u29C2", ClockwiseContourIntegral: "\u2232", CloseCurlyDoubleQuote: "\u201D", CloseCurlyQuote: "\u2019", clubs: "\u2663", clubsuit: "\u2663", colon: ":", Colon: "\u2237", Colone: "\u2A74", colone: "\u2254", coloneq: "\u2254", comma: ",", commat: "@", comp: "\u2201", compfn: "\u2218", complement: "\u2201", complexes: "\u2102", cong: "\u2245", congdot: "\u2A6D", Congruent: "\u2261", conint: "\u222E", Conint: "\u222F", ContourIntegral: "\u222E", copf: "\u{1D554}", Copf: "\u2102", coprod: "\u2210", Coproduct: "\u2210", copy: "\xA9", COPY: "\xA9", copysr: "\u2117", CounterClockwiseContourIntegral: "\u2233", crarr: "\u21B5", cross: "\u2717", Cross: "\u2A2F", Cscr: "\u{1D49E}", cscr: "\u{1D4B8}", csub: "\u2ACF", csube: "\u2AD1", csup: "\u2AD0", csupe: "\u2AD2", ctdot: "\u22EF", cudarrl: "\u2938", cudarrr: "\u2935", cuepr: "\u22DE", cuesc: "\u22DF", cularr: "\u21B6", cularrp: "\u293D", cupbrcap: "\u2A48", cupcap: "\u2A46", CupCap: "\u224D", cup: "\u222A", Cup: "\u22D3", cupcup: "\u2A4A", cupdot: "\u228D", cupor: "\u2A45", cups: "\u222A\uFE00", curarr: "\u21B7", curarrm: "\u293C", curlyeqprec: "\u22DE", curlyeqsucc: "\u22DF", curlyvee: "\u22CE", curlywedge: "\u22CF", curren: "\xA4", curvearrowleft: "\u21B6", curvearrowright: "\u21B7", cuvee: "\u22CE", cuwed: "\u22CF", cwconint: "\u2232", cwint: "\u2231", cylcty: "\u232D", dagger: "\u2020", Dagger: "\u2021", daleth: "\u2138", darr: "\u2193", Darr: "\u21A1", dArr: "\u21D3", dash: "\u2010", Dashv: "\u2AE4", dashv: "\u22A3", dbkarow: "\u290F", dblac: "\u02DD", Dcaron: "\u010E", dcaron: "\u010F", Dcy: "\u0414", dcy: "\u0434", ddagger: "\u2021", ddarr: "\u21CA", DD: "\u2145", dd: "\u2146", DDotrahd: "\u2911", ddotseq: "\u2A77", deg: "\xB0", Del: "\u2207", Delta: "\u0394", delta: "\u03B4", demptyv: "\u29B1", dfisht: "\u297F", Dfr: "\u{1D507}", dfr: "\u{1D521}", dHar: "\u2965", dharl: "\u21C3", dharr: "\u21C2", DiacriticalAcute: "\xB4", DiacriticalDot: "\u02D9", DiacriticalDoubleAcute: "\u02DD", DiacriticalGrave: "`", DiacriticalTilde: "\u02DC", diam: "\u22C4", diamond: "\u22C4", Diamond: "\u22C4", diamondsuit: "\u2666", diams: "\u2666", die: "\xA8", DifferentialD: "\u2146", digamma: "\u03DD", disin: "\u22F2", div: "\xF7", divide: "\xF7", divideontimes: "\u22C7", divonx: "\u22C7", DJcy: "\u0402", djcy: "\u0452", dlcorn: "\u231E", dlcrop: "\u230D", dollar: "$", Dopf: "\u{1D53B}", dopf: "\u{1D555}", Dot: "\xA8", dot: "\u02D9", DotDot: "\u20DC", doteq: "\u2250", doteqdot: "\u2251", DotEqual: "\u2250", dotminus: "\u2238", dotplus: "\u2214", dotsquare: "\u22A1", doublebarwedge: "\u2306", DoubleContourIntegral: "\u222F", DoubleDot: "\xA8", DoubleDownArrow: "\u21D3", DoubleLeftArrow: "\u21D0", DoubleLeftRightArrow: "\u21D4", DoubleLeftTee: "\u2AE4", DoubleLongLeftArrow: "\u27F8", DoubleLongLeftRightArrow: "\u27FA", DoubleLongRightArrow: "\u27F9", DoubleRightArrow: "\u21D2", DoubleRightTee: "\u22A8", DoubleUpArrow: "\u21D1", DoubleUpDownArrow: "\u21D5", DoubleVerticalBar: "\u2225", DownArrowBar: "\u2913", downarrow: "\u2193", DownArrow: "\u2193", Downarrow: "\u21D3", DownArrowUpArrow: "\u21F5", DownBreve: "\u0311", downdownarrows: "\u21CA", downharpoonleft: "\u21C3", downharpoonright: "\u21C2", DownLeftRightVector: "\u2950", DownLeftTeeVector: "\u295E", DownLeftVectorBar: "\u2956", DownLeftVector: "\u21BD", DownRightTeeVector: "\u295F", DownRightVectorBar: "\u2957", DownRightVector: "\u21C1", DownTeeArrow: "\u21A7", DownTee: "\u22A4", drbkarow: "\u2910", drcorn: "\u231F", drcrop: "\u230C", Dscr: "\u{1D49F}", dscr: "\u{1D4B9}", DScy: "\u0405", dscy: "\u0455", dsol: "\u29F6", Dstrok: "\u0110", dstrok: "\u0111", dtdot: "\u22F1", dtri: "\u25BF", dtrif: "\u25BE", duarr: "\u21F5", duhar: "\u296F", dwangle: "\u29A6", DZcy: "\u040F", dzcy: "\u045F", dzigrarr: "\u27FF", Eacute: "\xC9", eacute: "\xE9", easter: "\u2A6E", Ecaron: "\u011A", ecaron: "\u011B", Ecirc: "\xCA", ecirc: "\xEA", ecir: "\u2256", ecolon: "\u2255", Ecy: "\u042D", ecy: "\u044D", eDDot: "\u2A77", Edot: "\u0116", edot: "\u0117", eDot: "\u2251", ee: "\u2147", efDot: "\u2252", Efr: "\u{1D508}", efr: "\u{1D522}", eg: "\u2A9A", Egrave: "\xC8", egrave: "\xE8", egs: "\u2A96", egsdot: "\u2A98", el: "\u2A99", Element: "\u2208", elinters: "\u23E7", ell: "\u2113", els: "\u2A95", elsdot: "\u2A97", Emacr: "\u0112", emacr: "\u0113", empty: "\u2205", emptyset: "\u2205", EmptySmallSquare: "\u25FB", emptyv: "\u2205", EmptyVerySmallSquare: "\u25AB", emsp13: "\u2004", emsp14: "\u2005", emsp: "\u2003", ENG: "\u014A", eng: "\u014B", ensp: "\u2002", Eogon: "\u0118", eogon: "\u0119", Eopf: "\u{1D53C}", eopf: "\u{1D556}", epar: "\u22D5", eparsl: "\u29E3", eplus: "\u2A71", epsi: "\u03B5", Epsilon: "\u0395", epsilon: "\u03B5", epsiv: "\u03F5", eqcirc: "\u2256", eqcolon: "\u2255", eqsim: "\u2242", eqslantgtr: "\u2A96", eqslantless: "\u2A95", Equal: "\u2A75", equals: "=", EqualTilde: "\u2242", equest: "\u225F", Equilibrium: "\u21CC", equiv: "\u2261", equivDD: "\u2A78", eqvparsl: "\u29E5", erarr: "\u2971", erDot: "\u2253", escr: "\u212F", Escr: "\u2130", esdot: "\u2250", Esim: "\u2A73", esim: "\u2242", Eta: "\u0397", eta: "\u03B7", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", euro: "\u20AC", excl: "!", exist: "\u2203", Exists: "\u2203", expectation: "\u2130", exponentiale: "\u2147", ExponentialE: "\u2147", fallingdotseq: "\u2252", Fcy: "\u0424", fcy: "\u0444", female: "\u2640", ffilig: "\uFB03", fflig: "\uFB00", ffllig: "\uFB04", Ffr: "\u{1D509}", ffr: "\u{1D523}", filig: "\uFB01", FilledSmallSquare: "\u25FC", FilledVerySmallSquare: "\u25AA", fjlig: "fj", flat: "\u266D", fllig: "\uFB02", fltns: "\u25B1", fnof: "\u0192", Fopf: "\u{1D53D}", fopf: "\u{1D557}", forall: "\u2200", ForAll: "\u2200", fork: "\u22D4", forkv: "\u2AD9", Fouriertrf: "\u2131", fpartint: "\u2A0D", frac12: "\xBD", frac13: "\u2153", frac14: "\xBC", frac15: "\u2155", frac16: "\u2159", frac18: "\u215B", frac23: "\u2154", frac25: "\u2156", frac34: "\xBE", frac35: "\u2157", frac38: "\u215C", frac45: "\u2158", frac56: "\u215A", frac58: "\u215D", frac78: "\u215E", frasl: "\u2044", frown: "\u2322", fscr: "\u{1D4BB}", Fscr: "\u2131", gacute: "\u01F5", Gamma: "\u0393", gamma: "\u03B3", Gammad: "\u03DC", gammad: "\u03DD", gap: "\u2A86", Gbreve: "\u011E", gbreve: "\u011F", Gcedil: "\u0122", Gcirc: "\u011C", gcirc: "\u011D", Gcy: "\u0413", gcy: "\u0433", Gdot: "\u0120", gdot: "\u0121", ge: "\u2265", gE: "\u2267", gEl: "\u2A8C", gel: "\u22DB", geq: "\u2265", geqq: "\u2267", geqslant: "\u2A7E", gescc: "\u2AA9", ges: "\u2A7E", gesdot: "\u2A80", gesdoto: "\u2A82", gesdotol: "\u2A84", gesl: "\u22DB\uFE00", gesles: "\u2A94", Gfr: "\u{1D50A}", gfr: "\u{1D524}", gg: "\u226B", Gg: "\u22D9", ggg: "\u22D9", gimel: "\u2137", GJcy: "\u0403", gjcy: "\u0453", gla: "\u2AA5", gl: "\u2277", glE: "\u2A92", glj: "\u2AA4", gnap: "\u2A8A", gnapprox: "\u2A8A", gne: "\u2A88", gnE: "\u2269", gneq: "\u2A88", gneqq: "\u2269", gnsim: "\u22E7", Gopf: "\u{1D53E}", gopf: "\u{1D558}", grave: "`", GreaterEqual: "\u2265", GreaterEqualLess: "\u22DB", GreaterFullEqual: "\u2267", GreaterGreater: "\u2AA2", GreaterLess: "\u2277", GreaterSlantEqual: "\u2A7E", GreaterTilde: "\u2273", Gscr: "\u{1D4A2}", gscr: "\u210A", gsim: "\u2273", gsime: "\u2A8E", gsiml: "\u2A90", gtcc: "\u2AA7", gtcir: "\u2A7A", gt: ">", GT: ">", Gt: "\u226B", gtdot: "\u22D7", gtlPar: "\u2995", gtquest: "\u2A7C", gtrapprox: "\u2A86", gtrarr: "\u2978", gtrdot: "\u22D7", gtreqless: "\u22DB", gtreqqless: "\u2A8C", gtrless: "\u2277", gtrsim: "\u2273", gvertneqq: "\u2269\uFE00", gvnE: "\u2269\uFE00", Hacek: "\u02C7", hairsp: "\u200A", half: "\xBD", hamilt: "\u210B", HARDcy: "\u042A", hardcy: "\u044A", harrcir: "\u2948", harr: "\u2194", hArr: "\u21D4", harrw: "\u21AD", Hat: "^", hbar: "\u210F", Hcirc: "\u0124", hcirc: "\u0125", hearts: "\u2665", heartsuit: "\u2665", hellip: "\u2026", hercon: "\u22B9", hfr: "\u{1D525}", Hfr: "\u210C", HilbertSpace: "\u210B", hksearow: "\u2925", hkswarow: "\u2926", hoarr: "\u21FF", homtht: "\u223B", hookleftarrow: "\u21A9", hookrightarrow: "\u21AA", hopf: "\u{1D559}", Hopf: "\u210D", horbar: "\u2015", HorizontalLine: "\u2500", hscr: "\u{1D4BD}", Hscr: "\u210B", hslash: "\u210F", Hstrok: "\u0126", hstrok: "\u0127", HumpDownHump: "\u224E", HumpEqual: "\u224F", hybull: "\u2043", hyphen: "\u2010", Iacute: "\xCD", iacute: "\xED", ic: "\u2063", Icirc: "\xCE", icirc: "\xEE", Icy: "\u0418", icy: "\u0438", Idot: "\u0130", IEcy: "\u0415", iecy: "\u0435", iexcl: "\xA1", iff: "\u21D4", ifr: "\u{1D526}", Ifr: "\u2111", Igrave: "\xCC", igrave: "\xEC", ii: "\u2148", iiiint: "\u2A0C", iiint: "\u222D", iinfin: "\u29DC", iiota: "\u2129", IJlig: "\u0132", ijlig: "\u0133", Imacr: "\u012A", imacr: "\u012B", image: "\u2111", ImaginaryI: "\u2148", imagline: "\u2110", imagpart: "\u2111", imath: "\u0131", Im: "\u2111", imof: "\u22B7", imped: "\u01B5", Implies: "\u21D2", incare: "\u2105", in: "\u2208", infin: "\u221E", infintie: "\u29DD", inodot: "\u0131", intcal: "\u22BA", int: "\u222B", Int: "\u222C", integers: "\u2124", Integral: "\u222B", intercal: "\u22BA", Intersection: "\u22C2", intlarhk: "\u2A17", intprod: "\u2A3C", InvisibleComma: "\u2063", InvisibleTimes: "\u2062", IOcy: "\u0401", iocy: "\u0451", Iogon: "\u012E", iogon: "\u012F", Iopf: "\u{1D540}", iopf: "\u{1D55A}", Iota: "\u0399", iota: "\u03B9", iprod: "\u2A3C", iquest: "\xBF", iscr: "\u{1D4BE}", Iscr: "\u2110", isin: "\u2208", isindot: "\u22F5", isinE: "\u22F9", isins: "\u22F4", isinsv: "\u22F3", isinv: "\u2208", it: "\u2062", Itilde: "\u0128", itilde: "\u0129", Iukcy: "\u0406", iukcy: "\u0456", Iuml: "\xCF", iuml: "\xEF", Jcirc: "\u0134", jcirc: "\u0135", Jcy: "\u0419", jcy: "\u0439", Jfr: "\u{1D50D}", jfr: "\u{1D527}", jmath: "\u0237", Jopf: "\u{1D541}", jopf: "\u{1D55B}", Jscr: "\u{1D4A5}", jscr: "\u{1D4BF}", Jsercy: "\u0408", jsercy: "\u0458", Jukcy: "\u0404", jukcy: "\u0454", Kappa: "\u039A", kappa: "\u03BA", kappav: "\u03F0", Kcedil: "\u0136", kcedil: "\u0137", Kcy: "\u041A", kcy: "\u043A", Kfr: "\u{1D50E}", kfr: "\u{1D528}", kgreen: "\u0138", KHcy: "\u0425", khcy: "\u0445", KJcy: "\u040C", kjcy: "\u045C", Kopf: "\u{1D542}", kopf: "\u{1D55C}", Kscr: "\u{1D4A6}", kscr: "\u{1D4C0}", lAarr: "\u21DA", Lacute: "\u0139", lacute: "\u013A", laemptyv: "\u29B4", lagran: "\u2112", Lambda: "\u039B", lambda: "\u03BB", lang: "\u27E8", Lang: "\u27EA", langd: "\u2991", langle: "\u27E8", lap: "\u2A85", Laplacetrf: "\u2112", laquo: "\xAB", larrb: "\u21E4", larrbfs: "\u291F", larr: "\u2190", Larr: "\u219E", lArr: "\u21D0", larrfs: "\u291D", larrhk: "\u21A9", larrlp: "\u21AB", larrpl: "\u2939", larrsim: "\u2973", larrtl: "\u21A2", latail: "\u2919", lAtail: "\u291B", lat: "\u2AAB", late: "\u2AAD", lates: "\u2AAD\uFE00", lbarr: "\u290C", lBarr: "\u290E", lbbrk: "\u2772", lbrace: "{", lbrack: "[", lbrke: "\u298B", lbrksld: "\u298F", lbrkslu: "\u298D", Lcaron: "\u013D", lcaron: "\u013E", Lcedil: "\u013B", lcedil: "\u013C", lceil: "\u2308", lcub: "{", Lcy: "\u041B", lcy: "\u043B", ldca: "\u2936", ldquo: "\u201C", ldquor: "\u201E", ldrdhar: "\u2967", ldrushar: "\u294B", ldsh: "\u21B2", le: "\u2264", lE: "\u2266", LeftAngleBracket: "\u27E8", LeftArrowBar: "\u21E4", leftarrow: "\u2190", LeftArrow: "\u2190", Leftarrow: "\u21D0", LeftArrowRightArrow: "\u21C6", leftarrowtail: "\u21A2", LeftCeiling: "\u2308", LeftDoubleBracket: "\u27E6", LeftDownTeeVector: "\u2961", LeftDownVectorBar: "\u2959", LeftDownVector: "\u21C3", LeftFloor: "\u230A", leftharpoondown: "\u21BD", leftharpoonup: "\u21BC", leftleftarrows: "\u21C7", leftrightarrow: "\u2194", LeftRightArrow: "\u2194", Leftrightarrow: "\u21D4", leftrightarrows: "\u21C6", leftrightharpoons: "\u21CB", leftrightsquigarrow: "\u21AD", LeftRightVector: "\u294E", LeftTeeArrow: "\u21A4", LeftTee: "\u22A3", LeftTeeVector: "\u295A", leftthreetimes: "\u22CB", LeftTriangleBar: "\u29CF", LeftTriangle: "\u22B2", LeftTriangleEqual: "\u22B4", LeftUpDownVector: "\u2951", LeftUpTeeVector: "\u2960", LeftUpVectorBar: "\u2958", LeftUpVector: "\u21BF", LeftVectorBar: "\u2952", LeftVector: "\u21BC", lEg: "\u2A8B", leg: "\u22DA", leq: "\u2264", leqq: "\u2266", leqslant: "\u2A7D", lescc: "\u2AA8", les: "\u2A7D", lesdot: "\u2A7F", lesdoto: "\u2A81", lesdotor: "\u2A83", lesg: "\u22DA\uFE00", lesges: "\u2A93", lessapprox: "\u2A85", lessdot: "\u22D6", lesseqgtr: "\u22DA", lesseqqgtr: "\u2A8B", LessEqualGreater: "\u22DA", LessFullEqual: "\u2266", LessGreater: "\u2276", lessgtr: "\u2276", LessLess: "\u2AA1", lesssim: "\u2272", LessSlantEqual: "\u2A7D", LessTilde: "\u2272", lfisht: "\u297C", lfloor: "\u230A", Lfr: "\u{1D50F}", lfr: "\u{1D529}", lg: "\u2276", lgE: "\u2A91", lHar: "\u2962", lhard: "\u21BD", lharu: "\u21BC", lharul: "\u296A", lhblk: "\u2584", LJcy: "\u0409", ljcy: "\u0459", llarr: "\u21C7", ll: "\u226A", Ll: "\u22D8", llcorner: "\u231E", Lleftarrow: "\u21DA", llhard: "\u296B", lltri: "\u25FA", Lmidot: "\u013F", lmidot: "\u0140", lmoustache: "\u23B0", lmoust: "\u23B0", lnap: "\u2A89", lnapprox: "\u2A89", lne: "\u2A87", lnE: "\u2268", lneq: "\u2A87", lneqq: "\u2268", lnsim: "\u22E6", loang: "\u27EC", loarr: "\u21FD", lobrk: "\u27E6", longleftarrow: "\u27F5", LongLeftArrow: "\u27F5", Longleftarrow: "\u27F8", longleftrightarrow: "\u27F7", LongLeftRightArrow: "\u27F7", Longleftrightarrow: "\u27FA", longmapsto: "\u27FC", longrightarrow: "\u27F6", LongRightArrow: "\u27F6", Longrightarrow: "\u27F9", looparrowleft: "\u21AB", looparrowright: "\u21AC", lopar: "\u2985", Lopf: "\u{1D543}", lopf: "\u{1D55D}", loplus: "\u2A2D", lotimes: "\u2A34", lowast: "\u2217", lowbar: "_", LowerLeftArrow: "\u2199", LowerRightArrow: "\u2198", loz: "\u25CA", lozenge: "\u25CA", lozf: "\u29EB", lpar: "(", lparlt: "\u2993", lrarr: "\u21C6", lrcorner: "\u231F", lrhar: "\u21CB", lrhard: "\u296D", lrm: "\u200E", lrtri: "\u22BF", lsaquo: "\u2039", lscr: "\u{1D4C1}", Lscr: "\u2112", lsh: "\u21B0", Lsh: "\u21B0", lsim: "\u2272", lsime: "\u2A8D", lsimg: "\u2A8F", lsqb: "[", lsquo: "\u2018", lsquor: "\u201A", Lstrok: "\u0141", lstrok: "\u0142", ltcc: "\u2AA6", ltcir: "\u2A79", lt: "<", LT: "<", Lt: "\u226A", ltdot: "\u22D6", lthree: "\u22CB", ltimes: "\u22C9", ltlarr: "\u2976", ltquest: "\u2A7B", ltri: "\u25C3", ltrie: "\u22B4", ltrif: "\u25C2", ltrPar: "\u2996", lurdshar: "\u294A", luruhar: "\u2966", lvertneqq: "\u2268\uFE00", lvnE: "\u2268\uFE00", macr: "\xAF", male: "\u2642", malt: "\u2720", maltese: "\u2720", Map: "\u2905", map: "\u21A6", mapsto: "\u21A6", mapstodown: "\u21A7", mapstoleft: "\u21A4", mapstoup: "\u21A5", marker: "\u25AE", mcomma: "\u2A29", Mcy: "\u041C", mcy: "\u043C", mdash: "\u2014", mDDot: "\u223A", measuredangle: "\u2221", MediumSpace: "\u205F", Mellintrf: "\u2133", Mfr: "\u{1D510}", mfr: "\u{1D52A}", mho: "\u2127", micro: "\xB5", midast: "*", midcir: "\u2AF0", mid: "\u2223", middot: "\xB7", minusb: "\u229F", minus: "\u2212", minusd: "\u2238", minusdu: "\u2A2A", MinusPlus: "\u2213", mlcp: "\u2ADB", mldr: "\u2026", mnplus: "\u2213", models: "\u22A7", Mopf: "\u{1D544}", mopf: "\u{1D55E}", mp: "\u2213", mscr: "\u{1D4C2}", Mscr: "\u2133", mstpos: "\u223E", Mu: "\u039C", mu: "\u03BC", multimap: "\u22B8", mumap: "\u22B8", nabla: "\u2207", Nacute: "\u0143", nacute: "\u0144", nang: "\u2220\u20D2", nap: "\u2249", napE: "\u2A70\u0338", napid: "\u224B\u0338", napos: "\u0149", napprox: "\u2249", natural: "\u266E", naturals: "\u2115", natur: "\u266E", nbsp: "\xA0", nbump: "\u224E\u0338", nbumpe: "\u224F\u0338", ncap: "\u2A43", Ncaron: "\u0147", ncaron: "\u0148", Ncedil: "\u0145", ncedil: "\u0146", ncong: "\u2247", ncongdot: "\u2A6D\u0338", ncup: "\u2A42", Ncy: "\u041D", ncy: "\u043D", ndash: "\u2013", nearhk: "\u2924", nearr: "\u2197", neArr: "\u21D7", nearrow: "\u2197", ne: "\u2260", nedot: "\u2250\u0338", NegativeMediumSpace: "\u200B", NegativeThickSpace: "\u200B", NegativeThinSpace: "\u200B", NegativeVeryThinSpace: "\u200B", nequiv: "\u2262", nesear: "\u2928", nesim: "\u2242\u0338", NestedGreaterGreater: "\u226B", NestedLessLess: "\u226A", NewLine: "\n", nexist: "\u2204", nexists: "\u2204", Nfr: "\u{1D511}", nfr: "\u{1D52B}", ngE: "\u2267\u0338", nge: "\u2271", ngeq: "\u2271", ngeqq: "\u2267\u0338", ngeqslant: "\u2A7E\u0338", nges: "\u2A7E\u0338", nGg: "\u22D9\u0338", ngsim: "\u2275", nGt: "\u226B\u20D2", ngt: "\u226F", ngtr: "\u226F", nGtv: "\u226B\u0338", nharr: "\u21AE", nhArr: "\u21CE", nhpar: "\u2AF2", ni: "\u220B", nis: "\u22FC", nisd: "\u22FA", niv: "\u220B", NJcy: "\u040A", njcy: "\u045A", nlarr: "\u219A", nlArr: "\u21CD", nldr: "\u2025", nlE: "\u2266\u0338", nle: "\u2270", nleftarrow: "\u219A", nLeftarrow: "\u21CD", nleftrightarrow: "\u21AE", nLeftrightarrow: "\u21CE", nleq: "\u2270", nleqq: "\u2266\u0338", nleqslant: "\u2A7D\u0338", nles: "\u2A7D\u0338", nless: "\u226E", nLl: "\u22D8\u0338", nlsim: "\u2274", nLt: "\u226A\u20D2", nlt: "\u226E", nltri: "\u22EA", nltrie: "\u22EC", nLtv: "\u226A\u0338", nmid: "\u2224", NoBreak: "\u2060", NonBreakingSpace: "\xA0", nopf: "\u{1D55F}", Nopf: "\u2115", Not: "\u2AEC", not: "\xAC", NotCongruent: "\u2262", NotCupCap: "\u226D", NotDoubleVerticalBar: "\u2226", NotElement: "\u2209", NotEqual: "\u2260", NotEqualTilde: "\u2242\u0338", NotExists: "\u2204", NotGreater: "\u226F", NotGreaterEqual: "\u2271", NotGreaterFullEqual: "\u2267\u0338", NotGreaterGreater: "\u226B\u0338", NotGreaterLess: "\u2279", NotGreaterSlantEqual: "\u2A7E\u0338", NotGreaterTilde: "\u2275", NotHumpDownHump: "\u224E\u0338", NotHumpEqual: "\u224F\u0338", notin: "\u2209", notindot: "\u22F5\u0338", notinE: "\u22F9\u0338", notinva: "\u2209", notinvb: "\u22F7", notinvc: "\u22F6", NotLeftTriangleBar: "\u29CF\u0338", NotLeftTriangle: "\u22EA", NotLeftTriangleEqual: "\u22EC", NotLess: "\u226E", NotLessEqual: "\u2270", NotLessGreater: "\u2278", NotLessLess: "\u226A\u0338", NotLessSlantEqual: "\u2A7D\u0338", NotLessTilde: "\u2274", NotNestedGreaterGreater: "\u2AA2\u0338", NotNestedLessLess: "\u2AA1\u0338", notni: "\u220C", notniva: "\u220C", notnivb: "\u22FE", notnivc: "\u22FD", NotPrecedes: "\u2280", NotPrecedesEqual: "\u2AAF\u0338", NotPrecedesSlantEqual: "\u22E0", NotReverseElement: "\u220C", NotRightTriangleBar: "\u29D0\u0338", NotRightTriangle: "\u22EB", NotRightTriangleEqual: "\u22ED", NotSquareSubset: "\u228F\u0338", NotSquareSubsetEqual: "\u22E2", NotSquareSuperset: "\u2290\u0338", NotSquareSupersetEqual: "\u22E3", NotSubset: "\u2282\u20D2", NotSubsetEqual: "\u2288", NotSucceeds: "\u2281", NotSucceedsEqual: "\u2AB0\u0338", NotSucceedsSlantEqual: "\u22E1", NotSucceedsTilde: "\u227F\u0338", NotSuperset: "\u2283\u20D2", NotSupersetEqual: "\u2289", NotTilde: "\u2241", NotTildeEqual: "\u2244", NotTildeFullEqual: "\u2247", NotTildeTilde: "\u2249", NotVerticalBar: "\u2224", nparallel: "\u2226", npar: "\u2226", nparsl: "\u2AFD\u20E5", npart: "\u2202\u0338", npolint: "\u2A14", npr: "\u2280", nprcue: "\u22E0", nprec: "\u2280", npreceq: "\u2AAF\u0338", npre: "\u2AAF\u0338", nrarrc: "\u2933\u0338", nrarr: "\u219B", nrArr: "\u21CF", nrarrw: "\u219D\u0338", nrightarrow: "\u219B", nRightarrow: "\u21CF", nrtri: "\u22EB", nrtrie: "\u22ED", nsc: "\u2281", nsccue: "\u22E1", nsce: "\u2AB0\u0338", Nscr: "\u{1D4A9}", nscr: "\u{1D4C3}", nshortmid: "\u2224", nshortparallel: "\u2226", nsim: "\u2241", nsime: "\u2244", nsimeq: "\u2244", nsmid: "\u2224", nspar: "\u2226", nsqsube: "\u22E2", nsqsupe: "\u22E3", nsub: "\u2284", nsubE: "\u2AC5\u0338", nsube: "\u2288", nsubset: "\u2282\u20D2", nsubseteq: "\u2288", nsubseteqq: "\u2AC5\u0338", nsucc: "\u2281", nsucceq: "\u2AB0\u0338", nsup: "\u2285", nsupE: "\u2AC6\u0338", nsupe: "\u2289", nsupset: "\u2283\u20D2", nsupseteq: "\u2289", nsupseteqq: "\u2AC6\u0338", ntgl: "\u2279", Ntilde: "\xD1", ntilde: "\xF1", ntlg: "\u2278", ntriangleleft: "\u22EA", ntrianglelefteq: "\u22EC", ntriangleright: "\u22EB", ntrianglerighteq: "\u22ED", Nu: "\u039D", nu: "\u03BD", num: "#", numero: "\u2116", numsp: "\u2007", nvap: "\u224D\u20D2", nvdash: "\u22AC", nvDash: "\u22AD", nVdash: "\u22AE", nVDash: "\u22AF", nvge: "\u2265\u20D2", nvgt: ">\u20D2", nvHarr: "\u2904", nvinfin: "\u29DE", nvlArr: "\u2902", nvle: "\u2264\u20D2", nvlt: "<\u20D2", nvltrie: "\u22B4\u20D2", nvrArr: "\u2903", nvrtrie: "\u22B5\u20D2", nvsim: "\u223C\u20D2", nwarhk: "\u2923", nwarr: "\u2196", nwArr: "\u21D6", nwarrow: "\u2196", nwnear: "\u2927", Oacute: "\xD3", oacute: "\xF3", oast: "\u229B", Ocirc: "\xD4", ocirc: "\xF4", ocir: "\u229A", Ocy: "\u041E", ocy: "\u043E", odash: "\u229D", Odblac: "\u0150", odblac: "\u0151", odiv: "\u2A38", odot: "\u2299", odsold: "\u29BC", OElig: "\u0152", oelig: "\u0153", ofcir: "\u29BF", Ofr: "\u{1D512}", ofr: "\u{1D52C}", ogon: "\u02DB", Ograve: "\xD2", ograve: "\xF2", ogt: "\u29C1", ohbar: "\u29B5", ohm: "\u03A9", oint: "\u222E", olarr: "\u21BA", olcir: "\u29BE", olcross: "\u29BB", oline: "\u203E", olt: "\u29C0", Omacr: "\u014C", omacr: "\u014D", Omega: "\u03A9", omega: "\u03C9", Omicron: "\u039F", omicron: "\u03BF", omid: "\u29B6", ominus: "\u2296", Oopf: "\u{1D546}", oopf: "\u{1D560}", opar: "\u29B7", OpenCurlyDoubleQuote: "\u201C", OpenCurlyQuote: "\u2018", operp: "\u29B9", oplus: "\u2295", orarr: "\u21BB", Or: "\u2A54", or: "\u2228", ord: "\u2A5D", order: "\u2134", orderof: "\u2134", ordf: "\xAA", ordm: "\xBA", origof: "\u22B6", oror: "\u2A56", orslope: "\u2A57", orv: "\u2A5B", oS: "\u24C8", Oscr: "\u{1D4AA}", oscr: "\u2134", Oslash: "\xD8", oslash: "\xF8", osol: "\u2298", Otilde: "\xD5", otilde: "\xF5", otimesas: "\u2A36", Otimes: "\u2A37", otimes: "\u2297", Ouml: "\xD6", ouml: "\xF6", ovbar: "\u233D", OverBar: "\u203E", OverBrace: "\u23DE", OverBracket: "\u23B4", OverParenthesis: "\u23DC", para: "\xB6", parallel: "\u2225", par: "\u2225", parsim: "\u2AF3", parsl: "\u2AFD", part: "\u2202", PartialD: "\u2202", Pcy: "\u041F", pcy: "\u043F", percnt: "%", period: ".", permil: "\u2030", perp: "\u22A5", pertenk: "\u2031", Pfr: "\u{1D513}", pfr: "\u{1D52D}", Phi: "\u03A6", phi: "\u03C6", phiv: "\u03D5", phmmat: "\u2133", phone: "\u260E", Pi: "\u03A0", pi: "\u03C0", pitchfork: "\u22D4", piv: "\u03D6", planck: "\u210F", planckh: "\u210E", plankv: "\u210F", plusacir: "\u2A23", plusb: "\u229E", pluscir: "\u2A22", plus: "+", plusdo: "\u2214", plusdu: "\u2A25", pluse: "\u2A72", PlusMinus: "\xB1", plusmn: "\xB1", plussim: "\u2A26", plustwo: "\u2A27", pm: "\xB1", Poincareplane: "\u210C", pointint: "\u2A15", popf: "\u{1D561}", Popf: "\u2119", pound: "\xA3", prap: "\u2AB7", Pr: "\u2ABB", pr: "\u227A", prcue: "\u227C", precapprox: "\u2AB7", prec: "\u227A", preccurlyeq: "\u227C", Precedes: "\u227A", PrecedesEqual: "\u2AAF", PrecedesSlantEqual: "\u227C", PrecedesTilde: "\u227E", preceq: "\u2AAF", precnapprox: "\u2AB9", precneqq: "\u2AB5", precnsim: "\u22E8", pre: "\u2AAF", prE: "\u2AB3", precsim: "\u227E", prime: "\u2032", Prime: "\u2033", primes: "\u2119", prnap: "\u2AB9", prnE: "\u2AB5", prnsim: "\u22E8", prod: "\u220F", Product: "\u220F", profalar: "\u232E", profline: "\u2312", profsurf: "\u2313", prop: "\u221D", Proportional: "\u221D", Proportion: "\u2237", propto: "\u221D", prsim: "\u227E", prurel: "\u22B0", Pscr: "\u{1D4AB}", pscr: "\u{1D4C5}", Psi: "\u03A8", psi: "\u03C8", puncsp: "\u2008", Qfr: "\u{1D514}", qfr: "\u{1D52E}", qint: "\u2A0C", qopf: "\u{1D562}", Qopf: "\u211A", qprime: "\u2057", Qscr: "\u{1D4AC}", qscr: "\u{1D4C6}", quaternions: "\u210D", quatint: "\u2A16", quest: "?", questeq: "\u225F", quot: '"', QUOT: '"', rAarr: "\u21DB", race: "\u223D\u0331", Racute: "\u0154", racute: "\u0155", radic: "\u221A", raemptyv: "\u29B3", rang: "\u27E9", Rang: "\u27EB", rangd: "\u2992", range: "\u29A5", rangle: "\u27E9", raquo: "\xBB", rarrap: "\u2975", rarrb: "\u21E5", rarrbfs: "\u2920", rarrc: "\u2933", rarr: "\u2192", Rarr: "\u21A0", rArr: "\u21D2", rarrfs: "\u291E", rarrhk: "\u21AA", rarrlp: "\u21AC", rarrpl: "\u2945", rarrsim: "\u2974", Rarrtl: "\u2916", rarrtl: "\u21A3", rarrw: "\u219D", ratail: "\u291A", rAtail: "\u291C", ratio: "\u2236", rationals: "\u211A", rbarr: "\u290D", rBarr: "\u290F", RBarr: "\u2910", rbbrk: "\u2773", rbrace: "}", rbrack: "]", rbrke: "\u298C", rbrksld: "\u298E", rbrkslu: "\u2990", Rcaron: "\u0158", rcaron: "\u0159", Rcedil: "\u0156", rcedil: "\u0157", rceil: "\u2309", rcub: "}", Rcy: "\u0420", rcy: "\u0440", rdca: "\u2937", rdldhar: "\u2969", rdquo: "\u201D", rdquor: "\u201D", rdsh: "\u21B3", real: "\u211C", realine: "\u211B", realpart: "\u211C", reals: "\u211D", Re: "\u211C", rect: "\u25AD", reg: "\xAE", REG: "\xAE", ReverseElement: "\u220B", ReverseEquilibrium: "\u21CB", ReverseUpEquilibrium: "\u296F", rfisht: "\u297D", rfloor: "\u230B", rfr: "\u{1D52F}", Rfr: "\u211C", rHar: "\u2964", rhard: "\u21C1", rharu: "\u21C0", rharul: "\u296C", Rho: "\u03A1", rho: "\u03C1", rhov: "\u03F1", RightAngleBracket: "\u27E9", RightArrowBar: "\u21E5", rightarrow: "\u2192", RightArrow: "\u2192", Rightarrow: "\u21D2", RightArrowLeftArrow: "\u21C4", rightarrowtail: "\u21A3", RightCeiling: "\u2309", RightDoubleBracket: "\u27E7", RightDownTeeVector: "\u295D", RightDownVectorBar: "\u2955", RightDownVector: "\u21C2", RightFloor: "\u230B", rightharpoondown: "\u21C1", rightharpoonup: "\u21C0", rightleftarrows: "\u21C4", rightleftharpoons: "\u21CC", rightrightarrows: "\u21C9", rightsquigarrow: "\u219D", RightTeeArrow: "\u21A6", RightTee: "\u22A2", RightTeeVector: "\u295B", rightthreetimes: "\u22CC", RightTriangleBar: "\u29D0", RightTriangle: "\u22B3", RightTriangleEqual: "\u22B5", RightUpDownVector: "\u294F", RightUpTeeVector: "\u295C", RightUpVectorBar: "\u2954", RightUpVector: "\u21BE", RightVectorBar: "\u2953", RightVector: "\u21C0", ring: "\u02DA", risingdotseq: "\u2253", rlarr: "\u21C4", rlhar: "\u21CC", rlm: "\u200F", rmoustache: "\u23B1", rmoust: "\u23B1", rnmid: "\u2AEE", roang: "\u27ED", roarr: "\u21FE", robrk: "\u27E7", ropar: "\u2986", ropf: "\u{1D563}", Ropf: "\u211D", roplus: "\u2A2E", rotimes: "\u2A35", RoundImplies: "\u2970", rpar: ")", rpargt: "\u2994", rppolint: "\u2A12", rrarr: "\u21C9", Rrightarrow: "\u21DB", rsaquo: "\u203A", rscr: "\u{1D4C7}", Rscr: "\u211B", rsh: "\u21B1", Rsh: "\u21B1", rsqb: "]", rsquo: "\u2019", rsquor: "\u2019", rthree: "\u22CC", rtimes: "\u22CA", rtri: "\u25B9", rtrie: "\u22B5", rtrif: "\u25B8", rtriltri: "\u29CE", RuleDelayed: "\u29F4", ruluhar: "\u2968", rx: "\u211E", Sacute: "\u015A", sacute: "\u015B", sbquo: "\u201A", scap: "\u2AB8", Scaron: "\u0160", scaron: "\u0161", Sc: "\u2ABC", sc: "\u227B", sccue: "\u227D", sce: "\u2AB0", scE: "\u2AB4", Scedil: "\u015E", scedil: "\u015F", Scirc: "\u015C", scirc: "\u015D", scnap: "\u2ABA", scnE: "\u2AB6", scnsim: "\u22E9", scpolint: "\u2A13", scsim: "\u227F", Scy: "\u0421", scy: "\u0441", sdotb: "\u22A1", sdot: "\u22C5", sdote: "\u2A66", searhk: "\u2925", searr: "\u2198", seArr: "\u21D8", searrow: "\u2198", sect: "\xA7", semi: ";", seswar: "\u2929", setminus: "\u2216", setmn: "\u2216", sext: "\u2736", Sfr: "\u{1D516}", sfr: "\u{1D530}", sfrown: "\u2322", sharp: "\u266F", SHCHcy: "\u0429", shchcy: "\u0449", SHcy: "\u0428", shcy: "\u0448", ShortDownArrow: "\u2193", ShortLeftArrow: "\u2190", shortmid: "\u2223", shortparallel: "\u2225", ShortRightArrow: "\u2192", ShortUpArrow: "\u2191", shy: "\xAD", Sigma: "\u03A3", sigma: "\u03C3", sigmaf: "\u03C2", sigmav: "\u03C2", sim: "\u223C", simdot: "\u2A6A", sime: "\u2243", simeq: "\u2243", simg: "\u2A9E", simgE: "\u2AA0", siml: "\u2A9D", simlE: "\u2A9F", simne: "\u2246", simplus: "\u2A24", simrarr: "\u2972", slarr: "\u2190", SmallCircle: "\u2218", smallsetminus: "\u2216", smashp: "\u2A33", smeparsl: "\u29E4", smid: "\u2223", smile: "\u2323", smt: "\u2AAA", smte: "\u2AAC", smtes: "\u2AAC\uFE00", SOFTcy: "\u042C", softcy: "\u044C", solbar: "\u233F", solb: "\u29C4", sol: "/", Sopf: "\u{1D54A}", sopf: "\u{1D564}", spades: "\u2660", spadesuit: "\u2660", spar: "\u2225", sqcap: "\u2293", sqcaps: "\u2293\uFE00", sqcup: "\u2294", sqcups: "\u2294\uFE00", Sqrt: "\u221A", sqsub: "\u228F", sqsube: "\u2291", sqsubset: "\u228F", sqsubseteq: "\u2291", sqsup: "\u2290", sqsupe: "\u2292", sqsupset: "\u2290", sqsupseteq: "\u2292", square: "\u25A1", Square: "\u25A1", SquareIntersection: "\u2293", SquareSubset: "\u228F", SquareSubsetEqual: "\u2291", SquareSuperset: "\u2290", SquareSupersetEqual: "\u2292", SquareUnion: "\u2294", squarf: "\u25AA", squ: "\u25A1", squf: "\u25AA", srarr: "\u2192", Sscr: "\u{1D4AE}", sscr: "\u{1D4C8}", ssetmn: "\u2216", ssmile: "\u2323", sstarf: "\u22C6", Star: "\u22C6", star: "\u2606", starf: "\u2605", straightepsilon: "\u03F5", straightphi: "\u03D5", strns: "\xAF", sub: "\u2282", Sub: "\u22D0", subdot: "\u2ABD", subE: "\u2AC5", sube: "\u2286", subedot: "\u2AC3", submult: "\u2AC1", subnE: "\u2ACB", subne: "\u228A", subplus: "\u2ABF", subrarr: "\u2979", subset: "\u2282", Subset: "\u22D0", subseteq: "\u2286", subseteqq: "\u2AC5", SubsetEqual: "\u2286", subsetneq: "\u228A", subsetneqq: "\u2ACB", subsim: "\u2AC7", subsub: "\u2AD5", subsup: "\u2AD3", succapprox: "\u2AB8", succ: "\u227B", succcurlyeq: "\u227D", Succeeds: "\u227B", SucceedsEqual: "\u2AB0", SucceedsSlantEqual: "\u227D", SucceedsTilde: "\u227F", succeq: "\u2AB0", succnapprox: "\u2ABA", succneqq: "\u2AB6", succnsim: "\u22E9", succsim: "\u227F", SuchThat: "\u220B", sum: "\u2211", Sum: "\u2211", sung: "\u266A", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", sup: "\u2283", Sup: "\u22D1", supdot: "\u2ABE", supdsub: "\u2AD8", supE: "\u2AC6", supe: "\u2287", supedot: "\u2AC4", Superset: "\u2283", SupersetEqual: "\u2287", suphsol: "\u27C9", suphsub: "\u2AD7", suplarr: "\u297B", supmult: "\u2AC2", supnE: "\u2ACC", supne: "\u228B", supplus: "\u2AC0", supset: "\u2283", Supset: "\u22D1", supseteq: "\u2287", supseteqq: "\u2AC6", supsetneq: "\u228B", supsetneqq: "\u2ACC", supsim: "\u2AC8", supsub: "\u2AD4", supsup: "\u2AD6", swarhk: "\u2926", swarr: "\u2199", swArr: "\u21D9", swarrow: "\u2199", swnwar: "\u292A", szlig: "\xDF", Tab: " ", target: "\u2316", Tau: "\u03A4", tau: "\u03C4", tbrk: "\u23B4", Tcaron: "\u0164", tcaron: "\u0165", Tcedil: "\u0162", tcedil: "\u0163", Tcy: "\u0422", tcy: "\u0442", tdot: "\u20DB", telrec: "\u2315", Tfr: "\u{1D517}", tfr: "\u{1D531}", there4: "\u2234", therefore: "\u2234", Therefore: "\u2234", Theta: "\u0398", theta: "\u03B8", thetasym: "\u03D1", thetav: "\u03D1", thickapprox: "\u2248", thicksim: "\u223C", ThickSpace: "\u205F\u200A", ThinSpace: "\u2009", thinsp: "\u2009", thkap: "\u2248", thksim: "\u223C", THORN: "\xDE", thorn: "\xFE", tilde: "\u02DC", Tilde: "\u223C", TildeEqual: "\u2243", TildeFullEqual: "\u2245", TildeTilde: "\u2248", timesbar: "\u2A31", timesb: "\u22A0", times: "\xD7", timesd: "\u2A30", tint: "\u222D", toea: "\u2928", topbot: "\u2336", topcir: "\u2AF1", top: "\u22A4", Topf: "\u{1D54B}", topf: "\u{1D565}", topfork: "\u2ADA", tosa: "\u2929", tprime: "\u2034", trade: "\u2122", TRADE: "\u2122", triangle: "\u25B5", triangledown: "\u25BF", triangleleft: "\u25C3", trianglelefteq: "\u22B4", triangleq: "\u225C", triangleright: "\u25B9", trianglerighteq: "\u22B5", tridot: "\u25EC", trie: "\u225C", triminus: "\u2A3A", TripleDot: "\u20DB", triplus: "\u2A39", trisb: "\u29CD", tritime: "\u2A3B", trpezium: "\u23E2", Tscr: "\u{1D4AF}", tscr: "\u{1D4C9}", TScy: "\u0426", tscy: "\u0446", TSHcy: "\u040B", tshcy: "\u045B", Tstrok: "\u0166", tstrok: "\u0167", twixt: "\u226C", twoheadleftarrow: "\u219E", twoheadrightarrow: "\u21A0", Uacute: "\xDA", uacute: "\xFA", uarr: "\u2191", Uarr: "\u219F", uArr: "\u21D1", Uarrocir: "\u2949", Ubrcy: "\u040E", ubrcy: "\u045E", Ubreve: "\u016C", ubreve: "\u016D", Ucirc: "\xDB", ucirc: "\xFB", Ucy: "\u0423", ucy: "\u0443", udarr: "\u21C5", Udblac: "\u0170", udblac: "\u0171", udhar: "\u296E", ufisht: "\u297E", Ufr: "\u{1D518}", ufr: "\u{1D532}", Ugrave: "\xD9", ugrave: "\xF9", uHar: "\u2963", uharl: "\u21BF", uharr: "\u21BE", uhblk: "\u2580", ulcorn: "\u231C", ulcorner: "\u231C", ulcrop: "\u230F", ultri: "\u25F8", Umacr: "\u016A", umacr: "\u016B", uml: "\xA8", UnderBar: "_", UnderBrace: "\u23DF", UnderBracket: "\u23B5", UnderParenthesis: "\u23DD", Union: "\u22C3", UnionPlus: "\u228E", Uogon: "\u0172", uogon: "\u0173", Uopf: "\u{1D54C}", uopf: "\u{1D566}", UpArrowBar: "\u2912", uparrow: "\u2191", UpArrow: "\u2191", Uparrow: "\u21D1", UpArrowDownArrow: "\u21C5", updownarrow: "\u2195", UpDownArrow: "\u2195", Updownarrow: "\u21D5", UpEquilibrium: "\u296E", upharpoonleft: "\u21BF", upharpoonright: "\u21BE", uplus: "\u228E", UpperLeftArrow: "\u2196", UpperRightArrow: "\u2197", upsi: "\u03C5", Upsi: "\u03D2", upsih: "\u03D2", Upsilon: "\u03A5", upsilon: "\u03C5", UpTeeArrow: "\u21A5", UpTee: "\u22A5", upuparrows: "\u21C8", urcorn: "\u231D", urcorner: "\u231D", urcrop: "\u230E", Uring: "\u016E", uring: "\u016F", urtri: "\u25F9", Uscr: "\u{1D4B0}", uscr: "\u{1D4CA}", utdot: "\u22F0", Utilde: "\u0168", utilde: "\u0169", utri: "\u25B5", utrif: "\u25B4", uuarr: "\u21C8", Uuml: "\xDC", uuml: "\xFC", uwangle: "\u29A7", vangrt: "\u299C", varepsilon: "\u03F5", varkappa: "\u03F0", varnothing: "\u2205", varphi: "\u03D5", varpi: "\u03D6", varpropto: "\u221D", varr: "\u2195", vArr: "\u21D5", varrho: "\u03F1", varsigma: "\u03C2", varsubsetneq: "\u228A\uFE00", varsubsetneqq: "\u2ACB\uFE00", varsupsetneq: "\u228B\uFE00", varsupsetneqq: "\u2ACC\uFE00", vartheta: "\u03D1", vartriangleleft: "\u22B2", vartriangleright: "\u22B3", vBar: "\u2AE8", Vbar: "\u2AEB", vBarv: "\u2AE9", Vcy: "\u0412", vcy: "\u0432", vdash: "\u22A2", vDash: "\u22A8", Vdash: "\u22A9", VDash: "\u22AB", Vdashl: "\u2AE6", veebar: "\u22BB", vee: "\u2228", Vee: "\u22C1", veeeq: "\u225A", vellip: "\u22EE", verbar: "|", Verbar: "\u2016", vert: "|", Vert: "\u2016", VerticalBar: "\u2223", VerticalLine: "|", VerticalSeparator: "\u2758", VerticalTilde: "\u2240", VeryThinSpace: "\u200A", Vfr: "\u{1D519}", vfr: "\u{1D533}", vltri: "\u22B2", vnsub: "\u2282\u20D2", vnsup: "\u2283\u20D2", Vopf: "\u{1D54D}", vopf: "\u{1D567}", vprop: "\u221D", vrtri: "\u22B3", Vscr: "\u{1D4B1}", vscr: "\u{1D4CB}", vsubnE: "\u2ACB\uFE00", vsubne: "\u228A\uFE00", vsupnE: "\u2ACC\uFE00", vsupne: "\u228B\uFE00", Vvdash: "\u22AA", vzigzag: "\u299A", Wcirc: "\u0174", wcirc: "\u0175", wedbar: "\u2A5F", wedge: "\u2227", Wedge: "\u22C0", wedgeq: "\u2259", weierp: "\u2118", Wfr: "\u{1D51A}", wfr: "\u{1D534}", Wopf: "\u{1D54E}", wopf: "\u{1D568}", wp: "\u2118", wr: "\u2240", wreath: "\u2240", Wscr: "\u{1D4B2}", wscr: "\u{1D4CC}", xcap: "\u22C2", xcirc: "\u25EF", xcup: "\u22C3", xdtri: "\u25BD", Xfr: "\u{1D51B}", xfr: "\u{1D535}", xharr: "\u27F7", xhArr: "\u27FA", Xi: "\u039E", xi: "\u03BE", xlarr: "\u27F5", xlArr: "\u27F8", xmap: "\u27FC", xnis: "\u22FB", xodot: "\u2A00", Xopf: "\u{1D54F}", xopf: "\u{1D569}", xoplus: "\u2A01", xotime: "\u2A02", xrarr: "\u27F6", xrArr: "\u27F9", Xscr: "\u{1D4B3}", xscr: "\u{1D4CD}", xsqcup: "\u2A06", xuplus: "\u2A04", xutri: "\u25B3", xvee: "\u22C1", xwedge: "\u22C0", Yacute: "\xDD", yacute: "\xFD", YAcy: "\u042F", yacy: "\u044F", Ycirc: "\u0176", ycirc: "\u0177", Ycy: "\u042B", ycy: "\u044B", yen: "\xA5", Yfr: "\u{1D51C}", yfr: "\u{1D536}", YIcy: "\u0407", yicy: "\u0457", Yopf: "\u{1D550}", yopf: "\u{1D56A}", Yscr: "\u{1D4B4}", yscr: "\u{1D4CE}", YUcy: "\u042E", yucy: "\u044E", yuml: "\xFF", Yuml: "\u0178", Zacute: "\u0179", zacute: "\u017A", Zcaron: "\u017D", zcaron: "\u017E", Zcy: "\u0417", zcy: "\u0437", Zdot: "\u017B", zdot: "\u017C", zeetrf: "\u2128", ZeroWidthSpace: "\u200B", Zeta: "\u0396", zeta: "\u03B6", zfr: "\u{1D537}", Zfr: "\u2128", ZHcy: "\u0416", zhcy: "\u0436", zigrarr: "\u21DD", zopf: "\u{1D56B}", Zopf: "\u2124", Zscr: "\u{1D4B5}", zscr: "\u{1D4CF}", zwj: "\u200D", zwnj: "\u200C" }; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/legacy.json var require_legacy2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/legacy.json"(exports2, module2) { module2.exports = { Aacute: "\xC1", aacute: "\xE1", Acirc: "\xC2", acirc: "\xE2", acute: "\xB4", AElig: "\xC6", aelig: "\xE6", Agrave: "\xC0", agrave: "\xE0", amp: "&", AMP: "&", Aring: "\xC5", aring: "\xE5", Atilde: "\xC3", atilde: "\xE3", Auml: "\xC4", auml: "\xE4", brvbar: "\xA6", Ccedil: "\xC7", ccedil: "\xE7", cedil: "\xB8", cent: "\xA2", copy: "\xA9", COPY: "\xA9", curren: "\xA4", deg: "\xB0", divide: "\xF7", Eacute: "\xC9", eacute: "\xE9", Ecirc: "\xCA", ecirc: "\xEA", Egrave: "\xC8", egrave: "\xE8", ETH: "\xD0", eth: "\xF0", Euml: "\xCB", euml: "\xEB", frac12: "\xBD", frac14: "\xBC", frac34: "\xBE", gt: ">", GT: ">", Iacute: "\xCD", iacute: "\xED", Icirc: "\xCE", icirc: "\xEE", iexcl: "\xA1", Igrave: "\xCC", igrave: "\xEC", iquest: "\xBF", Iuml: "\xCF", iuml: "\xEF", laquo: "\xAB", lt: "<", LT: "<", macr: "\xAF", micro: "\xB5", middot: "\xB7", nbsp: "\xA0", not: "\xAC", Ntilde: "\xD1", ntilde: "\xF1", Oacute: "\xD3", oacute: "\xF3", Ocirc: "\xD4", ocirc: "\xF4", Ograve: "\xD2", ograve: "\xF2", ordf: "\xAA", ordm: "\xBA", Oslash: "\xD8", oslash: "\xF8", Otilde: "\xD5", otilde: "\xF5", Ouml: "\xD6", ouml: "\xF6", para: "\xB6", plusmn: "\xB1", pound: "\xA3", quot: '"', QUOT: '"', raquo: "\xBB", reg: "\xAE", REG: "\xAE", sect: "\xA7", shy: "\xAD", sup1: "\xB9", sup2: "\xB2", sup3: "\xB3", szlig: "\xDF", THORN: "\xDE", thorn: "\xFE", times: "\xD7", Uacute: "\xDA", uacute: "\xFA", Ucirc: "\xDB", ucirc: "\xFB", Ugrave: "\xD9", ugrave: "\xF9", uml: "\xA8", Uuml: "\xDC", uuml: "\xFC", Yacute: "\xDD", yacute: "\xFD", yen: "\xA5", yuml: "\xFF" }; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/xml.json var require_xml = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/maps/xml.json"(exports2, module2) { module2.exports = { amp: "&", apos: "'", gt: ">", lt: "<", quot: '"' }; } }); // node_modules/telegram/node_modules/htmlparser2/lib/Tokenizer.js var require_Tokenizer2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/lib/Tokenizer.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); var decode_codepoint_1 = __importDefault2(require_decode_codepoint3()); var entities_json_1 = __importDefault2(require_entities()); var legacy_json_1 = __importDefault2(require_legacy2()); var xml_json_1 = __importDefault2(require_xml()); function whitespace2(c) { return c === " " || c === "\n" || c === " " || c === "\f" || c === "\r"; } function isASCIIAlpha(c) { return c >= "a" && c <= "z" || c >= "A" && c <= "Z"; } function ifElseState(upper, SUCCESS, FAILURE) { var lower = upper.toLowerCase(); if (upper === lower) { return function(t, c) { if (c === lower) { t._state = SUCCESS; } else { t._state = FAILURE; t._index--; } }; } return function(t, c) { if (c === lower || c === upper) { t._state = SUCCESS; } else { t._state = FAILURE; t._index--; } }; } function consumeSpecialNameChar(upper, NEXT_STATE) { var lower = upper.toLowerCase(); return function(t, c) { if (c === lower || c === upper) { t._state = NEXT_STATE; } else { t._state = 3; t._index--; } }; } var stateBeforeCdata1 = ifElseState( "C", 24, 16 /* InDeclaration */ ); var stateBeforeCdata2 = ifElseState( "D", 25, 16 /* InDeclaration */ ); var stateBeforeCdata3 = ifElseState( "A", 26, 16 /* InDeclaration */ ); var stateBeforeCdata4 = ifElseState( "T", 27, 16 /* InDeclaration */ ); var stateBeforeCdata5 = ifElseState( "A", 28, 16 /* InDeclaration */ ); var stateBeforeScript1 = consumeSpecialNameChar( "R", 35 /* BeforeScript2 */ ); var stateBeforeScript2 = consumeSpecialNameChar( "I", 36 /* BeforeScript3 */ ); var stateBeforeScript3 = consumeSpecialNameChar( "P", 37 /* BeforeScript4 */ ); var stateBeforeScript4 = consumeSpecialNameChar( "T", 38 /* BeforeScript5 */ ); var stateAfterScript1 = ifElseState( "R", 40, 1 /* Text */ ); var stateAfterScript2 = ifElseState( "I", 41, 1 /* Text */ ); var stateAfterScript3 = ifElseState( "P", 42, 1 /* Text */ ); var stateAfterScript4 = ifElseState( "T", 43, 1 /* Text */ ); var stateBeforeStyle1 = consumeSpecialNameChar( "Y", 45 /* BeforeStyle2 */ ); var stateBeforeStyle2 = consumeSpecialNameChar( "L", 46 /* BeforeStyle3 */ ); var stateBeforeStyle3 = consumeSpecialNameChar( "E", 47 /* BeforeStyle4 */ ); var stateAfterStyle1 = ifElseState( "Y", 49, 1 /* Text */ ); var stateAfterStyle2 = ifElseState( "L", 50, 1 /* Text */ ); var stateAfterStyle3 = ifElseState( "E", 51, 1 /* Text */ ); var stateBeforeSpecialT = consumeSpecialNameChar( "I", 54 /* BeforeTitle1 */ ); var stateBeforeTitle1 = consumeSpecialNameChar( "T", 55 /* BeforeTitle2 */ ); var stateBeforeTitle2 = consumeSpecialNameChar( "L", 56 /* BeforeTitle3 */ ); var stateBeforeTitle3 = consumeSpecialNameChar( "E", 57 /* BeforeTitle4 */ ); var stateAfterSpecialTEnd = ifElseState( "I", 58, 1 /* Text */ ); var stateAfterTitle1 = ifElseState( "T", 59, 1 /* Text */ ); var stateAfterTitle2 = ifElseState( "L", 60, 1 /* Text */ ); var stateAfterTitle3 = ifElseState( "E", 61, 1 /* Text */ ); var stateBeforeEntity = ifElseState( "#", 63, 64 /* InNamedEntity */ ); var stateBeforeNumericEntity = ifElseState( "X", 66, 65 /* InNumericEntity */ ); var Tokenizer = ( /** @class */ (function() { function Tokenizer2(options, cbs) { var _a; this._state = 1; this.buffer = ""; this.sectionStart = 0; this._index = 0; this.bufferOffset = 0; this.baseState = 1; this.special = 1; this.running = true; this.ended = false; this.cbs = cbs; this.xmlMode = !!(options === null || options === void 0 ? void 0 : options.xmlMode); this.decodeEntities = (_a = options === null || options === void 0 ? void 0 : options.decodeEntities) !== null && _a !== void 0 ? _a : true; } Tokenizer2.prototype.reset = function() { this._state = 1; this.buffer = ""; this.sectionStart = 0; this._index = 0; this.bufferOffset = 0; this.baseState = 1; this.special = 1; this.running = true; this.ended = false; }; Tokenizer2.prototype.write = function(chunk) { if (this.ended) this.cbs.onerror(Error(".write() after done!")); this.buffer += chunk; this.parse(); }; Tokenizer2.prototype.end = function(chunk) { if (this.ended) this.cbs.onerror(Error(".end() after done!")); if (chunk) this.write(chunk); this.ended = true; if (this.running) this.finish(); }; Tokenizer2.prototype.pause = function() { this.running = false; }; Tokenizer2.prototype.resume = function() { this.running = true; if (this._index < this.buffer.length) { this.parse(); } if (this.ended) { this.finish(); } }; Tokenizer2.prototype.getAbsoluteIndex = function() { return this.bufferOffset + this._index; }; Tokenizer2.prototype.stateText = function(c) { if (c === "<") { if (this._index > this.sectionStart) { this.cbs.ontext(this.getSection()); } this._state = 2; this.sectionStart = this._index; } else if (this.decodeEntities && c === "&" && (this.special === 1 || this.special === 4)) { if (this._index > this.sectionStart) { this.cbs.ontext(this.getSection()); } this.baseState = 1; this._state = 62; this.sectionStart = this._index; } }; Tokenizer2.prototype.isTagStartChar = function(c) { return isASCIIAlpha(c) || this.xmlMode && !whitespace2(c) && c !== "/" && c !== ">"; }; Tokenizer2.prototype.stateBeforeTagName = function(c) { if (c === "/") { this._state = 5; } else if (c === "<") { this.cbs.ontext(this.getSection()); this.sectionStart = this._index; } else if (c === ">" || this.special !== 1 || whitespace2(c)) { this._state = 1; } else if (c === "!") { this._state = 15; this.sectionStart = this._index + 1; } else if (c === "?") { this._state = 17; this.sectionStart = this._index + 1; } else if (!this.isTagStartChar(c)) { this._state = 1; } else { this._state = !this.xmlMode && (c === "s" || c === "S") ? 32 : !this.xmlMode && (c === "t" || c === "T") ? 52 : 3; this.sectionStart = this._index; } }; Tokenizer2.prototype.stateInTagName = function(c) { if (c === "/" || c === ">" || whitespace2(c)) { this.emitToken("onopentagname"); this._state = 8; this._index--; } }; Tokenizer2.prototype.stateBeforeClosingTagName = function(c) { if (whitespace2(c)) { } else if (c === ">") { this._state = 1; } else if (this.special !== 1) { if (this.special !== 4 && (c === "s" || c === "S")) { this._state = 33; } else if (this.special === 4 && (c === "t" || c === "T")) { this._state = 53; } else { this._state = 1; this._index--; } } else if (!this.isTagStartChar(c)) { this._state = 20; this.sectionStart = this._index; } else { this._state = 6; this.sectionStart = this._index; } }; Tokenizer2.prototype.stateInClosingTagName = function(c) { if (c === ">" || whitespace2(c)) { this.emitToken("onclosetag"); this._state = 7; this._index--; } }; Tokenizer2.prototype.stateAfterClosingTagName = function(c) { if (c === ">") { this._state = 1; this.sectionStart = this._index + 1; } }; Tokenizer2.prototype.stateBeforeAttributeName = function(c) { if (c === ">") { this.cbs.onopentagend(); this._state = 1; this.sectionStart = this._index + 1; } else if (c === "/") { this._state = 4; } else if (!whitespace2(c)) { this._state = 9; this.sectionStart = this._index; } }; Tokenizer2.prototype.stateInSelfClosingTag = function(c) { if (c === ">") { this.cbs.onselfclosingtag(); this._state = 1; this.sectionStart = this._index + 1; this.special = 1; } else if (!whitespace2(c)) { this._state = 8; this._index--; } }; Tokenizer2.prototype.stateInAttributeName = function(c) { if (c === "=" || c === "/" || c === ">" || whitespace2(c)) { this.cbs.onattribname(this.getSection()); this.sectionStart = -1; this._state = 10; this._index--; } }; Tokenizer2.prototype.stateAfterAttributeName = function(c) { if (c === "=") { this._state = 11; } else if (c === "/" || c === ">") { this.cbs.onattribend(void 0); this._state = 8; this._index--; } else if (!whitespace2(c)) { this.cbs.onattribend(void 0); this._state = 9; this.sectionStart = this._index; } }; Tokenizer2.prototype.stateBeforeAttributeValue = function(c) { if (c === '"') { this._state = 12; this.sectionStart = this._index + 1; } else if (c === "'") { this._state = 13; this.sectionStart = this._index + 1; } else if (!whitespace2(c)) { this._state = 14; this.sectionStart = this._index; this._index--; } }; Tokenizer2.prototype.handleInAttributeValue = function(c, quote) { if (c === quote) { this.emitToken("onattribdata"); this.cbs.onattribend(quote); this._state = 8; } else if (this.decodeEntities && c === "&") { this.emitToken("onattribdata"); this.baseState = this._state; this._state = 62; this.sectionStart = this._index; } }; Tokenizer2.prototype.stateInAttributeValueDoubleQuotes = function(c) { this.handleInAttributeValue(c, '"'); }; Tokenizer2.prototype.stateInAttributeValueSingleQuotes = function(c) { this.handleInAttributeValue(c, "'"); }; Tokenizer2.prototype.stateInAttributeValueNoQuotes = function(c) { if (whitespace2(c) || c === ">") { this.emitToken("onattribdata"); this.cbs.onattribend(null); this._state = 8; this._index--; } else if (this.decodeEntities && c === "&") { this.emitToken("onattribdata"); this.baseState = this._state; this._state = 62; this.sectionStart = this._index; } }; Tokenizer2.prototype.stateBeforeDeclaration = function(c) { this._state = c === "[" ? 23 : c === "-" ? 18 : 16; }; Tokenizer2.prototype.stateInDeclaration = function(c) { if (c === ">") { this.cbs.ondeclaration(this.getSection()); this._state = 1; this.sectionStart = this._index + 1; } }; Tokenizer2.prototype.stateInProcessingInstruction = function(c) { if (c === ">") { this.cbs.onprocessinginstruction(this.getSection()); this._state = 1; this.sectionStart = this._index + 1; } }; Tokenizer2.prototype.stateBeforeComment = function(c) { if (c === "-") { this._state = 19; this.sectionStart = this._index + 1; } else { this._state = 16; } }; Tokenizer2.prototype.stateInComment = function(c) { if (c === "-") this._state = 21; }; Tokenizer2.prototype.stateInSpecialComment = function(c) { if (c === ">") { this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index)); this._state = 1; this.sectionStart = this._index + 1; } }; Tokenizer2.prototype.stateAfterComment1 = function(c) { if (c === "-") { this._state = 22; } else { this._state = 19; } }; Tokenizer2.prototype.stateAfterComment2 = function(c) { if (c === ">") { this.cbs.oncomment(this.buffer.substring(this.sectionStart, this._index - 2)); this._state = 1; this.sectionStart = this._index + 1; } else if (c !== "-") { this._state = 19; } }; Tokenizer2.prototype.stateBeforeCdata6 = function(c) { if (c === "[") { this._state = 29; this.sectionStart = this._index + 1; } else { this._state = 16; this._index--; } }; Tokenizer2.prototype.stateInCdata = function(c) { if (c === "]") this._state = 30; }; Tokenizer2.prototype.stateAfterCdata1 = function(c) { if (c === "]") this._state = 31; else this._state = 29; }; Tokenizer2.prototype.stateAfterCdata2 = function(c) { if (c === ">") { this.cbs.oncdata(this.buffer.substring(this.sectionStart, this._index - 2)); this._state = 1; this.sectionStart = this._index + 1; } else if (c !== "]") { this._state = 29; } }; Tokenizer2.prototype.stateBeforeSpecialS = function(c) { if (c === "c" || c === "C") { this._state = 34; } else if (c === "t" || c === "T") { this._state = 44; } else { this._state = 3; this._index--; } }; Tokenizer2.prototype.stateBeforeSpecialSEnd = function(c) { if (this.special === 2 && (c === "c" || c === "C")) { this._state = 39; } else if (this.special === 3 && (c === "t" || c === "T")) { this._state = 48; } else this._state = 1; }; Tokenizer2.prototype.stateBeforeSpecialLast = function(c, special) { if (c === "/" || c === ">" || whitespace2(c)) { this.special = special; } this._state = 3; this._index--; }; Tokenizer2.prototype.stateAfterSpecialLast = function(c, sectionStartOffset) { if (c === ">" || whitespace2(c)) { this.special = 1; this._state = 6; this.sectionStart = this._index - sectionStartOffset; this._index--; } else this._state = 1; }; Tokenizer2.prototype.parseFixedEntity = function(map) { if (map === void 0) { map = this.xmlMode ? xml_json_1.default : entities_json_1.default; } if (this.sectionStart + 1 < this._index) { var entity = this.buffer.substring(this.sectionStart + 1, this._index); if (Object.prototype.hasOwnProperty.call(map, entity)) { this.emitPartial(map[entity]); this.sectionStart = this._index + 1; } } }; Tokenizer2.prototype.parseLegacyEntity = function() { var start = this.sectionStart + 1; var limit = Math.min(this._index - start, 6); while (limit >= 2) { var entity = this.buffer.substr(start, limit); if (Object.prototype.hasOwnProperty.call(legacy_json_1.default, entity)) { this.emitPartial(legacy_json_1.default[entity]); this.sectionStart += limit + 1; return; } limit--; } }; Tokenizer2.prototype.stateInNamedEntity = function(c) { if (c === ";") { this.parseFixedEntity(); if (this.baseState === 1 && this.sectionStart + 1 < this._index && !this.xmlMode) { this.parseLegacyEntity(); } this._state = this.baseState; } else if ((c < "0" || c > "9") && !isASCIIAlpha(c)) { if (this.xmlMode || this.sectionStart + 1 === this._index) { } else if (this.baseState !== 1) { if (c !== "=") { this.parseFixedEntity(legacy_json_1.default); } } else { this.parseLegacyEntity(); } this._state = this.baseState; this._index--; } }; Tokenizer2.prototype.decodeNumericEntity = function(offset, base, strict) { var sectionStart = this.sectionStart + offset; if (sectionStart !== this._index) { var entity = this.buffer.substring(sectionStart, this._index); var parsed = parseInt(entity, base); this.emitPartial(decode_codepoint_1.default(parsed)); this.sectionStart = strict ? this._index + 1 : this._index; } this._state = this.baseState; }; Tokenizer2.prototype.stateInNumericEntity = function(c) { if (c === ";") { this.decodeNumericEntity(2, 10, true); } else if (c < "0" || c > "9") { if (!this.xmlMode) { this.decodeNumericEntity(2, 10, false); } else { this._state = this.baseState; } this._index--; } }; Tokenizer2.prototype.stateInHexEntity = function(c) { if (c === ";") { this.decodeNumericEntity(3, 16, true); } else if ((c < "a" || c > "f") && (c < "A" || c > "F") && (c < "0" || c > "9")) { if (!this.xmlMode) { this.decodeNumericEntity(3, 16, false); } else { this._state = this.baseState; } this._index--; } }; Tokenizer2.prototype.cleanup = function() { if (this.sectionStart < 0) { this.buffer = ""; this.bufferOffset += this._index; this._index = 0; } else if (this.running) { if (this._state === 1) { if (this.sectionStart !== this._index) { this.cbs.ontext(this.buffer.substr(this.sectionStart)); } this.buffer = ""; this.bufferOffset += this._index; this._index = 0; } else if (this.sectionStart === this._index) { this.buffer = ""; this.bufferOffset += this._index; this._index = 0; } else { this.buffer = this.buffer.substr(this.sectionStart); this._index -= this.sectionStart; this.bufferOffset += this.sectionStart; } this.sectionStart = 0; } }; Tokenizer2.prototype.parse = function() { while (this._index < this.buffer.length && this.running) { var c = this.buffer.charAt(this._index); if (this._state === 1) { this.stateText(c); } else if (this._state === 12) { this.stateInAttributeValueDoubleQuotes(c); } else if (this._state === 9) { this.stateInAttributeName(c); } else if (this._state === 19) { this.stateInComment(c); } else if (this._state === 20) { this.stateInSpecialComment(c); } else if (this._state === 8) { this.stateBeforeAttributeName(c); } else if (this._state === 3) { this.stateInTagName(c); } else if (this._state === 6) { this.stateInClosingTagName(c); } else if (this._state === 2) { this.stateBeforeTagName(c); } else if (this._state === 10) { this.stateAfterAttributeName(c); } else if (this._state === 13) { this.stateInAttributeValueSingleQuotes(c); } else if (this._state === 11) { this.stateBeforeAttributeValue(c); } else if (this._state === 5) { this.stateBeforeClosingTagName(c); } else if (this._state === 7) { this.stateAfterClosingTagName(c); } else if (this._state === 32) { this.stateBeforeSpecialS(c); } else if (this._state === 21) { this.stateAfterComment1(c); } else if (this._state === 14) { this.stateInAttributeValueNoQuotes(c); } else if (this._state === 4) { this.stateInSelfClosingTag(c); } else if (this._state === 16) { this.stateInDeclaration(c); } else if (this._state === 15) { this.stateBeforeDeclaration(c); } else if (this._state === 22) { this.stateAfterComment2(c); } else if (this._state === 18) { this.stateBeforeComment(c); } else if (this._state === 33) { this.stateBeforeSpecialSEnd(c); } else if (this._state === 53) { stateAfterSpecialTEnd(this, c); } else if (this._state === 39) { stateAfterScript1(this, c); } else if (this._state === 40) { stateAfterScript2(this, c); } else if (this._state === 41) { stateAfterScript3(this, c); } else if (this._state === 34) { stateBeforeScript1(this, c); } else if (this._state === 35) { stateBeforeScript2(this, c); } else if (this._state === 36) { stateBeforeScript3(this, c); } else if (this._state === 37) { stateBeforeScript4(this, c); } else if (this._state === 38) { this.stateBeforeSpecialLast( c, 2 /* Script */ ); } else if (this._state === 42) { stateAfterScript4(this, c); } else if (this._state === 43) { this.stateAfterSpecialLast(c, 6); } else if (this._state === 44) { stateBeforeStyle1(this, c); } else if (this._state === 29) { this.stateInCdata(c); } else if (this._state === 45) { stateBeforeStyle2(this, c); } else if (this._state === 46) { stateBeforeStyle3(this, c); } else if (this._state === 47) { this.stateBeforeSpecialLast( c, 3 /* Style */ ); } else if (this._state === 48) { stateAfterStyle1(this, c); } else if (this._state === 49) { stateAfterStyle2(this, c); } else if (this._state === 50) { stateAfterStyle3(this, c); } else if (this._state === 51) { this.stateAfterSpecialLast(c, 5); } else if (this._state === 52) { stateBeforeSpecialT(this, c); } else if (this._state === 54) { stateBeforeTitle1(this, c); } else if (this._state === 55) { stateBeforeTitle2(this, c); } else if (this._state === 56) { stateBeforeTitle3(this, c); } else if (this._state === 57) { this.stateBeforeSpecialLast( c, 4 /* Title */ ); } else if (this._state === 58) { stateAfterTitle1(this, c); } else if (this._state === 59) { stateAfterTitle2(this, c); } else if (this._state === 60) { stateAfterTitle3(this, c); } else if (this._state === 61) { this.stateAfterSpecialLast(c, 5); } else if (this._state === 17) { this.stateInProcessingInstruction(c); } else if (this._state === 64) { this.stateInNamedEntity(c); } else if (this._state === 23) { stateBeforeCdata1(this, c); } else if (this._state === 62) { stateBeforeEntity(this, c); } else if (this._state === 24) { stateBeforeCdata2(this, c); } else if (this._state === 25) { stateBeforeCdata3(this, c); } else if (this._state === 30) { this.stateAfterCdata1(c); } else if (this._state === 31) { this.stateAfterCdata2(c); } else if (this._state === 26) { stateBeforeCdata4(this, c); } else if (this._state === 27) { stateBeforeCdata5(this, c); } else if (this._state === 28) { this.stateBeforeCdata6(c); } else if (this._state === 66) { this.stateInHexEntity(c); } else if (this._state === 65) { this.stateInNumericEntity(c); } else if (this._state === 63) { stateBeforeNumericEntity(this, c); } else { this.cbs.onerror(Error("unknown _state"), this._state); } this._index++; } this.cleanup(); }; Tokenizer2.prototype.finish = function() { if (this.sectionStart < this._index) { this.handleTrailingData(); } this.cbs.onend(); }; Tokenizer2.prototype.handleTrailingData = function() { var data = this.buffer.substr(this.sectionStart); if (this._state === 29 || this._state === 30 || this._state === 31) { this.cbs.oncdata(data); } else if (this._state === 19 || this._state === 21 || this._state === 22) { this.cbs.oncomment(data); } else if (this._state === 64 && !this.xmlMode) { this.parseLegacyEntity(); if (this.sectionStart < this._index) { this._state = this.baseState; this.handleTrailingData(); } } else if (this._state === 65 && !this.xmlMode) { this.decodeNumericEntity(2, 10, false); if (this.sectionStart < this._index) { this._state = this.baseState; this.handleTrailingData(); } } else if (this._state === 66 && !this.xmlMode) { this.decodeNumericEntity(3, 16, false); if (this.sectionStart < this._index) { this._state = this.baseState; this.handleTrailingData(); } } else if (this._state !== 3 && this._state !== 8 && this._state !== 11 && this._state !== 10 && this._state !== 9 && this._state !== 13 && this._state !== 12 && this._state !== 14 && this._state !== 6) { this.cbs.ontext(data); } }; Tokenizer2.prototype.getSection = function() { return this.buffer.substring(this.sectionStart, this._index); }; Tokenizer2.prototype.emitToken = function(name) { this.cbs[name](this.getSection()); this.sectionStart = -1; }; Tokenizer2.prototype.emitPartial = function(value) { if (this.baseState !== 1) { this.cbs.onattribdata(value); } else { this.cbs.ontext(value); } }; return Tokenizer2; })() ); exports2.default = Tokenizer; } }); // node_modules/telegram/node_modules/htmlparser2/lib/Parser.js var require_Parser2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/lib/Parser.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Parser = void 0; var Tokenizer_1 = __importDefault2(require_Tokenizer2()); var formTags = /* @__PURE__ */ new Set([ "input", "option", "optgroup", "select", "button", "datalist", "textarea" ]); var pTag = /* @__PURE__ */ new Set(["p"]); var openImpliesClose = { tr: /* @__PURE__ */ new Set(["tr", "th", "td"]), th: /* @__PURE__ */ new Set(["th"]), td: /* @__PURE__ */ new Set(["thead", "th", "td"]), body: /* @__PURE__ */ new Set(["head", "link", "script"]), li: /* @__PURE__ */ new Set(["li"]), p: pTag, h1: pTag, h2: pTag, h3: pTag, h4: pTag, h5: pTag, h6: pTag, select: formTags, input: formTags, output: formTags, button: formTags, datalist: formTags, textarea: formTags, option: /* @__PURE__ */ new Set(["option"]), optgroup: /* @__PURE__ */ new Set(["optgroup", "option"]), dd: /* @__PURE__ */ new Set(["dt", "dd"]), dt: /* @__PURE__ */ new Set(["dt", "dd"]), address: pTag, article: pTag, aside: pTag, blockquote: pTag, details: pTag, div: pTag, dl: pTag, fieldset: pTag, figcaption: pTag, figure: pTag, footer: pTag, form: pTag, header: pTag, hr: pTag, main: pTag, nav: pTag, ol: pTag, pre: pTag, section: pTag, table: pTag, ul: pTag, rt: /* @__PURE__ */ new Set(["rt", "rp"]), rp: /* @__PURE__ */ new Set(["rt", "rp"]), tbody: /* @__PURE__ */ new Set(["thead", "tbody"]), tfoot: /* @__PURE__ */ new Set(["thead", "tbody"]) }; var voidElements2 = /* @__PURE__ */ new Set([ "area", "base", "basefont", "br", "col", "command", "embed", "frame", "hr", "img", "input", "isindex", "keygen", "link", "meta", "param", "source", "track", "wbr" ]); var foreignContextElements = /* @__PURE__ */ new Set(["math", "svg"]); var htmlIntegrationElements = /* @__PURE__ */ new Set([ "mi", "mo", "mn", "ms", "mtext", "annotation-xml", "foreignObject", "desc", "title" ]); var reNameEnd = /\s|\//; var Parser = ( /** @class */ (function() { function Parser2(cbs, options) { if (options === void 0) { options = {}; } var _a, _b, _c, _d, _e; this.startIndex = 0; this.endIndex = null; this.tagname = ""; this.attribname = ""; this.attribvalue = ""; this.attribs = null; this.stack = []; this.foreignContext = []; this.options = options; this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode; this.lowerCaseAttributeNames = (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode; this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_1.default)(this.options, this); (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this); } Parser2.prototype.updatePosition = function(initialOffset) { if (this.endIndex === null) { if (this.tokenizer.sectionStart <= initialOffset) { this.startIndex = 0; } else { this.startIndex = this.tokenizer.sectionStart - initialOffset; } } else { this.startIndex = this.endIndex + 1; } this.endIndex = this.tokenizer.getAbsoluteIndex(); }; Parser2.prototype.ontext = function(data) { var _a, _b; this.updatePosition(1); this.endIndex--; (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data); }; Parser2.prototype.onopentagname = function(name) { var _a, _b; if (this.lowerCaseTagNames) { name = name.toLowerCase(); } this.tagname = name; if (!this.options.xmlMode && Object.prototype.hasOwnProperty.call(openImpliesClose, name)) { var el = void 0; while (this.stack.length > 0 && openImpliesClose[name].has(el = this.stack[this.stack.length - 1])) { this.onclosetag(el); } } if (this.options.xmlMode || !voidElements2.has(name)) { this.stack.push(name); if (foreignContextElements.has(name)) { this.foreignContext.push(true); } else if (htmlIntegrationElements.has(name)) { this.foreignContext.push(false); } } (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, name); if (this.cbs.onopentag) this.attribs = {}; }; Parser2.prototype.onopentagend = function() { var _a, _b; this.updatePosition(1); if (this.attribs) { (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs); this.attribs = null; } if (!this.options.xmlMode && this.cbs.onclosetag && voidElements2.has(this.tagname)) { this.cbs.onclosetag(this.tagname); } this.tagname = ""; }; Parser2.prototype.onclosetag = function(name) { this.updatePosition(1); if (this.lowerCaseTagNames) { name = name.toLowerCase(); } if (foreignContextElements.has(name) || htmlIntegrationElements.has(name)) { this.foreignContext.pop(); } if (this.stack.length && (this.options.xmlMode || !voidElements2.has(name))) { var pos = this.stack.lastIndexOf(name); if (pos !== -1) { if (this.cbs.onclosetag) { pos = this.stack.length - pos; while (pos--) { this.cbs.onclosetag(this.stack.pop()); } } else this.stack.length = pos; } else if (name === "p" && !this.options.xmlMode) { this.onopentagname(name); this.closeCurrentTag(); } } else if (!this.options.xmlMode && (name === "br" || name === "p")) { this.onopentagname(name); this.closeCurrentTag(); } }; Parser2.prototype.onselfclosingtag = function() { if (this.options.xmlMode || this.options.recognizeSelfClosing || this.foreignContext[this.foreignContext.length - 1]) { this.closeCurrentTag(); } else { this.onopentagend(); } }; Parser2.prototype.closeCurrentTag = function() { var _a, _b; var name = this.tagname; this.onopentagend(); if (this.stack[this.stack.length - 1] === name) { (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name); this.stack.pop(); } }; Parser2.prototype.onattribname = function(name) { if (this.lowerCaseAttributeNames) { name = name.toLowerCase(); } this.attribname = name; }; Parser2.prototype.onattribdata = function(value) { this.attribvalue += value; }; Parser2.prototype.onattribend = function(quote) { var _a, _b; (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote); if (this.attribs && !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { this.attribs[this.attribname] = this.attribvalue; } this.attribname = ""; this.attribvalue = ""; }; Parser2.prototype.getInstructionName = function(value) { var idx = value.search(reNameEnd); var name = idx < 0 ? value : value.substr(0, idx); if (this.lowerCaseTagNames) { name = name.toLowerCase(); } return name; }; Parser2.prototype.ondeclaration = function(value) { if (this.cbs.onprocessinginstruction) { var name_1 = this.getInstructionName(value); this.cbs.onprocessinginstruction("!" + name_1, "!" + value); } }; Parser2.prototype.onprocessinginstruction = function(value) { if (this.cbs.onprocessinginstruction) { var name_2 = this.getInstructionName(value); this.cbs.onprocessinginstruction("?" + name_2, "?" + value); } }; Parser2.prototype.oncomment = function(value) { var _a, _b, _c, _d; this.updatePosition(4); (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, value); (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); }; Parser2.prototype.oncdata = function(value) { var _a, _b, _c, _d, _e, _f; this.updatePosition(1); if (this.options.xmlMode || this.options.recognizeCDATA) { (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a); (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); } else { this.oncomment("[CDATA[" + value + "]]"); } }; Parser2.prototype.onerror = function(err) { var _a, _b; (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, err); }; Parser2.prototype.onend = function() { var _a, _b; if (this.cbs.onclosetag) { for (var i = this.stack.length; i > 0; this.cbs.onclosetag(this.stack[--i])) ; } (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a); }; Parser2.prototype.reset = function() { var _a, _b, _c, _d; (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a); this.tokenizer.reset(); this.tagname = ""; this.attribname = ""; this.attribs = null; this.stack = []; (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); }; Parser2.prototype.parseComplete = function(data) { this.reset(); this.end(data); }; Parser2.prototype.write = function(chunk) { this.tokenizer.write(chunk); }; Parser2.prototype.end = function(chunk) { this.tokenizer.end(chunk); }; Parser2.prototype.pause = function() { this.tokenizer.pause(); }; Parser2.prototype.resume = function() { this.tokenizer.resume(); }; Parser2.prototype.parseChunk = function(chunk) { this.write(chunk); }; Parser2.prototype.done = function(chunk) { this.end(chunk); }; return Parser2; })() ); exports2.Parser = Parser; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domhandler/lib/node.js var require_node5 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domhandler/lib/node.js"(exports2) { "use strict"; init_define_import_meta_env(); var __extends2 = exports2 && exports2.__extends || /* @__PURE__ */ (function() { var extendStatics2 = function(d, b) { extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { d2.__proto__ = b2; } || function(d2, b2) { for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; }; return extendStatics2(d, b); }; return function(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics2(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __assign2 = exports2 && exports2.__assign || function() { __assign2 = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign2.apply(this, arguments); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.cloneNode = exports2.hasChildren = exports2.isDocument = exports2.isDirective = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = exports2.Element = exports2.Document = exports2.NodeWithChildren = exports2.ProcessingInstruction = exports2.Comment = exports2.Text = exports2.DataNode = exports2.Node = void 0; var domelementtype_1 = require_lib5(); var nodeTypes = /* @__PURE__ */ new Map([ [domelementtype_1.ElementType.Tag, 1], [domelementtype_1.ElementType.Script, 1], [domelementtype_1.ElementType.Style, 1], [domelementtype_1.ElementType.Directive, 1], [domelementtype_1.ElementType.Text, 3], [domelementtype_1.ElementType.CDATA, 4], [domelementtype_1.ElementType.Comment, 8], [domelementtype_1.ElementType.Root, 9] ]); var Node = ( /** @class */ (function() { function Node2(type) { this.type = type; this.parent = null; this.prev = null; this.next = null; this.startIndex = null; this.endIndex = null; } Object.defineProperty(Node2.prototype, "nodeType", { // Read-only aliases /** * [DOM spec](https://dom.spec.whatwg.org/#dom-node-nodetype)-compatible * node {@link type}. */ get: function() { var _a; return (_a = nodeTypes.get(this.type)) !== null && _a !== void 0 ? _a : 1; }, enumerable: false, configurable: true }); Object.defineProperty(Node2.prototype, "parentNode", { // Read-write aliases for properties /** * Same as {@link parent}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.parent; }, set: function(parent) { this.parent = parent; }, enumerable: false, configurable: true }); Object.defineProperty(Node2.prototype, "previousSibling", { /** * Same as {@link prev}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.prev; }, set: function(prev) { this.prev = prev; }, enumerable: false, configurable: true }); Object.defineProperty(Node2.prototype, "nextSibling", { /** * Same as {@link next}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.next; }, set: function(next) { this.next = next; }, enumerable: false, configurable: true }); Node2.prototype.cloneNode = function(recursive) { if (recursive === void 0) { recursive = false; } return cloneNode(this, recursive); }; return Node2; })() ); exports2.Node = Node; var DataNode = ( /** @class */ (function(_super) { __extends2(DataNode2, _super); function DataNode2(type, data) { var _this = _super.call(this, type) || this; _this.data = data; return _this; } Object.defineProperty(DataNode2.prototype, "nodeValue", { /** * Same as {@link data}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.data; }, set: function(data) { this.data = data; }, enumerable: false, configurable: true }); return DataNode2; })(Node) ); exports2.DataNode = DataNode; var Text4 = ( /** @class */ (function(_super) { __extends2(Text5, _super); function Text5(data) { return _super.call(this, domelementtype_1.ElementType.Text, data) || this; } return Text5; })(DataNode) ); exports2.Text = Text4; var Comment4 = ( /** @class */ (function(_super) { __extends2(Comment5, _super); function Comment5(data) { return _super.call(this, domelementtype_1.ElementType.Comment, data) || this; } return Comment5; })(DataNode) ); exports2.Comment = Comment4; var ProcessingInstruction = ( /** @class */ (function(_super) { __extends2(ProcessingInstruction2, _super); function ProcessingInstruction2(name, data) { var _this = _super.call(this, domelementtype_1.ElementType.Directive, data) || this; _this.name = name; return _this; } return ProcessingInstruction2; })(DataNode) ); exports2.ProcessingInstruction = ProcessingInstruction; var NodeWithChildren = ( /** @class */ (function(_super) { __extends2(NodeWithChildren2, _super); function NodeWithChildren2(type, children) { var _this = _super.call(this, type) || this; _this.children = children; return _this; } Object.defineProperty(NodeWithChildren2.prototype, "firstChild", { // Aliases /** First child of the node. */ get: function() { var _a; return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren2.prototype, "lastChild", { /** Last child of the node. */ get: function() { return this.children.length > 0 ? this.children[this.children.length - 1] : null; }, enumerable: false, configurable: true }); Object.defineProperty(NodeWithChildren2.prototype, "childNodes", { /** * Same as {@link children}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.children; }, set: function(children) { this.children = children; }, enumerable: false, configurable: true }); return NodeWithChildren2; })(Node) ); exports2.NodeWithChildren = NodeWithChildren; var Document = ( /** @class */ (function(_super) { __extends2(Document2, _super); function Document2(children) { return _super.call(this, domelementtype_1.ElementType.Root, children) || this; } return Document2; })(NodeWithChildren) ); exports2.Document = Document; var Element = ( /** @class */ (function(_super) { __extends2(Element2, _super); function Element2(name, attribs, children, type) { if (children === void 0) { children = []; } if (type === void 0) { type = name === "script" ? domelementtype_1.ElementType.Script : name === "style" ? domelementtype_1.ElementType.Style : domelementtype_1.ElementType.Tag; } var _this = _super.call(this, type, children) || this; _this.name = name; _this.attribs = attribs; return _this; } Object.defineProperty(Element2.prototype, "tagName", { // DOM Level 1 aliases /** * Same as {@link name}. * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. */ get: function() { return this.name; }, set: function(name) { this.name = name; }, enumerable: false, configurable: true }); Object.defineProperty(Element2.prototype, "attributes", { get: function() { var _this = this; return Object.keys(this.attribs).map(function(name) { var _a, _b; return { name, value: _this.attribs[name], namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name], prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name] }; }); }, enumerable: false, configurable: true }); return Element2; })(NodeWithChildren) ); exports2.Element = Element; function isTag3(node) { return (0, domelementtype_1.isTag)(node); } exports2.isTag = isTag3; function isCDATA2(node) { return node.type === domelementtype_1.ElementType.CDATA; } exports2.isCDATA = isCDATA2; function isText2(node) { return node.type === domelementtype_1.ElementType.Text; } exports2.isText = isText2; function isComment2(node) { return node.type === domelementtype_1.ElementType.Comment; } exports2.isComment = isComment2; function isDirective(node) { return node.type === domelementtype_1.ElementType.Directive; } exports2.isDirective = isDirective; function isDocument(node) { return node.type === domelementtype_1.ElementType.Root; } exports2.isDocument = isDocument; function hasChildren2(node) { return Object.prototype.hasOwnProperty.call(node, "children"); } exports2.hasChildren = hasChildren2; function cloneNode(node, recursive) { if (recursive === void 0) { recursive = false; } var result; if (isText2(node)) { result = new Text4(node.data); } else if (isComment2(node)) { result = new Comment4(node.data); } else if (isTag3(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_1 = new Element(node.name, __assign2({}, node.attribs), children); children.forEach(function(child) { return child.parent = clone_1; }); if (node.namespace != null) { clone_1.namespace = node.namespace; } if (node["x-attribsNamespace"]) { clone_1["x-attribsNamespace"] = __assign2({}, node["x-attribsNamespace"]); } if (node["x-attribsPrefix"]) { clone_1["x-attribsPrefix"] = __assign2({}, node["x-attribsPrefix"]); } result = clone_1; } else if (isCDATA2(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_2 = new NodeWithChildren(domelementtype_1.ElementType.CDATA, children); children.forEach(function(child) { return child.parent = clone_2; }); result = clone_2; } else if (isDocument(node)) { var children = recursive ? cloneChildren(node.children) : []; var clone_3 = new Document(children); children.forEach(function(child) { return child.parent = clone_3; }); if (node["x-mode"]) { clone_3["x-mode"] = node["x-mode"]; } result = clone_3; } else if (isDirective(node)) { var instruction = new ProcessingInstruction(node.name, node.data); if (node["x-name"] != null) { instruction["x-name"] = node["x-name"]; instruction["x-publicId"] = node["x-publicId"]; instruction["x-systemId"] = node["x-systemId"]; } result = instruction; } else { throw new Error("Not implemented yet: ".concat(node.type)); } result.startIndex = node.startIndex; result.endIndex = node.endIndex; if (node.sourceCodeLocation != null) { result.sourceCodeLocation = node.sourceCodeLocation; } return result; } exports2.cloneNode = cloneNode; function cloneChildren(childs) { var children = childs.map(function(child) { return cloneNode(child, true); }); for (var i = 1; i < children.length; i++) { children[i].prev = children[i - 1]; children[i - 1].next = children[i]; } return children; } } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domhandler/lib/index.js var require_lib11 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domhandler/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.DomHandler = void 0; var domelementtype_1 = require_lib5(); var node_1 = require_node5(); __exportStar2(require_node5(), exports2); var reWhitespace = /\s+/g; var defaultOpts = { normalizeWhitespace: false, withStartIndices: false, withEndIndices: false, xmlMode: false }; var DomHandler = ( /** @class */ (function() { function DomHandler2(callback, options, elementCB) { this.dom = []; this.root = new node_1.Document(this.dom); this.done = false; this.tagStack = [this.root]; this.lastNode = null; this.parser = null; if (typeof options === "function") { elementCB = options; options = defaultOpts; } if (typeof callback === "object") { options = callback; callback = void 0; } this.callback = callback !== null && callback !== void 0 ? callback : null; this.options = options !== null && options !== void 0 ? options : defaultOpts; this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; } DomHandler2.prototype.onparserinit = function(parser) { this.parser = parser; }; DomHandler2.prototype.onreset = function() { this.dom = []; this.root = new node_1.Document(this.dom); this.done = false; this.tagStack = [this.root]; this.lastNode = null; this.parser = null; }; DomHandler2.prototype.onend = function() { if (this.done) return; this.done = true; this.parser = null; this.handleCallback(null); }; DomHandler2.prototype.onerror = function(error) { this.handleCallback(error); }; DomHandler2.prototype.onclosetag = function() { this.lastNode = null; var elem = this.tagStack.pop(); if (this.options.withEndIndices) { elem.endIndex = this.parser.endIndex; } if (this.elementCB) this.elementCB(elem); }; DomHandler2.prototype.onopentag = function(name, attribs) { var type = this.options.xmlMode ? domelementtype_1.ElementType.Tag : void 0; var element = new node_1.Element(name, attribs, void 0, type); this.addNode(element); this.tagStack.push(element); }; DomHandler2.prototype.ontext = function(data) { var normalizeWhitespace = this.options.normalizeWhitespace; var lastNode = this.lastNode; if (lastNode && lastNode.type === domelementtype_1.ElementType.Text) { if (normalizeWhitespace) { lastNode.data = (lastNode.data + data).replace(reWhitespace, " "); } else { lastNode.data += data; } if (this.options.withEndIndices) { lastNode.endIndex = this.parser.endIndex; } } else { if (normalizeWhitespace) { data = data.replace(reWhitespace, " "); } var node = new node_1.Text(data); this.addNode(node); this.lastNode = node; } }; DomHandler2.prototype.oncomment = function(data) { if (this.lastNode && this.lastNode.type === domelementtype_1.ElementType.Comment) { this.lastNode.data += data; return; } var node = new node_1.Comment(data); this.addNode(node); this.lastNode = node; }; DomHandler2.prototype.oncommentend = function() { this.lastNode = null; }; DomHandler2.prototype.oncdatastart = function() { var text = new node_1.Text(""); var node = new node_1.NodeWithChildren(domelementtype_1.ElementType.CDATA, [text]); this.addNode(node); text.parent = node; this.lastNode = text; }; DomHandler2.prototype.oncdataend = function() { this.lastNode = null; }; DomHandler2.prototype.onprocessinginstruction = function(name, data) { var node = new node_1.ProcessingInstruction(name, data); this.addNode(node); }; DomHandler2.prototype.handleCallback = function(error) { if (typeof this.callback === "function") { this.callback(error, this.dom); } else if (error) { throw error; } }; DomHandler2.prototype.addNode = function(node) { var parent = this.tagStack[this.tagStack.length - 1]; var previousSibling = parent.children[parent.children.length - 1]; if (this.options.withStartIndices) { node.startIndex = this.parser.startIndex; } if (this.options.withEndIndices) { node.endIndex = this.parser.endIndex; } parent.children.push(node); if (previousSibling) { node.prev = previousSibling; previousSibling.next = node; } node.parent = parent; this.lastNode = null; }; return DomHandler2; })() ); exports2.DomHandler = DomHandler; exports2.default = DomHandler; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/decode.js var require_decode4 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/decode.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.decodeHTML = exports2.decodeHTMLStrict = exports2.decodeXML = void 0; var entities_json_1 = __importDefault2(require_entities()); var legacy_json_1 = __importDefault2(require_legacy2()); var xml_json_1 = __importDefault2(require_xml()); var decode_codepoint_1 = __importDefault2(require_decode_codepoint3()); var strictEntityRe = /&(?:[a-zA-Z0-9]+|#[xX][\da-fA-F]+|#\d+);/g; exports2.decodeXML = getStrictDecoder(xml_json_1.default); exports2.decodeHTMLStrict = getStrictDecoder(entities_json_1.default); function getStrictDecoder(map) { var replace = getReplacer(map); return function(str) { return String(str).replace(strictEntityRe, replace); }; } var sorter = function(a, b) { return a < b ? 1 : -1; }; exports2.decodeHTML = (function() { var legacy = Object.keys(legacy_json_1.default).sort(sorter); var keys = Object.keys(entities_json_1.default).sort(sorter); for (var i = 0, j = 0; i < keys.length; i++) { if (legacy[j] === keys[i]) { keys[i] += ";?"; j++; } else { keys[i] += ";"; } } var re = new RegExp("&(?:" + keys.join("|") + "|#[xX][\\da-fA-F]+;?|#\\d+;?)", "g"); var replace = getReplacer(entities_json_1.default); function replacer(str) { if (str.substr(-1) !== ";") str += ";"; return replace(str); } return function(str) { return String(str).replace(re, replacer); }; })(); function getReplacer(map) { return function replace(str) { if (str.charAt(1) === "#") { var secondChar = str.charAt(2); if (secondChar === "X" || secondChar === "x") { return decode_codepoint_1.default(parseInt(str.substr(3), 16)); } return decode_codepoint_1.default(parseInt(str.substr(2), 10)); } return map[str.slice(1, -1)] || str; }; } } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/encode.js var require_encode2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/encode.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.escapeUTF8 = exports2.escape = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.encodeXML = void 0; var xml_json_1 = __importDefault2(require_xml()); var inverseXML = getInverseObj(xml_json_1.default); var xmlReplacer = getInverseReplacer(inverseXML); exports2.encodeXML = getASCIIEncoder(inverseXML); var entities_json_1 = __importDefault2(require_entities()); var inverseHTML = getInverseObj(entities_json_1.default); var htmlReplacer = getInverseReplacer(inverseHTML); exports2.encodeHTML = getInverse(inverseHTML, htmlReplacer); exports2.encodeNonAsciiHTML = getASCIIEncoder(inverseHTML); function getInverseObj(obj) { return Object.keys(obj).sort().reduce(function(inverse, name) { inverse[obj[name]] = "&" + name + ";"; return inverse; }, {}); } function getInverseReplacer(inverse) { var single = []; var multiple = []; for (var _i = 0, _a = Object.keys(inverse); _i < _a.length; _i++) { var k = _a[_i]; if (k.length === 1) { single.push("\\" + k); } else { multiple.push(k); } } single.sort(); for (var start = 0; start < single.length - 1; start++) { var end = start; while (end < single.length - 1 && single[end].charCodeAt(1) + 1 === single[end + 1].charCodeAt(1)) { end += 1; } var count = 1 + end - start; if (count < 3) continue; single.splice(start, count, single[start] + "-" + single[end]); } multiple.unshift("[" + single.join("") + "]"); return new RegExp(multiple.join("|"), "g"); } var reNonASCII = /(?:[\x80-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g; var getCodePoint = ( // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition String.prototype.codePointAt != null ? ( // eslint-disable-next-line @typescript-eslint/no-non-null-assertion function(str) { return str.codePointAt(0); } ) : ( // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae function(c) { return (c.charCodeAt(0) - 55296) * 1024 + c.charCodeAt(1) - 56320 + 65536; } ) ); function singleCharReplacer(c) { return "&#x" + (c.length > 1 ? getCodePoint(c) : c.charCodeAt(0)).toString(16).toUpperCase() + ";"; } function getInverse(inverse, re) { return function(data) { return data.replace(re, function(name) { return inverse[name]; }).replace(reNonASCII, singleCharReplacer); }; } var reEscapeChars = new RegExp(xmlReplacer.source + "|" + reNonASCII.source, "g"); function escape3(data) { return data.replace(reEscapeChars, singleCharReplacer); } exports2.escape = escape3; function escapeUTF82(data) { return data.replace(xmlReplacer, singleCharReplacer); } exports2.escapeUTF8 = escapeUTF82; function getASCIIEncoder(obj) { return function(data) { return data.replace(reEscapeChars, function(c) { return obj[c] || singleCharReplacer(c); }); }; } } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/index.js var require_lib12 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/entities/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.decodeXMLStrict = exports2.decodeHTML5Strict = exports2.decodeHTML4Strict = exports2.decodeHTML5 = exports2.decodeHTML4 = exports2.decodeHTMLStrict = exports2.decodeHTML = exports2.decodeXML = exports2.encodeHTML5 = exports2.encodeHTML4 = exports2.escapeUTF8 = exports2.escape = exports2.encodeNonAsciiHTML = exports2.encodeHTML = exports2.encodeXML = exports2.encode = exports2.decodeStrict = exports2.decode = void 0; var decode_1 = require_decode4(); var encode_1 = require_encode2(); function decode(data, level) { return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTML)(data); } exports2.decode = decode; function decodeStrict(data, level) { return (!level || level <= 0 ? decode_1.decodeXML : decode_1.decodeHTMLStrict)(data); } exports2.decodeStrict = decodeStrict; function encode(data, level) { return (!level || level <= 0 ? encode_1.encodeXML : encode_1.encodeHTML)(data); } exports2.encode = encode; var encode_2 = require_encode2(); Object.defineProperty(exports2, "encodeXML", { enumerable: true, get: function() { return encode_2.encodeXML; } }); Object.defineProperty(exports2, "encodeHTML", { enumerable: true, get: function() { return encode_2.encodeHTML; } }); Object.defineProperty(exports2, "encodeNonAsciiHTML", { enumerable: true, get: function() { return encode_2.encodeNonAsciiHTML; } }); Object.defineProperty(exports2, "escape", { enumerable: true, get: function() { return encode_2.escape; } }); Object.defineProperty(exports2, "escapeUTF8", { enumerable: true, get: function() { return encode_2.escapeUTF8; } }); Object.defineProperty(exports2, "encodeHTML4", { enumerable: true, get: function() { return encode_2.encodeHTML; } }); Object.defineProperty(exports2, "encodeHTML5", { enumerable: true, get: function() { return encode_2.encodeHTML; } }); var decode_2 = require_decode4(); Object.defineProperty(exports2, "decodeXML", { enumerable: true, get: function() { return decode_2.decodeXML; } }); Object.defineProperty(exports2, "decodeHTML", { enumerable: true, get: function() { return decode_2.decodeHTML; } }); Object.defineProperty(exports2, "decodeHTMLStrict", { enumerable: true, get: function() { return decode_2.decodeHTMLStrict; } }); Object.defineProperty(exports2, "decodeHTML4", { enumerable: true, get: function() { return decode_2.decodeHTML; } }); Object.defineProperty(exports2, "decodeHTML5", { enumerable: true, get: function() { return decode_2.decodeHTML; } }); Object.defineProperty(exports2, "decodeHTML4Strict", { enumerable: true, get: function() { return decode_2.decodeHTMLStrict; } }); Object.defineProperty(exports2, "decodeHTML5Strict", { enumerable: true, get: function() { return decode_2.decodeHTMLStrict; } }); Object.defineProperty(exports2, "decodeXMLStrict", { enumerable: true, get: function() { return decode_2.decodeXML; } }); } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/foreignNames.js var require_foreignNames2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/foreignNames.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.attributeNames = exports2.elementNames = void 0; exports2.elementNames = /* @__PURE__ */ new Map([ ["altglyph", "altGlyph"], ["altglyphdef", "altGlyphDef"], ["altglyphitem", "altGlyphItem"], ["animatecolor", "animateColor"], ["animatemotion", "animateMotion"], ["animatetransform", "animateTransform"], ["clippath", "clipPath"], ["feblend", "feBlend"], ["fecolormatrix", "feColorMatrix"], ["fecomponenttransfer", "feComponentTransfer"], ["fecomposite", "feComposite"], ["feconvolvematrix", "feConvolveMatrix"], ["fediffuselighting", "feDiffuseLighting"], ["fedisplacementmap", "feDisplacementMap"], ["fedistantlight", "feDistantLight"], ["fedropshadow", "feDropShadow"], ["feflood", "feFlood"], ["fefunca", "feFuncA"], ["fefuncb", "feFuncB"], ["fefuncg", "feFuncG"], ["fefuncr", "feFuncR"], ["fegaussianblur", "feGaussianBlur"], ["feimage", "feImage"], ["femerge", "feMerge"], ["femergenode", "feMergeNode"], ["femorphology", "feMorphology"], ["feoffset", "feOffset"], ["fepointlight", "fePointLight"], ["fespecularlighting", "feSpecularLighting"], ["fespotlight", "feSpotLight"], ["fetile", "feTile"], ["feturbulence", "feTurbulence"], ["foreignobject", "foreignObject"], ["glyphref", "glyphRef"], ["lineargradient", "linearGradient"], ["radialgradient", "radialGradient"], ["textpath", "textPath"] ]); exports2.attributeNames = /* @__PURE__ */ new Map([ ["definitionurl", "definitionURL"], ["attributename", "attributeName"], ["attributetype", "attributeType"], ["basefrequency", "baseFrequency"], ["baseprofile", "baseProfile"], ["calcmode", "calcMode"], ["clippathunits", "clipPathUnits"], ["diffuseconstant", "diffuseConstant"], ["edgemode", "edgeMode"], ["filterunits", "filterUnits"], ["glyphref", "glyphRef"], ["gradienttransform", "gradientTransform"], ["gradientunits", "gradientUnits"], ["kernelmatrix", "kernelMatrix"], ["kernelunitlength", "kernelUnitLength"], ["keypoints", "keyPoints"], ["keysplines", "keySplines"], ["keytimes", "keyTimes"], ["lengthadjust", "lengthAdjust"], ["limitingconeangle", "limitingConeAngle"], ["markerheight", "markerHeight"], ["markerunits", "markerUnits"], ["markerwidth", "markerWidth"], ["maskcontentunits", "maskContentUnits"], ["maskunits", "maskUnits"], ["numoctaves", "numOctaves"], ["pathlength", "pathLength"], ["patterncontentunits", "patternContentUnits"], ["patterntransform", "patternTransform"], ["patternunits", "patternUnits"], ["pointsatx", "pointsAtX"], ["pointsaty", "pointsAtY"], ["pointsatz", "pointsAtZ"], ["preservealpha", "preserveAlpha"], ["preserveaspectratio", "preserveAspectRatio"], ["primitiveunits", "primitiveUnits"], ["refx", "refX"], ["refy", "refY"], ["repeatcount", "repeatCount"], ["repeatdur", "repeatDur"], ["requiredextensions", "requiredExtensions"], ["requiredfeatures", "requiredFeatures"], ["specularconstant", "specularConstant"], ["specularexponent", "specularExponent"], ["spreadmethod", "spreadMethod"], ["startoffset", "startOffset"], ["stddeviation", "stdDeviation"], ["stitchtiles", "stitchTiles"], ["surfacescale", "surfaceScale"], ["systemlanguage", "systemLanguage"], ["tablevalues", "tableValues"], ["targetx", "targetX"], ["targety", "targetY"], ["textlength", "textLength"], ["viewbox", "viewBox"], ["viewtarget", "viewTarget"], ["xchannelselector", "xChannelSelector"], ["ychannelselector", "yChannelSelector"], ["zoomandpan", "zoomAndPan"] ]); } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/index.js var require_lib13 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/node_modules/dom-serializer/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __assign2 = exports2 && exports2.__assign || function() { __assign2 = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign2.apply(this, arguments); }; var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); var ElementType4 = __importStar2(require_lib5()); var entities_1 = require_lib12(); var foreignNames_1 = require_foreignNames2(); var unencodedElements2 = /* @__PURE__ */ new Set([ "style", "script", "xmp", "iframe", "noembed", "noframes", "plaintext", "noscript" ]); function formatAttributes2(attributes, opts) { if (!attributes) return; return Object.keys(attributes).map(function(key) { var _a, _b; var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : ""; if (opts.xmlMode === "foreign") { key = (_b = foreignNames_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key; } if (!opts.emptyAttrs && !opts.xmlMode && value === "") { return key; } return key + '="' + (opts.decodeEntities !== false ? entities_1.encodeXML(value) : value.replace(/"/g, """)) + '"'; }).join(" "); } var singleTag = /* @__PURE__ */ new Set([ "area", "base", "basefont", "br", "col", "command", "embed", "frame", "hr", "img", "input", "isindex", "keygen", "link", "meta", "param", "source", "track", "wbr" ]); function render2(node, options) { if (options === void 0) { options = {}; } var nodes = "length" in node ? node : [node]; var output = ""; for (var i = 0; i < nodes.length; i++) { output += renderNode2(nodes[i], options); } return output; } exports2.default = render2; function renderNode2(node, options) { switch (node.type) { case ElementType4.Root: return render2(node.children, options); case ElementType4.Directive: case ElementType4.Doctype: return renderDirective(node); case ElementType4.Comment: return renderComment(node); case ElementType4.CDATA: return renderCdata(node); case ElementType4.Script: case ElementType4.Style: case ElementType4.Tag: return renderTag2(node, options); case ElementType4.Text: return renderText(node, options); } } var foreignModeIntegrationPoints2 = /* @__PURE__ */ new Set([ "mi", "mo", "mn", "ms", "mtext", "annotation-xml", "foreignObject", "desc", "title" ]); var foreignElements2 = /* @__PURE__ */ new Set(["svg", "math"]); function renderTag2(elem, opts) { var _a; if (opts.xmlMode === "foreign") { elem.name = (_a = foreignNames_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name; if (elem.parent && foreignModeIntegrationPoints2.has(elem.parent.name)) { opts = __assign2(__assign2({}, opts), { xmlMode: false }); } } if (!opts.xmlMode && foreignElements2.has(elem.name)) { opts = __assign2(__assign2({}, opts), { xmlMode: "foreign" }); } var tag = "<" + elem.name; var attribs = formatAttributes2(elem.attribs, opts); if (attribs) { tag += " " + attribs; } if (elem.children.length === 0 && (opts.xmlMode ? ( // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags opts.selfClosingTags !== false ) : ( // User explicitly asked for self-closing tags, even in HTML mode opts.selfClosingTags && singleTag.has(elem.name) ))) { if (!opts.xmlMode) tag += " "; tag += "/>"; } else { tag += ">"; if (elem.children.length > 0) { tag += render2(elem.children, opts); } if (opts.xmlMode || !singleTag.has(elem.name)) { tag += "</" + elem.name + ">"; } } return tag; } function renderDirective(elem) { return "<" + elem.data + ">"; } function renderText(elem, opts) { var data = elem.data || ""; if (opts.decodeEntities !== false && !(!opts.xmlMode && elem.parent && unencodedElements2.has(elem.parent.name))) { data = entities_1.encodeXML(data); } return data; } function renderCdata(elem) { return "<![CDATA[" + elem.children[0].data + "]]>"; } function renderComment(elem) { return "<!--" + elem.data + "-->"; } } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js var require_stringify4 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/stringify.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.innerText = exports2.textContent = exports2.getText = exports2.getInnerHTML = exports2.getOuterHTML = void 0; var domhandler_1 = require_lib11(); var dom_serializer_1 = __importDefault2(require_lib13()); var domelementtype_1 = require_lib5(); function getOuterHTML2(node, options) { return (0, dom_serializer_1.default)(node, options); } exports2.getOuterHTML = getOuterHTML2; function getInnerHTML2(node, options) { return (0, domhandler_1.hasChildren)(node) ? node.children.map(function(node2) { return getOuterHTML2(node2, options); }).join("") : ""; } exports2.getInnerHTML = getInnerHTML2; function getText2(node) { if (Array.isArray(node)) return node.map(getText2).join(""); if ((0, domhandler_1.isTag)(node)) return node.name === "br" ? "\n" : getText2(node.children); if ((0, domhandler_1.isCDATA)(node)) return getText2(node.children); if ((0, domhandler_1.isText)(node)) return node.data; return ""; } exports2.getText = getText2; function textContent2(node) { if (Array.isArray(node)) return node.map(textContent2).join(""); if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) { return textContent2(node.children); } if ((0, domhandler_1.isText)(node)) return node.data; return ""; } exports2.textContent = textContent2; function innerText2(node) { if (Array.isArray(node)) return node.map(innerText2).join(""); if ((0, domhandler_1.hasChildren)(node) && (node.type === domelementtype_1.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) { return innerText2(node.children); } if ((0, domhandler_1.isText)(node)) return node.data; return ""; } exports2.innerText = innerText2; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js var require_traversal2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/traversal.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.prevElementSibling = exports2.nextElementSibling = exports2.getName = exports2.hasAttrib = exports2.getAttributeValue = exports2.getSiblings = exports2.getParent = exports2.getChildren = void 0; var domhandler_1 = require_lib11(); var emptyArray = []; function getChildren2(elem) { var _a; return (_a = elem.children) !== null && _a !== void 0 ? _a : emptyArray; } exports2.getChildren = getChildren2; function getParent2(elem) { return elem.parent || null; } exports2.getParent = getParent2; function getSiblings2(elem) { var _a, _b; var parent = getParent2(elem); if (parent != null) return getChildren2(parent); var siblings = [elem]; var prev = elem.prev, next = elem.next; while (prev != null) { siblings.unshift(prev); _a = prev, prev = _a.prev; } while (next != null) { siblings.push(next); _b = next, next = _b.next; } return siblings; } exports2.getSiblings = getSiblings2; function getAttributeValue2(elem, name) { var _a; return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name]; } exports2.getAttributeValue = getAttributeValue2; function hasAttrib2(elem, name) { return elem.attribs != null && Object.prototype.hasOwnProperty.call(elem.attribs, name) && elem.attribs[name] != null; } exports2.hasAttrib = hasAttrib2; function getName2(elem) { return elem.name; } exports2.getName = getName2; function nextElementSibling2(elem) { var _a; var next = elem.next; while (next !== null && !(0, domhandler_1.isTag)(next)) _a = next, next = _a.next; return next; } exports2.nextElementSibling = nextElementSibling2; function prevElementSibling2(elem) { var _a; var prev = elem.prev; while (prev !== null && !(0, domhandler_1.isTag)(prev)) _a = prev, prev = _a.prev; return prev; } exports2.prevElementSibling = prevElementSibling2; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js var require_manipulation2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/manipulation.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.prepend = exports2.prependChild = exports2.append = exports2.appendChild = exports2.replaceElement = exports2.removeElement = void 0; function removeElement2(elem) { if (elem.prev) elem.prev.next = elem.next; if (elem.next) elem.next.prev = elem.prev; if (elem.parent) { var childs = elem.parent.children; childs.splice(childs.lastIndexOf(elem), 1); } } exports2.removeElement = removeElement2; function replaceElement2(elem, replacement) { var prev = replacement.prev = elem.prev; if (prev) { prev.next = replacement; } var next = replacement.next = elem.next; if (next) { next.prev = replacement; } var parent = replacement.parent = elem.parent; if (parent) { var childs = parent.children; childs[childs.lastIndexOf(elem)] = replacement; } } exports2.replaceElement = replaceElement2; function appendChild2(elem, child) { removeElement2(child); child.next = null; child.parent = elem; if (elem.children.push(child) > 1) { var sibling = elem.children[elem.children.length - 2]; sibling.next = child; child.prev = sibling; } else { child.prev = null; } } exports2.appendChild = appendChild2; function append2(elem, next) { removeElement2(next); var parent = elem.parent; var currNext = elem.next; next.next = currNext; next.prev = elem; elem.next = next; next.parent = parent; if (currNext) { currNext.prev = next; if (parent) { var childs = parent.children; childs.splice(childs.lastIndexOf(currNext), 0, next); } } else if (parent) { parent.children.push(next); } } exports2.append = append2; function prependChild2(elem, child) { removeElement2(child); child.parent = elem; child.prev = null; if (elem.children.unshift(child) !== 1) { var sibling = elem.children[1]; sibling.prev = child; child.next = sibling; } else { child.next = null; } } exports2.prependChild = prependChild2; function prepend2(elem, prev) { removeElement2(prev); var parent = elem.parent; if (parent) { var childs = parent.children; childs.splice(childs.indexOf(elem), 0, prev); } if (elem.prev) { elem.prev.next = prev; } prev.parent = parent; prev.prev = elem.prev; prev.next = elem; elem.prev = prev; } exports2.prepend = prepend2; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/querying.js var require_querying2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/querying.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.findAll = exports2.existsOne = exports2.findOne = exports2.findOneChild = exports2.find = exports2.filter = void 0; var domhandler_1 = require_lib11(); function filter2(test, node, recurse, limit) { if (recurse === void 0) { recurse = true; } if (limit === void 0) { limit = Infinity; } if (!Array.isArray(node)) node = [node]; return find2(test, node, recurse, limit); } exports2.filter = filter2; function find2(test, nodes, recurse, limit) { var result = []; for (var _i = 0, nodes_1 = nodes; _i < nodes_1.length; _i++) { var elem = nodes_1[_i]; if (test(elem)) { result.push(elem); if (--limit <= 0) break; } if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) { var children = find2(test, elem.children, recurse, limit); result.push.apply(result, children); limit -= children.length; if (limit <= 0) break; } } return result; } exports2.find = find2; function findOneChild(test, nodes) { return nodes.find(test); } exports2.findOneChild = findOneChild; function findOne3(test, nodes, recurse) { if (recurse === void 0) { recurse = true; } var elem = null; for (var i = 0; i < nodes.length && !elem; i++) { var checked = nodes[i]; if (!(0, domhandler_1.isTag)(checked)) { continue; } else if (test(checked)) { elem = checked; } else if (recurse && checked.children.length > 0) { elem = findOne3(test, checked.children); } } return elem; } exports2.findOne = findOne3; function existsOne2(test, nodes) { return nodes.some(function(checked) { return (0, domhandler_1.isTag)(checked) && (test(checked) || checked.children.length > 0 && existsOne2(test, checked.children)); }); } exports2.existsOne = existsOne2; function findAll3(test, nodes) { var _a; var result = []; var stack = nodes.filter(domhandler_1.isTag); var elem; while (elem = stack.shift()) { var children = (_a = elem.children) === null || _a === void 0 ? void 0 : _a.filter(domhandler_1.isTag); if (children && children.length > 0) { stack.unshift.apply(stack, children); } if (test(elem)) result.push(elem); } return result; } exports2.findAll = findAll3; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js var require_legacy3 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/legacy.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getElementsByTagType = exports2.getElementsByTagName = exports2.getElementById = exports2.getElements = exports2.testElement = void 0; var domhandler_1 = require_lib11(); var querying_1 = require_querying2(); var Checks2 = { tag_name: function(name) { if (typeof name === "function") { return function(elem) { return (0, domhandler_1.isTag)(elem) && name(elem.name); }; } else if (name === "*") { return domhandler_1.isTag; } return function(elem) { return (0, domhandler_1.isTag)(elem) && elem.name === name; }; }, tag_type: function(type) { if (typeof type === "function") { return function(elem) { return type(elem.type); }; } return function(elem) { return elem.type === type; }; }, tag_contains: function(data) { if (typeof data === "function") { return function(elem) { return (0, domhandler_1.isText)(elem) && data(elem.data); }; } return function(elem) { return (0, domhandler_1.isText)(elem) && elem.data === data; }; } }; function getAttribCheck2(attrib, value) { if (typeof value === "function") { return function(elem) { return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); }; } return function(elem) { return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; }; } function combineFuncs2(a, b) { return function(elem) { return a(elem) || b(elem); }; } function compileTest2(options) { var funcs = Object.keys(options).map(function(key) { var value = options[key]; return Object.prototype.hasOwnProperty.call(Checks2, key) ? Checks2[key](value) : getAttribCheck2(key, value); }); return funcs.length === 0 ? null : funcs.reduce(combineFuncs2); } function testElement2(options, node) { var test = compileTest2(options); return test ? test(node) : true; } exports2.testElement = testElement2; function getElements2(options, nodes, recurse, limit) { if (limit === void 0) { limit = Infinity; } var test = compileTest2(options); return test ? (0, querying_1.filter)(test, nodes, recurse, limit) : []; } exports2.getElements = getElements2; function getElementById2(id, nodes, recurse) { if (recurse === void 0) { recurse = true; } if (!Array.isArray(nodes)) nodes = [nodes]; return (0, querying_1.findOne)(getAttribCheck2("id", id), nodes, recurse); } exports2.getElementById = getElementById2; function getElementsByTagName2(tagName, nodes, recurse, limit) { if (recurse === void 0) { recurse = true; } if (limit === void 0) { limit = Infinity; } return (0, querying_1.filter)(Checks2.tag_name(tagName), nodes, recurse, limit); } exports2.getElementsByTagName = getElementsByTagName2; function getElementsByTagType2(type, nodes, recurse, limit) { if (recurse === void 0) { recurse = true; } if (limit === void 0) { limit = Infinity; } return (0, querying_1.filter)(Checks2.tag_type(type), nodes, recurse, limit); } exports2.getElementsByTagType = getElementsByTagType2; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js var require_helpers2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/helpers.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.uniqueSort = exports2.compareDocumentPosition = exports2.removeSubsets = void 0; var domhandler_1 = require_lib11(); function removeSubsets2(nodes) { var idx = nodes.length; while (--idx >= 0) { var node = nodes[idx]; if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { nodes.splice(idx, 1); continue; } for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) { if (nodes.includes(ancestor)) { nodes.splice(idx, 1); break; } } } return nodes; } exports2.removeSubsets = removeSubsets2; function compareDocumentPosition2(nodeA, nodeB) { var aParents = []; var bParents = []; if (nodeA === nodeB) { return 0; } var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent; while (current) { aParents.unshift(current); current = current.parent; } current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent; while (current) { bParents.unshift(current); current = current.parent; } var maxIdx = Math.min(aParents.length, bParents.length); var idx = 0; while (idx < maxIdx && aParents[idx] === bParents[idx]) { idx++; } if (idx === 0) { return 1; } var sharedParent = aParents[idx - 1]; var siblings = sharedParent.children; var aSibling = aParents[idx]; var bSibling = bParents[idx]; if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { if (sharedParent === nodeB) { return 4 | 16; } return 4; } if (sharedParent === nodeA) { return 2 | 8; } return 2; } exports2.compareDocumentPosition = compareDocumentPosition2; function uniqueSort2(nodes) { nodes = nodes.filter(function(node, i, arr) { return !arr.includes(node, i + 1); }); nodes.sort(function(a, b) { var relative = compareDocumentPosition2(a, b); if (relative & 2) { return -1; } else if (relative & 4) { return 1; } return 0; }); return nodes; } exports2.uniqueSort = uniqueSort2; } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/feeds.js var require_feeds2 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/feeds.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getFeed = void 0; var stringify_1 = require_stringify4(); var legacy_1 = require_legacy3(); function getFeed2(doc) { var feedRoot = getOneElement2(isValidFeed2, doc); return !feedRoot ? null : feedRoot.name === "feed" ? getAtomFeed2(feedRoot) : getRssFeed2(feedRoot); } exports2.getFeed = getFeed2; function getAtomFeed2(feedRoot) { var _a; var childs = feedRoot.children; var feed = { type: "atom", items: (0, legacy_1.getElementsByTagName)("entry", childs).map(function(item) { var _a2; var children = item.children; var entry = { media: getMediaElements2(children) }; addConditionally2(entry, "id", "id", children); addConditionally2(entry, "title", "title", children); var href2 = (_a2 = getOneElement2("link", children)) === null || _a2 === void 0 ? void 0 : _a2.attribs.href; if (href2) { entry.link = href2; } var description = fetch3("summary", children) || fetch3("content", children); if (description) { entry.description = description; } var pubDate = fetch3("updated", children); if (pubDate) { entry.pubDate = new Date(pubDate); } return entry; }) }; addConditionally2(feed, "id", "id", childs); addConditionally2(feed, "title", "title", childs); var href = (_a = getOneElement2("link", childs)) === null || _a === void 0 ? void 0 : _a.attribs.href; if (href) { feed.link = href; } addConditionally2(feed, "description", "subtitle", childs); var updated = fetch3("updated", childs); if (updated) { feed.updated = new Date(updated); } addConditionally2(feed, "author", "email", childs, true); return feed; } function getRssFeed2(feedRoot) { var _a, _b; var childs = (_b = (_a = getOneElement2("channel", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []; var feed = { type: feedRoot.name.substr(0, 3), id: "", items: (0, legacy_1.getElementsByTagName)("item", feedRoot.children).map(function(item) { var children = item.children; var entry = { media: getMediaElements2(children) }; addConditionally2(entry, "id", "guid", children); addConditionally2(entry, "title", "title", children); addConditionally2(entry, "link", "link", children); addConditionally2(entry, "description", "description", children); var pubDate = fetch3("pubDate", children); if (pubDate) entry.pubDate = new Date(pubDate); return entry; }) }; addConditionally2(feed, "title", "title", childs); addConditionally2(feed, "link", "link", childs); addConditionally2(feed, "description", "description", childs); var updated = fetch3("lastBuildDate", childs); if (updated) { feed.updated = new Date(updated); } addConditionally2(feed, "author", "managingEditor", childs, true); return feed; } var MEDIA_KEYS_STRING2 = ["url", "type", "lang"]; var MEDIA_KEYS_INT2 = [ "fileSize", "bitrate", "framerate", "samplingrate", "channels", "duration", "height", "width" ]; function getMediaElements2(where) { return (0, legacy_1.getElementsByTagName)("media:content", where).map(function(elem) { var attribs = elem.attribs; var media = { medium: attribs.medium, isDefault: !!attribs.isDefault }; for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING2; _i < MEDIA_KEYS_STRING_1.length; _i++) { var attrib = MEDIA_KEYS_STRING_1[_i]; if (attribs[attrib]) { media[attrib] = attribs[attrib]; } } for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT2; _a < MEDIA_KEYS_INT_1.length; _a++) { var attrib = MEDIA_KEYS_INT_1[_a]; if (attribs[attrib]) { media[attrib] = parseInt(attribs[attrib], 10); } } if (attribs.expression) { media.expression = attribs.expression; } return media; }); } function getOneElement2(tagName, node) { return (0, legacy_1.getElementsByTagName)(tagName, node, true, 1)[0]; } function fetch3(tagName, where, recurse) { if (recurse === void 0) { recurse = false; } return (0, stringify_1.textContent)((0, legacy_1.getElementsByTagName)(tagName, where, recurse, 1)).trim(); } function addConditionally2(obj, prop, tagName, where, recurse) { if (recurse === void 0) { recurse = false; } var val = fetch3(tagName, where, recurse); if (val) obj[prop] = val; } function isValidFeed2(value) { return value === "rss" || value === "feed" || value === "rdf:RDF"; } } }); // node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/index.js var require_lib14 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/node_modules/domutils/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.hasChildren = exports2.isDocument = exports2.isComment = exports2.isText = exports2.isCDATA = exports2.isTag = void 0; __exportStar2(require_stringify4(), exports2); __exportStar2(require_traversal2(), exports2); __exportStar2(require_manipulation2(), exports2); __exportStar2(require_querying2(), exports2); __exportStar2(require_legacy3(), exports2); __exportStar2(require_helpers2(), exports2); __exportStar2(require_feeds2(), exports2); var domhandler_1 = require_lib11(); Object.defineProperty(exports2, "isTag", { enumerable: true, get: function() { return domhandler_1.isTag; } }); Object.defineProperty(exports2, "isCDATA", { enumerable: true, get: function() { return domhandler_1.isCDATA; } }); Object.defineProperty(exports2, "isText", { enumerable: true, get: function() { return domhandler_1.isText; } }); Object.defineProperty(exports2, "isComment", { enumerable: true, get: function() { return domhandler_1.isComment; } }); Object.defineProperty(exports2, "isDocument", { enumerable: true, get: function() { return domhandler_1.isDocument; } }); Object.defineProperty(exports2, "hasChildren", { enumerable: true, get: function() { return domhandler_1.hasChildren; } }); } }); // node_modules/telegram/node_modules/htmlparser2/lib/FeedHandler.js var require_FeedHandler = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/lib/FeedHandler.js"(exports2) { "use strict"; init_define_import_meta_env(); var __extends2 = exports2 && exports2.__extends || /* @__PURE__ */ (function() { var extendStatics2 = function(d, b) { extendStatics2 = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { d2.__proto__ = b2; } || function(d2, b2) { for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; }; return extendStatics2(d, b); }; return function(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics2(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.parseFeed = exports2.FeedHandler = void 0; var domhandler_1 = __importDefault2(require_lib11()); var DomUtils = __importStar2(require_lib14()); var Parser_1 = require_Parser2(); var FeedItemMediaMedium; (function(FeedItemMediaMedium2) { FeedItemMediaMedium2[FeedItemMediaMedium2["image"] = 0] = "image"; FeedItemMediaMedium2[FeedItemMediaMedium2["audio"] = 1] = "audio"; FeedItemMediaMedium2[FeedItemMediaMedium2["video"] = 2] = "video"; FeedItemMediaMedium2[FeedItemMediaMedium2["document"] = 3] = "document"; FeedItemMediaMedium2[FeedItemMediaMedium2["executable"] = 4] = "executable"; })(FeedItemMediaMedium || (FeedItemMediaMedium = {})); var FeedItemMediaExpression; (function(FeedItemMediaExpression2) { FeedItemMediaExpression2[FeedItemMediaExpression2["sample"] = 0] = "sample"; FeedItemMediaExpression2[FeedItemMediaExpression2["full"] = 1] = "full"; FeedItemMediaExpression2[FeedItemMediaExpression2["nonstop"] = 2] = "nonstop"; })(FeedItemMediaExpression || (FeedItemMediaExpression = {})); var FeedHandler = ( /** @class */ (function(_super) { __extends2(FeedHandler2, _super); function FeedHandler2(callback, options) { var _this = this; if (typeof callback === "object") { callback = void 0; options = callback; } _this = _super.call(this, callback, options) || this; return _this; } FeedHandler2.prototype.onend = function() { var _a, _b; var feedRoot = getOneElement2(isValidFeed2, this.dom); if (!feedRoot) { this.handleCallback(new Error("couldn't find root of feed")); return; } var feed = {}; if (feedRoot.name === "feed") { var childs = feedRoot.children; feed.type = "atom"; addConditionally2(feed, "id", "id", childs); addConditionally2(feed, "title", "title", childs); var href = getAttribute("href", getOneElement2("link", childs)); if (href) { feed.link = href; } addConditionally2(feed, "description", "subtitle", childs); var updated = fetch3("updated", childs); if (updated) { feed.updated = new Date(updated); } addConditionally2(feed, "author", "email", childs, true); feed.items = getElements2("entry", childs).map(function(item) { var entry = {}; var children = item.children; addConditionally2(entry, "id", "id", children); addConditionally2(entry, "title", "title", children); var href2 = getAttribute("href", getOneElement2("link", children)); if (href2) { entry.link = href2; } var description = fetch3("summary", children) || fetch3("content", children); if (description) { entry.description = description; } var pubDate = fetch3("updated", children); if (pubDate) { entry.pubDate = new Date(pubDate); } entry.media = getMediaElements2(children); return entry; }); } else { var childs = (_b = (_a = getOneElement2("channel", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []; feed.type = feedRoot.name.substr(0, 3); feed.id = ""; addConditionally2(feed, "title", "title", childs); addConditionally2(feed, "link", "link", childs); addConditionally2(feed, "description", "description", childs); var updated = fetch3("lastBuildDate", childs); if (updated) { feed.updated = new Date(updated); } addConditionally2(feed, "author", "managingEditor", childs, true); feed.items = getElements2("item", feedRoot.children).map(function(item) { var entry = {}; var children = item.children; addConditionally2(entry, "id", "guid", children); addConditionally2(entry, "title", "title", children); addConditionally2(entry, "link", "link", children); addConditionally2(entry, "description", "description", children); var pubDate = fetch3("pubDate", children); if (pubDate) entry.pubDate = new Date(pubDate); entry.media = getMediaElements2(children); return entry; }); } this.feed = feed; this.handleCallback(null); }; return FeedHandler2; })(domhandler_1.default) ); exports2.FeedHandler = FeedHandler; function getMediaElements2(where) { return getElements2("media:content", where).map(function(elem) { var media = { medium: elem.attribs.medium, isDefault: !!elem.attribs.isDefault }; if (elem.attribs.url) { media.url = elem.attribs.url; } if (elem.attribs.fileSize) { media.fileSize = parseInt(elem.attribs.fileSize, 10); } if (elem.attribs.type) { media.type = elem.attribs.type; } if (elem.attribs.expression) { media.expression = elem.attribs.expression; } if (elem.attribs.bitrate) { media.bitrate = parseInt(elem.attribs.bitrate, 10); } if (elem.attribs.framerate) { media.framerate = parseInt(elem.attribs.framerate, 10); } if (elem.attribs.samplingrate) { media.samplingrate = parseInt(elem.attribs.samplingrate, 10); } if (elem.attribs.channels) { media.channels = parseInt(elem.attribs.channels, 10); } if (elem.attribs.duration) { media.duration = parseInt(elem.attribs.duration, 10); } if (elem.attribs.height) { media.height = parseInt(elem.attribs.height, 10); } if (elem.attribs.width) { media.width = parseInt(elem.attribs.width, 10); } if (elem.attribs.lang) { media.lang = elem.attribs.lang; } return media; }); } function getElements2(tagName, where) { return DomUtils.getElementsByTagName(tagName, where, true); } function getOneElement2(tagName, node) { return DomUtils.getElementsByTagName(tagName, node, true, 1)[0]; } function fetch3(tagName, where, recurse) { if (recurse === void 0) { recurse = false; } return DomUtils.getText(DomUtils.getElementsByTagName(tagName, where, recurse, 1)).trim(); } function getAttribute(name, elem) { if (!elem) { return null; } var attribs = elem.attribs; return attribs[name]; } function addConditionally2(obj, prop, what, where, recurse) { if (recurse === void 0) { recurse = false; } var tmp = fetch3(what, where, recurse); if (tmp) obj[prop] = tmp; } function isValidFeed2(value) { return value === "rss" || value === "feed" || value === "rdf:RDF"; } function parseFeed(feed, options) { if (options === void 0) { options = { xmlMode: true }; } var handler = new FeedHandler(options); new Parser_1.Parser(handler, options).end(feed); return handler.feed; } exports2.parseFeed = parseFeed; } }); // node_modules/telegram/node_modules/htmlparser2/lib/index.js var require_lib15 = __commonJS({ "node_modules/telegram/node_modules/htmlparser2/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.RssHandler = exports2.DefaultHandler = exports2.DomUtils = exports2.ElementType = exports2.Tokenizer = exports2.createDomStream = exports2.parseDOM = exports2.parseDocument = exports2.DomHandler = exports2.Parser = void 0; var Parser_1 = require_Parser2(); Object.defineProperty(exports2, "Parser", { enumerable: true, get: function() { return Parser_1.Parser; } }); var domhandler_1 = require_lib11(); Object.defineProperty(exports2, "DomHandler", { enumerable: true, get: function() { return domhandler_1.DomHandler; } }); Object.defineProperty(exports2, "DefaultHandler", { enumerable: true, get: function() { return domhandler_1.DomHandler; } }); function parseDocument(data, options) { var handler = new domhandler_1.DomHandler(void 0, options); new Parser_1.Parser(handler, options).end(data); return handler.root; } exports2.parseDocument = parseDocument; function parseDOM(data, options) { return parseDocument(data, options).children; } exports2.parseDOM = parseDOM; function createDomStream(cb, options, elementCb) { var handler = new domhandler_1.DomHandler(cb, options, elementCb); return new Parser_1.Parser(handler, options); } exports2.createDomStream = createDomStream; var Tokenizer_1 = require_Tokenizer2(); Object.defineProperty(exports2, "Tokenizer", { enumerable: true, get: function() { return __importDefault2(Tokenizer_1).default; } }); var ElementType4 = __importStar2(require_lib5()); exports2.ElementType = ElementType4; __exportStar2(require_FeedHandler(), exports2); exports2.DomUtils = __importStar2(require_lib14()); var FeedHandler_1 = require_FeedHandler(); Object.defineProperty(exports2, "RssHandler", { enumerable: true, get: function() { return FeedHandler_1.FeedHandler; } }); } }); // node_modules/telegram/extensions/html.js var require_html = __commonJS({ "node_modules/telegram/extensions/html.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.HTMLParser = void 0; var htmlparser2_1 = require_lib15(); var tl_1 = require_tl(); var index_1 = require_telegram(); var HTMLToTelegramParser = class { constructor() { this.text = ""; this.entities = []; this._buildingEntities = /* @__PURE__ */ new Map(); this._openTags = []; this._openTagsMeta = []; } onopentag(name, attributes) { this._openTags.unshift(name); this._openTagsMeta.unshift(void 0); let EntityType; const args = {}; if (name == "strong" || name == "b") { EntityType = tl_1.Api.MessageEntityBold; } else if (name == "spoiler") { EntityType = tl_1.Api.MessageEntitySpoiler; } else if (name == "em" || name == "i") { EntityType = tl_1.Api.MessageEntityItalic; } else if (name == "u") { EntityType = tl_1.Api.MessageEntityUnderline; } else if (name == "del" || name == "s") { EntityType = tl_1.Api.MessageEntityStrike; } else if (name == "blockquote") { EntityType = tl_1.Api.MessageEntityBlockquote; if (attributes.expandable !== void 0) { args.collapsed = true; } } else if (name == "code") { const pre = this._buildingEntities.get("pre"); if (pre && pre instanceof tl_1.Api.MessageEntityPre) { try { pre.language = attributes.class.slice("language-".length, attributes.class.length); } catch (e) { } } else { EntityType = tl_1.Api.MessageEntityCode; } } else if (name == "pre") { EntityType = tl_1.Api.MessageEntityPre; args["language"] = ""; } else if (name == "a") { let url = attributes.href; if (!url) { return; } if (url.startsWith("mailto:")) { url = url.slice("mailto:".length, url.length); EntityType = tl_1.Api.MessageEntityEmail; } else { EntityType = tl_1.Api.MessageEntityTextUrl; args["url"] = url; url = void 0; } this._openTagsMeta.shift(); this._openTagsMeta.unshift(url); } else if (name == "tg-emoji") { EntityType = tl_1.Api.MessageEntityCustomEmoji; args["documentId"] = attributes["emoji-id"]; } if (EntityType && !this._buildingEntities.has(name)) { this._buildingEntities.set(name, new EntityType(Object.assign({ offset: this.text.length, length: 0 }, args))); } } ontext(text) { const previousTag = this._openTags.length > 0 ? this._openTags[0] : ""; if (previousTag == "a") { const url = this._openTagsMeta[0]; if (url) { text = url; } } for (let [tag, entity] of this._buildingEntities) { entity.length += text.length; } this.text += text; } onclosetag(tagname) { this._openTagsMeta.shift(); this._openTags.shift(); const entity = this._buildingEntities.get(tagname); if (entity) { this._buildingEntities.delete(tagname); this.entities.push(entity); } } onattribute(name, value, quote) { } oncdataend() { } oncdatastart() { } oncomment(data) { } oncommentend() { } onend() { } onerror(error) { } onopentagname(name) { } onparserinit(parser) { } onprocessinginstruction(name, data) { } onreset() { } }; var HTMLParser = class { static parse(html) { if (!html) { return [html, []]; } const handler = new HTMLToTelegramParser(); const parser = new htmlparser2_1.Parser(handler); parser.write(html); parser.end(); const text = index_1.helpers.stripText(handler.text, handler.entities); return [text, handler.entities]; } static unparse(text, entities2, _offset = 0, _length) { if (!text || !entities2 || !entities2.length) { return text; } if (_length == void 0) { _length = text.length; } const html = []; let lastOffset = 0; for (let i = 0; i < entities2.length; i++) { const entity = entities2[i]; if (entity.offset >= _offset + _length) { break; } let relativeOffset = entity.offset - _offset; if (relativeOffset > lastOffset) { html.push(text.slice(lastOffset, relativeOffset)); } else if (relativeOffset < lastOffset) { continue; } let skipEntity = false; let length = entity.length; let entityText = this.unparse(text.slice(relativeOffset, relativeOffset + length), entities2.slice(i + 1, entities2.length), entity.offset, length); if (entity instanceof tl_1.Api.MessageEntityBold) { html.push(`<strong>${entityText}</strong>`); } else if (entity instanceof tl_1.Api.MessageEntitySpoiler) { html.push(`<spoiler>${entityText}</spoiler>`); } else if (entity instanceof tl_1.Api.MessageEntityItalic) { html.push(`<em>${entityText}</em>`); } else if (entity instanceof tl_1.Api.MessageEntityCode) { html.push(`<code>${entityText}</code>`); } else if (entity instanceof tl_1.Api.MessageEntityUnderline) { html.push(`<u>${entityText}</u>`); } else if (entity instanceof tl_1.Api.MessageEntityStrike) { html.push(`<del>${entityText}</del>`); } else if (entity instanceof tl_1.Api.MessageEntityBlockquote) { html.push(`<blockquote>${entityText}</blockquote>`); } else if (entity instanceof tl_1.Api.MessageEntityPre) { if (entity.language) { html.push(`<pre><code class="language-${entity.language}">${entityText}</code></pre>`); } else { html.push(`<pre>${entityText}</pre>`); } } else if (entity instanceof tl_1.Api.MessageEntityEmail) { html.push(`<a href="mailto:${entityText}">${entityText}</a>`); } else if (entity instanceof tl_1.Api.MessageEntityUrl) { html.push(`<a href="${entityText}">${entityText}</a>`); } else if (entity instanceof tl_1.Api.MessageEntityTextUrl) { html.push(`<a href="${entity.url}">${entityText}</a>`); } else if (entity instanceof tl_1.Api.MessageEntityMentionName) { html.push(`<a href="tg://user?id=${entity.userId}">${entityText}</a>`); } else if (entity instanceof tl_1.Api.MessageEntityCustomEmoji) { html.push(`<tg-emoji emoji-id="${entity.documentId}">${entityText}</tg-emoji>`); } else { skipEntity = true; } lastOffset = relativeOffset + (skipEntity ? 0 : length); } html.push(text.slice(lastOffset, text.length)); return html.join(""); } }; exports2.HTMLParser = HTMLParser; } }); // node_modules/telegram/client/messageParse.js var require_messageParse = __commonJS({ "node_modules/telegram/client/messageParse.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.DEFAULT_DELIMITERS = void 0; exports2._replaceWithMention = _replaceWithMention; exports2._parseMessageText = _parseMessageText; exports2._getResponseMessage = _getResponseMessage; var Utils_1 = require_Utils(); var api_1 = require_api(); var index_1 = require_telegram(); var Helpers_1 = require_Helpers(); var big_integer_1 = __importDefault2(require_BigInteger()); exports2.DEFAULT_DELIMITERS = { "**": api_1.Api.MessageEntityBold, __: api_1.Api.MessageEntityItalic, "~~": api_1.Api.MessageEntityStrike, "`": api_1.Api.MessageEntityCode, "```": api_1.Api.MessageEntityPre }; async function _replaceWithMention(client2, entities2, i, user) { try { entities2[i] = new api_1.Api.InputMessageEntityMentionName({ offset: entities2[i].offset, length: entities2[i].length, userId: await client2.getInputEntity(user) }); return true; } catch (e) { return false; } } async function _parseMessageText(client2, message, parseMode) { if (parseMode == false) { return [message, []]; } if (parseMode == void 0) { if (client2.parseMode == void 0) { return [message, []]; } parseMode = client2.parseMode; } else if (typeof parseMode === "string") { parseMode = (0, Utils_1.sanitizeParseMode)(parseMode); } const [rawMessage, msgEntities] = parseMode.parse(message); for (let i = msgEntities.length - 1; i >= 0; i--) { const e = msgEntities[i]; if (e instanceof api_1.Api.MessageEntityTextUrl) { const m = /^@|\+|tg:\/\/user\?id=(\d+)/.exec(e.url); if (m) { const userIdOrUsername = m[1] ? Number(m[1]) : e.url; const isMention = await _replaceWithMention(client2, msgEntities, i, userIdOrUsername); if (!isMention) { msgEntities.splice(i, 1); } } } } return [rawMessage, msgEntities]; } function _getResponseMessage(client2, request, result, inputChat) { let updates = []; let entities2 = /* @__PURE__ */ new Map(); if (result instanceof api_1.Api.UpdateShort) { updates = [result.update]; } else if (result instanceof api_1.Api.Updates || result instanceof api_1.Api.UpdatesCombined) { updates = result.updates; for (const x of [...result.users, ...result.chats]) { entities2.set(index_1.utils.getPeerId(x), x); } } else { return; } const randomToId = /* @__PURE__ */ new Map(); const idToMessage = /* @__PURE__ */ new Map(); let schedMessage; for (const update of updates) { if (update instanceof api_1.Api.UpdateMessageID) { randomToId.set(update.randomId.toString(), update.id); } else if (update instanceof api_1.Api.UpdateNewChannelMessage || update instanceof api_1.Api.UpdateNewMessage) { update.message._finishInit(client2, entities2, inputChat); if ("randomId" in request || (0, Helpers_1.isArrayLike)(request)) { idToMessage.set(update.message.id, update.message); } else { return update.message; } } else if (update instanceof api_1.Api.UpdateEditMessage && "peer" in request && (0, Helpers_1._entityType)(request.peer) != Helpers_1._EntityType.CHANNEL) { update.message._finishInit(client2, entities2, inputChat); if ("randomId" in request) { idToMessage.set(update.message.id, update.message); } else if ("id" in request && request.id === update.message.id) { return update.message; } } else if (update instanceof api_1.Api.UpdateEditChannelMessage && "peer" in request && (0, Utils_1.getPeerId)(request.peer) == (0, Utils_1.getPeerId)(update.message.peerId)) { if (request.id == update.message.id) { update.message._finishInit(client2, entities2, inputChat); return update.message; } } else if (update instanceof api_1.Api.UpdateNewScheduledMessage) { update.message._finishInit(client2, entities2, inputChat); schedMessage = update.message; idToMessage.set(update.message.id, update.message); } else if (update instanceof api_1.Api.UpdateMessagePoll) { if (request.media.poll.id == update.pollId) { const m = new api_1.Api.Message({ id: request.id, peerId: index_1.utils.getPeerId(request.peer), media: new api_1.Api.MessageMediaPoll({ poll: update.poll, results: update.results }), message: "", date: 0 }); m._finishInit(client2, entities2, inputChat); return m; } } } if (request == void 0) { return idToMessage; } let randomId; if ((0, Helpers_1.isArrayLike)(request) || typeof request == "number" || big_integer_1.default.isInstance(request)) { randomId = request; } else { randomId = request.randomId; } if (!randomId) { if (schedMessage) { return schedMessage; } client2._log.warn(`No randomId in ${request} to map to. returning undefined for ${result} (Message was empty)`); return void 0; } if (!(0, Helpers_1.isArrayLike)(randomId)) { let msg = idToMessage.get(randomToId.get(randomId.toString())); if (!msg) { client2._log.warn(`Request ${request.className} had missing message mapping ${result.className} (Message was empty)`); } return msg; } const final = []; let warned = false; for (const rnd of randomId) { const tmp = randomToId.get(rnd.toString()); if (!tmp) { warned = true; break; } const tmp2 = idToMessage.get(tmp); if (!tmp2) { warned = true; break; } final.push(tmp2); } if (warned) { client2._log.warn(`Request ${request.className} had missing message mapping ${result.className} (Message was empty)`); } const finalToReturn = []; for (const rnd of randomId) { finalToReturn.push(idToMessage.get(randomToId.get(rnd.toString()))); } return finalToReturn; } } }); // node_modules/telegram/extensions/markdown.js var require_markdown = __commonJS({ "node_modules/telegram/extensions/markdown.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MarkdownParser = void 0; var messageParse_1 = require_messageParse(); var MarkdownParser = class { // TODO maybe there is a better way :shrug: static parse(message) { let i = 0; const keys = {}; for (const k in messageParse_1.DEFAULT_DELIMITERS) { keys[k] = false; } const entities2 = []; const tempEntities = {}; while (i < message.length) { let foundIndex = -1; let foundDelim = void 0; for (const key of Object.keys(messageParse_1.DEFAULT_DELIMITERS)) { const index2 = message.indexOf(key, i); if (index2 > -1 && (foundIndex === -1 || index2 < foundIndex)) { foundIndex = index2; foundDelim = key; } } if (foundIndex === -1 || foundDelim == void 0) { break; } if (!keys[foundDelim]) { tempEntities[foundDelim] = new messageParse_1.DEFAULT_DELIMITERS[foundDelim]({ offset: foundIndex, length: -1, language: "" }); keys[foundDelim] = true; } else { keys[foundDelim] = false; tempEntities[foundDelim].length = foundIndex - tempEntities[foundDelim].offset; entities2.push(tempEntities[foundDelim]); } message = message.toString().replace(foundDelim, ""); i = foundIndex; } return [message, entities2]; } static unparse(text, entities2) { const delimiters = messageParse_1.DEFAULT_DELIMITERS; if (!text || !entities2) { return text; } let insertAt = []; const tempDelimiters = /* @__PURE__ */ new Map(); Object.keys(delimiters).forEach((key) => { tempDelimiters.set(delimiters[key].className, key); }); for (const entity of entities2) { const s = entity.offset; const e = entity.offset + entity.length; const delimiter = tempDelimiters.get(entity.className); if (delimiter) { insertAt.push([s, delimiter]); insertAt.push([e, delimiter]); } } insertAt = insertAt.sort((a, b) => { return a[0] - b[0]; }); while (insertAt.length) { const [at, what] = insertAt.pop(); text = text.slice(0, at) + what + text.slice(at); } return text; } }; exports2.MarkdownParser = MarkdownParser; } }); // node_modules/telegram/extensions/markdownv2.js var require_markdownv2 = __commonJS({ "node_modules/telegram/extensions/markdownv2.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MarkdownV2Parser = void 0; var html_1 = require_html(); var MarkdownV2Parser = class { static parse(message) { message = message.replace(/\*(.*?)\*/g, "<b>$1</b>"); message = message.replace(/__(.*?)__/g, "<u>$1</u>"); message = message.replace(/~(.*?)~/g, "<s>$1</s>"); message = message.replace(/-(.*?)-/g, "<i>$1</i>"); message = message.replace(/```([\s\S]*?)```/g, "<pre>$1</pre>"); message = message.replace(/`(.*?)`/g, "<code>$1</code>"); message = message.replace(/\|\|(.*?)\|\|/g, "<spoiler>$1</spoiler>"); message = message.replace(/(?<!\!)\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2">$1</a>'); message = message.replace(/!\[([^\]]+)\]\(tg:\/\/emoji\?id=(\d+)\)/g, '<tg-emoji emoji-id="$2">$1</tg-emoji>'); return html_1.HTMLParser.parse(message); } static unparse(text, entities2) { text = html_1.HTMLParser.unparse(text, entities2); text = text.replace(/<b>(.*?)<\/b>/g, "*$1*"); text = text.replace(/<u>(.*?)<\/u>/g, "__$1__"); text = text.replace(/<code>(.*?)<\/code>/g, "`$1`"); text = text.replace(/<pre>(.*?)<\/pre>/g, "```$1```"); text = text.replace(/<s>(.*?)<\/s>/g, "~$1~"); text = text.replace(/<i>(.*?)<\/i>/g, "-$1-"); text = text.replace(/<spoiler>(.*?)<\/spoiler>/g, "||$1||"); text = text.replace(/<a href="([^"]+)">([^<]+)<\/a>/g, "[$2]($1)"); text = text.replace(/<tg-emoji emoji-id="(\d+)">([^<]+)<\/tg-emoji>/g, "![$2](tg://emoji?id=$1)"); return text; } }; exports2.MarkdownV2Parser = MarkdownV2Parser; } }); // node_modules/telegram/Utils.js var require_Utils = __commonJS({ "node_modules/telegram/Utils.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.getFileInfo = getFileInfo; exports2.chunks = chunks; exports2.getInputPeer = getInputPeer; exports2._photoSizeByteCount = _photoSizeByteCount; exports2._getEntityPair = _getEntityPair; exports2.getInnerText = getInnerText; exports2.getInputChannel = getInputChannel; exports2.getInputUser = getInputUser; exports2.getInputMessage = getInputMessage; exports2.getInputChatPhoto = getInputChatPhoto; exports2.strippedPhotoToJpg = strippedPhotoToJpg; exports2.getInputPhoto = getInputPhoto; exports2.getInputDocument = getInputDocument; exports2.isAudio = isAudio; exports2.isImage = isImage; exports2.getExtension = getExtension; exports2.getAttributes = getAttributes; exports2.getInputGeo = getInputGeo; exports2.getInputMedia = getInputMedia; exports2.getAppropriatedPartSize = getAppropriatedPartSize; exports2.getPeer = getPeer; exports2.sanitizeParseMode = sanitizeParseMode; exports2.getPeerId = getPeerId; exports2.resolveId = resolveId; exports2.getMessageId = getMessageId; exports2.parsePhone = parsePhone; exports2.parseID = parseID; exports2.resolveInviteLink = resolveInviteLink; exports2.parseUsername = parseUsername; exports2.rtrim = rtrim; exports2.getDisplayName = getDisplayName; var big_integer_1 = __importDefault2(require_BigInteger()); var mime_1 = __importDefault2(require_mime3()); var html_1 = require_html(); var markdown_1 = require_markdown(); var markdownv2_1 = require_markdownv2(); var Helpers_1 = require_Helpers(); var tl_1 = require_tl(); function getFileInfo(fileLocation) { if (!fileLocation || !fileLocation.SUBCLASS_OF_ID) { _raiseCastFail(fileLocation, "InputFileLocation"); } if (fileLocation.SUBCLASS_OF_ID == 354669666) { return { dcId: void 0, location: fileLocation, size: void 0 }; } let location; if (fileLocation instanceof tl_1.Api.Message) { location = fileLocation.media; } if (fileLocation instanceof tl_1.Api.MessageMediaDocument) { location = fileLocation.document; } else if (fileLocation instanceof tl_1.Api.MessageMediaPhoto) { location = fileLocation.photo; } if (location instanceof tl_1.Api.Document) { return { dcId: location.dcId, location: new tl_1.Api.InputDocumentFileLocation({ id: location.id, accessHash: location.accessHash, fileReference: location.fileReference, thumbSize: "" }), size: location.size }; } else if (location instanceof tl_1.Api.Photo) { return { dcId: location.dcId, location: new tl_1.Api.InputPhotoFileLocation({ id: location.id, accessHash: location.accessHash, fileReference: location.fileReference, thumbSize: location.sizes[location.sizes.length - 1].type }), size: (0, big_integer_1.default)(_photoSizeByteCount(location.sizes[location.sizes.length - 1]) || 0) }; } _raiseCastFail(fileLocation, "InputFileLocation"); } function* chunks(arr, size = 100) { for (let i = 0; i < arr.length; i += size) { yield arr.slice(i, i + size); } } var USERNAME_RE = new RegExp("@|(?:https?:\\/\\/)?(?:www\\.)?(?:telegram\\.(?:me|dog)|t\\.me)\\/(@|joinchat\\/)?", "i"); var JPEG_HEADER = Buffer.from("ffd8ffe000104a46494600010100000100010000ffdb004300281c1e231e19282321232d2b28303c64413c37373c7b585d4964918099968f808c8aa0b4e6c3a0aadaad8a8cc8ffcbdaeef5ffffff9bc1fffffffaffe6fdfff8ffdb0043012b2d2d3c353c76414176f8a58ca5f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8f8ffc00011080000000003012200021101031101ffc4001f0000010501010101010100000000000000000102030405060708090a0bffc400b5100002010303020403050504040000017d01020300041105122131410613516107227114328191a1082342b1c11552d1f02433627282090a161718191a25262728292a3435363738393a434445464748494a535455565758595a636465666768696a737475767778797a838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae1e2e3e4e5e6e7e8e9eaf1f2f3f4f5f6f7f8f9faffc4001f0100030101010101010101010000000000000102030405060708090a0bffc400b51100020102040403040705040400010277000102031104052131061241510761711322328108144291a1b1c109233352f0156272d10a162434e125f11718191a262728292a35363738393a434445464748494a535455565758595a636465666768696a737475767778797a82838485868788898a92939495969798999aa2a3a4a5a6a7a8a9aab2b3b4b5b6b7b8b9bac2c3c4c5c6c7c8c9cad2d3d4d5d6d7d8d9dae2e3e4e5e6e7e8e9eaf2f3f4f5f6f7f8f9faffda000c03010002110311003f00", "hex"); var JPEG_FOOTER = Buffer.from("ffd9", "hex"); var TG_JOIN_RE = new RegExp("tg:\\/\\/(join)\\?invite=", "i"); var VALID_USERNAME_RE = new RegExp("^([a-z]((?!__)[\\w\\d]){3,30}[a-z\\d]|gif|vid|pic|bing|wiki|imdb|bold|vote|like|coub)$", "i"); function _raiseCastFail(entity, target) { let toWrite = entity; if (typeof entity === "object" && "className" in entity) { toWrite = entity.className; } throw new Error(`Cannot cast ${toWrite} to any kind of ${target}`); } function getInputPeer(entity, allowSelf = true, checkHash = true) { if (entity.SUBCLASS_OF_ID === void 0) { if (allowSelf && "inputEntity" in entity) { return entity.inputEntity; } else if ("entity" in entity) { return getInputPeer(entity.entity); } else { _raiseCastFail(entity, "InputPeer"); } } if (entity.SUBCLASS_OF_ID === 3374092470) { return entity; } if (entity instanceof tl_1.Api.User) { if (entity.self && allowSelf) { return new tl_1.Api.InputPeerSelf(); } else if (entity.accessHash !== void 0 && !entity.min || !checkHash) { return new tl_1.Api.InputPeerUser({ userId: entity.id, accessHash: entity.accessHash || (0, big_integer_1.default)(0) }); } else { throw new Error("User without accessHash or min cannot be input"); } } if (entity instanceof tl_1.Api.Chat || entity instanceof tl_1.Api.ChatEmpty || entity instanceof tl_1.Api.ChatForbidden) { return new tl_1.Api.InputPeerChat({ chatId: entity.id }); } if (entity instanceof tl_1.Api.Channel) { if (entity.accessHash !== void 0 && !entity.min || !checkHash) { return new tl_1.Api.InputPeerChannel({ channelId: entity.id, accessHash: entity.accessHash || (0, big_integer_1.default)(0) }); } else { throw new TypeError("Channel without accessHash or min info cannot be input"); } } if (entity instanceof tl_1.Api.ChannelForbidden) { return new tl_1.Api.InputPeerChannel({ channelId: entity.id, accessHash: entity.accessHash }); } if (entity instanceof tl_1.Api.InputUser) { return new tl_1.Api.InputPeerUser({ userId: entity.userId, accessHash: entity.accessHash }); } if (entity instanceof tl_1.Api.InputChannel) { return new tl_1.Api.InputPeerChannel({ channelId: entity.channelId, accessHash: entity.accessHash }); } if (entity instanceof tl_1.Api.UserEmpty) { return new tl_1.Api.InputPeerEmpty(); } if (entity instanceof tl_1.Api.UserFull) { return getInputPeer(entity.id); } if (entity instanceof tl_1.Api.ChatFull) { return new tl_1.Api.InputPeerChat({ chatId: entity.id }); } if (entity instanceof tl_1.Api.PeerChat) { return new tl_1.Api.InputPeerChat({ chatId: entity.chatId }); } _raiseCastFail(entity, "InputPeer"); } function _photoSizeByteCount(size) { if (size instanceof tl_1.Api.PhotoSize) { return size.size; } else if (size instanceof tl_1.Api.PhotoStrippedSize) { if (size.bytes.length < 3 || size.bytes[0] != 1) { return size.bytes.length; } return size.bytes.length + 622; } else if (size instanceof tl_1.Api.PhotoCachedSize) { return size.bytes.length; } else if (size instanceof tl_1.Api.PhotoSizeEmpty) { return 0; } else if (size instanceof tl_1.Api.PhotoSizeProgressive) { return size.sizes[size.sizes.length - 1]; } else { return void 0; } } function _getEntityPair(entityId, entities2, cache, getInputPeerFunction = getInputPeer) { const entity = entities2.get(entityId); let inputEntity; try { inputEntity = cache.get(entityId); } catch (e) { try { inputEntity = getInputPeerFunction(inputEntity); } catch (e2) { } } return [entity, inputEntity]; } function getInnerText(text, entities2) { const result = []; entities2.forEach(function(value, key) { const start = value.offset; const end = value.offset + value.length; result.push(text.slice(start, end)); }); return result; } function getInputChannel(entity) { if (typeof entity === "string" || typeof entity == "number" || typeof entity == "bigint" || big_integer_1.default.isInstance(entity)) { _raiseCastFail(entity, "InputChannel"); } if (entity.SUBCLASS_OF_ID === void 0) { _raiseCastFail(entity, "InputChannel"); } if (entity.SUBCLASS_OF_ID === 1089602301) { return entity; } if (entity instanceof tl_1.Api.Channel || entity instanceof tl_1.Api.ChannelForbidden) { return new tl_1.Api.InputChannel({ channelId: entity.id, accessHash: entity.accessHash || big_integer_1.default.zero }); } if (entity instanceof tl_1.Api.InputPeerChannel) { return new tl_1.Api.InputChannel({ channelId: entity.channelId, accessHash: entity.accessHash }); } _raiseCastFail(entity, "InputChannel"); } function getInputUser(entity) { if (typeof entity === "string" || typeof entity == "number" || typeof entity == "bigint" || big_integer_1.default.isInstance(entity)) { _raiseCastFail(entity, "InputUser"); } if (entity.SUBCLASS_OF_ID === void 0) { _raiseCastFail(entity, "InputUser"); } if (entity.SUBCLASS_OF_ID === 3865689926) { return entity; } if (entity instanceof tl_1.Api.User) { if (entity.self) { return new tl_1.Api.InputUserSelf(); } else { return new tl_1.Api.InputUser({ userId: entity.id, accessHash: entity.accessHash || big_integer_1.default.zero }); } } if (entity instanceof tl_1.Api.InputPeerSelf) { return new tl_1.Api.InputUserSelf(); } if (entity instanceof tl_1.Api.UserEmpty || entity instanceof tl_1.Api.InputPeerEmpty) { return new tl_1.Api.InputUserEmpty(); } if (entity instanceof tl_1.Api.UserFull) { return getInputUser(entity); } if (entity instanceof tl_1.Api.InputPeerUser) { return new tl_1.Api.InputUser({ userId: entity.userId, accessHash: entity.accessHash }); } if (entity instanceof tl_1.Api.InputPeerUserFromMessage) { return new tl_1.Api.InputUserFromMessage({ userId: entity.userId, peer: entity.peer, msgId: entity.msgId }); } _raiseCastFail(entity, "InputUser"); } function getInputMessage(message) { if (typeof message === "number") { return new tl_1.Api.InputMessageID({ id: message }); } if (message === void 0 || message.SUBCLASS_OF_ID === void 0) { _raiseCastFail(message, "InputMessage"); } if (message.SUBCLASS_OF_ID === 1421262021) { return message; } else if (message.SUBCLASS_OF_ID === 2030045667) { return new tl_1.Api.InputMessageID({ id: message.id }); } _raiseCastFail(message, "InputMessage"); } function getInputChatPhoto(photo) { if (photo === void 0 || photo.SUBCLASS_OF_ID === void 0) { _raiseCastFail(photo, "InputChatPhoto"); } if (photo.SUBCLASS_OF_ID === 3572182388) { return photo; } else if (photo.SUBCLASS_OF_ID === 3882180383) { return new tl_1.Api.InputChatUploadedPhoto({ file: photo }); } photo = getInputPhoto(photo); if (photo instanceof tl_1.Api.InputPhoto) { return new tl_1.Api.InputChatPhoto({ id: photo }); } else if (photo instanceof tl_1.Api.InputPhotoEmpty) { return new tl_1.Api.InputChatPhotoEmpty(); } _raiseCastFail(photo, "InputChatPhoto"); } function strippedPhotoToJpg(stripped) { if (stripped.length < 3 || stripped[0] !== 1) { return stripped; } const header = Buffer.from(JPEG_HEADER); header[164] = stripped[1]; header[166] = stripped[2]; return Buffer.concat([header, stripped.slice(3), JPEG_FOOTER]); } function getInputPhoto(photo) { if (photo.SUBCLASS_OF_ID === void 0) { _raiseCastFail(photo, "InputPhoto"); } if (photo.SUBCLASS_OF_ID === 2221106144) { return photo; } if (photo instanceof tl_1.Api.Message) { photo = photo.media; } if (photo instanceof tl_1.Api.photos.Photo || photo instanceof tl_1.Api.MessageMediaPhoto) { photo = photo.photo; } if (photo instanceof tl_1.Api.Photo) { return new tl_1.Api.InputPhoto({ id: photo.id, accessHash: photo.accessHash, fileReference: photo.fileReference }); } if (photo instanceof tl_1.Api.PhotoEmpty) { return new tl_1.Api.InputPhotoEmpty(); } if (photo instanceof tl_1.Api.messages.ChatFull) { photo = photo.fullChat; } if (photo instanceof tl_1.Api.ChannelFull) { return getInputPhoto(photo.chatPhoto); } else { if (photo instanceof tl_1.Api.UserFull) { return getInputPhoto(photo.profilePhoto); } else { if (photo instanceof tl_1.Api.Channel || photo instanceof tl_1.Api.Chat || photo instanceof tl_1.Api.User) { return getInputPhoto(photo.photo); } } } if (photo instanceof tl_1.Api.UserEmpty || photo instanceof tl_1.Api.ChatEmpty || photo instanceof tl_1.Api.ChatForbidden || photo instanceof tl_1.Api.ChannelForbidden) { return new tl_1.Api.InputPhotoEmpty(); } _raiseCastFail(photo, "InputPhoto"); } function getInputDocument(document2) { if (document2.SUBCLASS_OF_ID === void 0) { _raiseCastFail(document2, "InputDocument"); } if (document2.SUBCLASS_OF_ID === 4081048424) { return document2; } if (document2 instanceof tl_1.Api.Document) { return new tl_1.Api.InputDocument({ id: document2.id, accessHash: document2.accessHash, fileReference: document2.fileReference }); } if (document2 instanceof tl_1.Api.DocumentEmpty) { return new tl_1.Api.InputDocumentEmpty(); } if (document2 instanceof tl_1.Api.MessageMediaDocument) { return getInputDocument(document2.document); } if (document2 instanceof tl_1.Api.Message) { return getInputDocument(document2.media); } _raiseCastFail(document2, "InputDocument"); } function isAudio(file) { const ext = _getExtension(file); if (!ext) { const metadata = _getMetadata(file); return (metadata.get("mimeType") || "").startsWith("audio/"); } else { file = "a" + ext; return (mime_1.default.getType(file) || "").startsWith("audio/"); } } function isImage(file) { const ext = _getExtension(file).toLowerCase(); return ext.endsWith(".png") || ext.endsWith(".jpg") || ext.endsWith(".jpeg"); } function getExtension(media) { try { getInputPhoto(media); return ".jpg"; } catch (e) { } if (media instanceof tl_1.Api.UserProfilePhoto || media instanceof tl_1.Api.ChatPhoto) { return ".jpg"; } if (media instanceof tl_1.Api.MessageMediaDocument) { media = media.document; } if (media instanceof tl_1.Api.Document || media instanceof tl_1.Api.WebDocument || media instanceof tl_1.Api.WebDocumentNoProxy) { if (media.mimeType === "application/octet-stream") { return ""; } else { return mime_1.default.getExtension(media.mimeType) || ""; } } return ""; } function _getExtension(file) { if (typeof file === "string") { return "." + file.split(".").pop(); } else if ("name" in file) { return _getExtension(file.name); } else { return getExtension(file); } } function _getMetadata(file) { return /* @__PURE__ */ new Map(); } function isVideo(file) { var _a; const ext = _getExtension(file); if (!ext) { const metadata = _getMetadata(file); if (metadata.has("mimeType")) { return ((_a = metadata.get("mimeType")) === null || _a === void 0 ? void 0 : _a.startsWith("video/")) || false; } else { return false; } } else { file = "a" + ext; return (mime_1.default.getType(file) || "").startsWith("video/"); } } function getAttributes(file, { attributes = null, mimeType = void 0, forceDocument = false, voiceNote = false, videoNote = false, supportsStreaming = false, thumb = null }) { var _a, _b, _c, _d; const name = typeof file == "string" ? file : "name" in file ? file.name || "unnamed" : "unnamed"; if (mimeType === void 0) { mimeType = mime_1.default.getType(name) || "application/octet-stream"; } const attrObj = /* @__PURE__ */ new Map(); attrObj.set(tl_1.Api.DocumentAttributeFilename, new tl_1.Api.DocumentAttributeFilename({ fileName: name.split(/[\\/]/).pop() || "" })); if (isAudio(file)) { const m = _getMetadata(file); attrObj.set(tl_1.Api.DocumentAttributeAudio, new tl_1.Api.DocumentAttributeAudio({ voice: voiceNote, title: m.has("title") ? m.get("title") : void 0, performer: m.has("author") ? m.get("author") : void 0, duration: Number.parseInt((_a = m.get("duration")) !== null && _a !== void 0 ? _a : "0") })); } if (!forceDocument && isVideo(file)) { let doc; if (thumb) { const t_m = _getMetadata(thumb); const width = Number.parseInt((t_m === null || t_m === void 0 ? void 0 : t_m.get("width")) || "1"); const height = Number.parseInt((t_m === null || t_m === void 0 ? void 0 : t_m.get("height")) || "1"); doc = new tl_1.Api.DocumentAttributeVideo({ duration: 0, h: height, w: width, roundMessage: videoNote, supportsStreaming }); } else { const m = _getMetadata(file); doc = new tl_1.Api.DocumentAttributeVideo({ roundMessage: videoNote, w: Number.parseInt((_b = m.get("width")) !== null && _b !== void 0 ? _b : "1"), h: Number.parseInt((_c = m.get("height")) !== null && _c !== void 0 ? _c : "1"), duration: Number.parseInt((_d = m.get("duration")) !== null && _d !== void 0 ? _d : "0"), supportsStreaming }); } attrObj.set(tl_1.Api.DocumentAttributeVideo, doc); } if (videoNote) { if (attrObj.has(tl_1.Api.DocumentAttributeAudio)) { attrObj.get(tl_1.Api.DocumentAttributeAudio).voice = true; } else { attrObj.set(tl_1.Api.DocumentAttributeAudio, new tl_1.Api.DocumentAttributeAudio({ duration: 0, voice: true })); } } if (attributes) { for (const a of attributes) { attrObj.set(a.constructor, a); } } return { attrs: Array.from(attrObj.values()), mimeType }; } function getInputGeo(geo) { if (geo === void 0 || geo.SUBCLASS_OF_ID === void 0) { _raiseCastFail(geo, "InputGeoPoint"); } if (geo.SUBCLASS_OF_ID === 70308389) { return geo; } if (geo instanceof tl_1.Api.GeoPoint) { return new tl_1.Api.InputGeoPoint({ lat: geo.lat, long: geo.long }); } if (geo instanceof tl_1.Api.GeoPointEmpty) { return new tl_1.Api.InputGeoPointEmpty(); } if (geo instanceof tl_1.Api.MessageMediaGeo) { return getInputGeo(geo.geo); } if (geo instanceof tl_1.Api.Message) { return getInputGeo(geo.media); } _raiseCastFail(geo, "InputGeoPoint"); } function getInputMedia(media, { isPhoto = false, attributes = void 0, forceDocument = false, voiceNote = false, videoNote = false, supportsStreaming = false } = {}) { if (media.SUBCLASS_OF_ID === void 0) { _raiseCastFail(media, "InputMedia"); } if (media.SUBCLASS_OF_ID === 4210575092) { return media; } else { if (media.SUBCLASS_OF_ID === 2221106144) { return new tl_1.Api.InputMediaPhoto({ id: media }); } else { if (media.SUBCLASS_OF_ID === 4081048424) { return new tl_1.Api.InputMediaDocument({ id: media }); } } } if (media instanceof tl_1.Api.MessageMediaPhoto) { return new tl_1.Api.InputMediaPhoto({ id: getInputPhoto(media.photo), ttlSeconds: media.ttlSeconds }); } if (media instanceof tl_1.Api.Photo || media instanceof tl_1.Api.photos.Photo || media instanceof tl_1.Api.PhotoEmpty) { return new tl_1.Api.InputMediaPhoto({ id: getInputPhoto(media) }); } if (media instanceof tl_1.Api.MessageMediaDocument) { return new tl_1.Api.InputMediaDocument({ id: getInputDocument(media.document), ttlSeconds: media.ttlSeconds }); } if (media instanceof tl_1.Api.Document || media instanceof tl_1.Api.DocumentEmpty) { return new tl_1.Api.InputMediaDocument({ id: getInputDocument(media) }); } if (media instanceof tl_1.Api.InputFile || media instanceof tl_1.Api.InputFileBig) { if (isPhoto) { return new tl_1.Api.InputMediaUploadedPhoto({ file: media }); } else { const { attrs, mimeType } = getAttributes(media, { attributes, forceDocument, voiceNote, videoNote, supportsStreaming }); return new tl_1.Api.InputMediaUploadedDocument({ file: media, mimeType, attributes: attrs, forceFile: forceDocument }); } } if (media instanceof tl_1.Api.MessageMediaGame) { return new tl_1.Api.InputMediaGame({ id: new tl_1.Api.InputGameID({ id: media.game.id, accessHash: media.game.accessHash }) }); } if (media instanceof tl_1.Api.MessageMediaContact) { return new tl_1.Api.InputMediaContact({ phoneNumber: media.phoneNumber, firstName: media.firstName, lastName: media.lastName, vcard: "" }); } if (media instanceof tl_1.Api.MessageMediaGeo) { return new tl_1.Api.InputMediaGeoPoint({ geoPoint: getInputGeo(media.geo) }); } if (media instanceof tl_1.Api.MessageMediaVenue) { return new tl_1.Api.InputMediaVenue({ geoPoint: getInputGeo(media.geo), title: media.title, address: media.address, provider: media.provider, venueId: media.venueId, venueType: "" }); } if (media instanceof tl_1.Api.MessageMediaDice) { return new tl_1.Api.InputMediaDice({ emoticon: media.emoticon }); } if (media instanceof tl_1.Api.MessageMediaEmpty || media instanceof tl_1.Api.MessageMediaUnsupported || media instanceof tl_1.Api.ChatPhotoEmpty || media instanceof tl_1.Api.UserProfilePhotoEmpty || media instanceof tl_1.Api.ChatPhoto || media instanceof tl_1.Api.UserProfilePhoto) { return new tl_1.Api.InputMediaEmpty(); } if (media instanceof tl_1.Api.Message) { return getInputMedia(media.media, { isPhoto }); } if (media instanceof tl_1.Api.MessageMediaPoll) { let correctAnswers; if (media.poll.quiz) { if (!media.results.results) { throw new Error("Cannot cast unanswered quiz to any kind of InputMedia."); } correctAnswers = []; for (const r of media.results.results) { if (r.correct) { correctAnswers.push(r.option); } } } else { correctAnswers = void 0; } return new tl_1.Api.InputMediaPoll({ poll: media.poll, correctAnswers, solution: media.results.solution, solutionEntities: media.results.solutionEntities }); } if (media instanceof tl_1.Api.Poll) { return new tl_1.Api.InputMediaPoll({ poll: media }); } _raiseCastFail(media, "InputMedia"); } function getAppropriatedPartSize(fileSize) { if (fileSize.lesser(104857600)) { return 128; } if (fileSize.lesser(786432e3)) { return 256; } return 512; } function getPeer(peer) { if (!peer) { _raiseCastFail(peer, "undefined"); } if (typeof peer === "string") { _raiseCastFail(peer, "peer"); } if (typeof peer == "number" || typeof peer == "bigint") { peer = (0, Helpers_1.returnBigInt)(peer); } try { if (big_integer_1.default.isInstance(peer)) { const res = resolveId(peer); if (res[1] === tl_1.Api.PeerChannel) { return new tl_1.Api.PeerChannel({ channelId: res[0] }); } else if (res[1] === tl_1.Api.PeerChat) { return new tl_1.Api.PeerChat({ chatId: res[0] }); } else { return new tl_1.Api.PeerUser({ userId: res[0] }); } } if (peer.SUBCLASS_OF_ID === void 0) { throw new Error(); } if (peer.SUBCLASS_OF_ID === 47470215) { return peer; } else if (peer instanceof tl_1.Api.contacts.ResolvedPeer || peer instanceof tl_1.Api.InputNotifyPeer || peer instanceof tl_1.Api.TopPeer || peer instanceof tl_1.Api.Dialog || peer instanceof tl_1.Api.DialogPeer) { return peer.peer; } else if (peer instanceof tl_1.Api.ChannelFull) { return new tl_1.Api.PeerChannel({ channelId: peer.id }); } if (peer.SUBCLASS_OF_ID === 2105307014 || peer.SUBCLASS_OF_ID === 3653762072) { if ("userId" in peer) { return new tl_1.Api.PeerUser({ userId: peer.userId }); } } peer = getInputPeer(peer, false, false); if (peer instanceof tl_1.Api.InputPeerUser) { return new tl_1.Api.PeerUser({ userId: peer.userId }); } else if (peer instanceof tl_1.Api.InputPeerChat) { return new tl_1.Api.PeerChat({ chatId: peer.chatId }); } else if (peer instanceof tl_1.Api.InputPeerChannel) { return new tl_1.Api.PeerChannel({ channelId: peer.channelId }); } } catch (e) { } _raiseCastFail(peer, "peer"); } function sanitizeParseMode(mode) { if (mode === "md" || mode === "markdown") { return markdown_1.MarkdownParser; } if (mode === "md2" || mode === "markdownv2") { return markdownv2_1.MarkdownV2Parser; } if (mode == "html") { return html_1.HTMLParser; } if (typeof mode == "object") { if ("parse" in mode && "unparse" in mode) { return mode; } } throw new Error(`Invalid parse mode type ${mode}`); } function getPeerId(peer, addMark = true) { if (typeof peer == "string" && parseID(peer)) { peer = (0, Helpers_1.returnBigInt)(peer); } if (big_integer_1.default.isInstance(peer)) { return addMark ? peer.toString() : resolveId(peer)[0].toString(); } if (peer instanceof tl_1.Api.InputPeerSelf) { _raiseCastFail(peer, "int (you might want to use client.get_peer_id)"); } try { peer = getPeer(peer); } catch (e) { _raiseCastFail(peer, "int"); } if (peer instanceof tl_1.Api.PeerUser) { return peer.userId.toString(); } else if (peer instanceof tl_1.Api.PeerChat) { peer.chatId = resolveId((0, Helpers_1.returnBigInt)(peer.chatId))[0]; return addMark ? peer.chatId.negate().toString() : peer.chatId.toString(); } else if (typeof peer == "object" && "channelId" in peer) { peer.channelId = resolveId((0, Helpers_1.returnBigInt)(peer.channelId))[0]; if (!addMark) { return peer.channelId.toString(); } return "-100" + peer.channelId.toString(); } _raiseCastFail(peer, "int"); } function resolveId(markedId) { if (markedId.greaterOrEquals(big_integer_1.default.zero)) { return [markedId, tl_1.Api.PeerUser]; } const m = markedId.toString().match(/-100([^0]\d*)/); if (m) { return [(0, big_integer_1.default)(m[1]), tl_1.Api.PeerChannel]; } return [markedId.negate(), tl_1.Api.PeerChat]; } function getMessageId(message) { if (!message) { return void 0; } else if (typeof message === "number") { return message; } else if (message.SUBCLASS_OF_ID === 2030045667 || "id" in message) { return message.id; } else { throw new Error(`Invalid message type: ${message.constructor.name}`); } } function parsePhone(phone) { phone = phone.toString().replace(/[()\s-]/gm, ""); if (phone.startsWith("+") && phone.split("+").length - 1 == 1) { return !isNaN(Number(phone)) ? phone.replace("+", "") : void 0; } } function parseID(id) { const isValid = /^(-?[0-9][0-9]*)$/.test(id); return isValid ? (0, big_integer_1.default)(id) : void 0; } function resolveInviteLink(link) { throw new Error("not implemented"); } function parseUsername(username) { username = username.trim(); const m = username.match(USERNAME_RE) || username.match(TG_JOIN_RE); if (m) { username = username.replace(m[0], ""); if (m[1]) { return { username, isInvite: true }; } else { username = rtrim(username, "/"); } } if (username.match(VALID_USERNAME_RE)) { return { username: username.toLowerCase(), isInvite: false }; } else { return { username: void 0, isInvite: false }; } } function rtrim(s, mask) { while (~mask.indexOf(s[s.length - 1])) { s = s.slice(0, -1); } return s; } function getDisplayName(entity) { if (entity instanceof tl_1.Api.User) { if (entity.lastName && entity.firstName) { return `${entity.firstName} ${entity.lastName}`; } else if (entity.firstName) { return entity.firstName; } else if (entity.lastName) { return entity.lastName; } else { return ""; } } else if (entity instanceof tl_1.Api.Chat || entity instanceof tl_1.Api.Channel) { return entity.title; } return ""; } } }); // node_modules/telegram/tl/custom/forward.js var require_forward = __commonJS({ "node_modules/telegram/tl/custom/forward.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Forward = void 0; var chatGetter_1 = require_chatGetter(); var senderGetter_1 = require_senderGetter(); var Helpers_1 = require_Helpers(); var Utils_1 = require_Utils(); var inspect_1 = require_inspect(); var Forward = class extends senderGetter_1.SenderGetter { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(client2, original, entities2) { super(); this.originalFwd = original; let senderId = void 0; let sender = void 0; let inputSender = void 0; let peer = void 0; let chat = void 0; let inputChat = void 0; if (original.fromId) { const ty = (0, Helpers_1._entityType)(original.fromId); if (ty === Helpers_1._EntityType.USER) { senderId = (0, Utils_1.getPeerId)(original.fromId); [sender, inputSender] = (0, Utils_1._getEntityPair)(senderId, entities2, client2._entityCache); } else if (ty === Helpers_1._EntityType.CHANNEL || ty === Helpers_1._EntityType.CHAT) { peer = original.fromId; [chat, inputChat] = (0, Utils_1._getEntityPair)((0, Utils_1.getPeerId)(peer), entities2, client2._entityCache); } } chatGetter_1.ChatGetter.initChatClass(this, { chatPeer: peer, chat, inputChat }); senderGetter_1.SenderGetter.initSenderClass(this, { senderId: senderId ? (0, Helpers_1.returnBigInt)(senderId) : void 0, sender, inputSender }); this._client = client2; } }; exports2.Forward = Forward; } }); // node_modules/telegram/tl/custom/file.js var require_file = __commonJS({ "node_modules/telegram/tl/custom/file.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.File = void 0; var api_1 = require_api(); var Utils_1 = require_Utils(); var Helpers_1 = require_Helpers(); var inspect_1 = require_inspect(); var File2 = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(media) { this.media = media; } get id() { throw new Error("Unsupported"); } get name() { return this._fromAttr(api_1.Api.DocumentAttributeFilename, "fileName"); } get mimeType() { if (this.media instanceof api_1.Api.Photo) { return "image/jpeg"; } else if (this.media instanceof api_1.Api.Document) { return this.media.mimeType; } } get width() { return this._fromAttr([api_1.Api.DocumentAttributeImageSize, api_1.Api.DocumentAttributeVideo], "w"); } get height() { return this._fromAttr([api_1.Api.DocumentAttributeImageSize, api_1.Api.DocumentAttributeVideo], "h"); } get duration() { return this._fromAttr([api_1.Api.DocumentAttributeAudio, api_1.Api.DocumentAttributeVideo], "duration"); } get title() { return this._fromAttr(api_1.Api.DocumentAttributeAudio, "title"); } get performer() { return this._fromAttr(api_1.Api.DocumentAttributeAudio, "performer"); } get emoji() { return this._fromAttr(api_1.Api.DocumentAttributeSticker, "alt"); } get stickerSet() { return this._fromAttr(api_1.Api.DocumentAttributeSticker, "stickerset"); } get size() { if (this.media instanceof api_1.Api.Photo) { return (0, Utils_1._photoSizeByteCount)(this.media.sizes[this.media.sizes.length - 1]); } else if (this.media instanceof api_1.Api.Document) { return this.media.size; } } _fromAttr(cls, field) { if (this.media instanceof api_1.Api.Document) { for (const attr of this.media.attributes) { if (attr instanceof cls) { return attr[field]; } } } } }; exports2.File = File2; } }); // node_modules/telegram/extensions/Logger.js var require_Logger = __commonJS({ "node_modules/telegram/extensions/Logger.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Logger = exports2.LogLevel = void 0; var platform_1 = require_platform(); var LogLevel; (function(LogLevel2) { LogLevel2["NONE"] = "none"; LogLevel2["ERROR"] = "error"; LogLevel2["WARN"] = "warn"; LogLevel2["INFO"] = "info"; LogLevel2["DEBUG"] = "debug"; })(LogLevel || (exports2.LogLevel = LogLevel = {})); var Logger = class { constructor(level) { this.levels = ["error", "warn", "info", "debug"]; this._logLevel = level || LogLevel.INFO; this.isBrowser = !platform_1.isNode; if (!this.isBrowser) { this.colors = { start: "\x1B[2m", warn: "\x1B[35m", info: "\x1B[33m", debug: "\x1B[36m", error: "\x1B[31m", end: "\x1B[0m" }; } else { this.colors = { start: "%c", warn: "color : #ff00ff", info: "color : #ffff00", debug: "color : #00ffff", error: "color : #ff0000", end: "" }; } this.messageFormat = "[%t] [%l] - [%m]"; this.tzOffset = (/* @__PURE__ */ new Date()).getTimezoneOffset() * 6e4; } /** * * @param level {string} * @returns {boolean} */ canSend(level) { return this._logLevel ? this.levels.indexOf(this._logLevel) >= this.levels.indexOf(level) : false; } /** * @param message {string} */ warn(message) { this._log(LogLevel.WARN, message, this.colors.warn); } /** * @param message {string} */ info(message) { this._log(LogLevel.INFO, message, this.colors.info); } /** * @param message {string} */ debug(message) { this._log(LogLevel.DEBUG, message, this.colors.debug); } /** * @param message {string} */ error(message) { this._log(LogLevel.ERROR, message, this.colors.error); } format(message, level) { return this.messageFormat.replace("%t", this.getDateTime()).replace("%l", level.toUpperCase()).replace("%m", message); } get logLevel() { return this._logLevel; } setLevel(level) { this._logLevel = level; } static setLevel(level) { console.log("Logger.setLevel is deprecated, it will has no effect. Please, use client.setLogLevel instead."); } /** * @param level {string} * @param message {string} * @param color {string} */ _log(level, message, color) { if (this.canSend(level)) { this.log(level, message, color); } else { return; } } /** * Override this function for custom Logger. <br /> * * @remarks use `this.isBrowser` to check and handle for different environment. * @param level {string} * @param message {string} * @param color {string} */ log(level, message, color) { if (!this.isBrowser) { console.log(color + this.format(message, level) + this.colors.end); } else { console.log(this.colors.start + this.format(message, level), color); } } getDateTime() { return new Date(Date.now() - this.tzOffset).toISOString().slice(0, -1); } }; exports2.Logger = Logger; } }); // node_modules/telegram/extensions/Deferred.js var require_Deferred = __commonJS({ "node_modules/telegram/extensions/Deferred.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); var Deferred = class _Deferred { constructor() { this.promise = new Promise((resolve, reject) => { this.reject = reject; this.resolve = resolve; }); } static resolved(value) { const deferred = new _Deferred(); deferred.resolve(value); return deferred; } }; exports2.default = Deferred; } }); // node_modules/telegram/network/RequestState.js var require_RequestState = __commonJS({ "node_modules/telegram/network/RequestState.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.RequestState = void 0; var Deferred_1 = __importDefault2(require_Deferred()); var RequestState = class { constructor(request) { this.containerId = void 0; this.msgId = void 0; this.request = request; this.data = request.getBytes(); this.after = void 0; this.result = void 0; this.finished = new Deferred_1.default(); this.resetPromise(); } isReady() { if (!this.after) { return true; } return this.after.finished.promise; } resetPromise() { var _a; (_a = this.reject) === null || _a === void 0 ? void 0 : _a.call(this); this.promise = new Promise((resolve, reject) => { this.resolve = resolve; this.reject = reject; }); } }; exports2.RequestState = RequestState; } }); // node_modules/telegram/client/users.js var require_users = __commonJS({ "node_modules/telegram/client/users.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.invoke = invoke; exports2.getMe = getMe; exports2.isBot = isBot; exports2.isUserAuthorized = isUserAuthorized; exports2.getEntity = getEntity; exports2.getInputEntity = getInputEntity; exports2._getEntityFromString = _getEntityFromString; exports2.getPeerId = getPeerId; exports2._getPeer = _getPeer; exports2._getInputDialog = _getInputDialog; exports2._getInputNotify = _getInputNotify; exports2._selfId = _selfId; var tl_1 = require_tl(); var Utils_1 = require_Utils(); var Helpers_1 = require_Helpers(); var __1 = require_telegram(); var big_integer_1 = __importDefault2(require_BigInteger()); var Logger_1 = require_Logger(); var RequestState_1 = require_RequestState(); async function invoke(client2, request, dcId, otherSender) { if (request.classType !== "request") { throw new Error("You can only invoke MTProtoRequests"); } let sender = client2._sender; if (dcId) { sender = await client2.getSender(dcId); } if (otherSender != void 0) { sender = otherSender; } if (sender == void 0) { throw new Error("Cannot send requests while disconnected. You need to call .connect()"); } if (sender.userDisconnected) { throw new Error("Cannot send requests while disconnected. Please reconnect."); } await client2._connectedDeferred.promise; await request.resolve(client2, __1.utils); client2._lastRequest = (/* @__PURE__ */ new Date()).getTime(); const state2 = new RequestState_1.RequestState(request); let attempt = 0; for (attempt = 0; attempt < client2._requestRetries; attempt++) { sender.addStateToQueue(state2); try { const result = await state2.promise; state2.finished.resolve(); client2.session.processEntities(result); client2._entityCache.add(result); return result; } catch (e) { if (e instanceof __1.errors.ServerError || e.errorMessage === "RPC_CALL_FAIL" || e.errorMessage === "RPC_MCGET_FAIL") { client2._log.warn(`Telegram is having internal issues ${e.constructor.name}`); await (0, Helpers_1.sleep)(2e3); } else if (e instanceof __1.errors.FloodWaitError || e instanceof __1.errors.FloodTestPhoneWaitError) { if (e.seconds <= client2.floodSleepThreshold) { client2._log.info(`Sleeping for ${e.seconds}s on flood wait (Caused by ${request.className})`); await (0, Helpers_1.sleep)(e.seconds * 1e3); } else { state2.finished.resolve(); throw e; } } else if (e instanceof __1.errors.PhoneMigrateError || e instanceof __1.errors.NetworkMigrateError || e instanceof __1.errors.UserMigrateError) { client2._log.info(`Phone migrated to ${e.newDc}`); const shouldRaise = e instanceof __1.errors.PhoneMigrateError || e instanceof __1.errors.NetworkMigrateError; if (shouldRaise && await client2.isUserAuthorized()) { state2.finished.resolve(); throw e; } await client2._switchDC(e.newDc); sender = dcId === void 0 ? client2._sender : await client2.getSender(dcId); } else if (e instanceof __1.errors.MsgWaitError) { await state2.isReady(); state2.after = void 0; } else if (e.message === "CONNECTION_NOT_INITED") { await client2.disconnect(); await (0, Helpers_1.sleep)(2e3); await client2.connect(); } else { state2.finished.resolve(); throw e; } } state2.resetPromise(); } throw new Error(`Request was unsuccessful ${attempt} time(s)`); } async function getMe(client2, inputPeer) { if (inputPeer && client2._selfInputPeer) { return client2._selfInputPeer; } const me = (await client2.invoke(new tl_1.Api.users.GetUsers({ id: [new tl_1.Api.InputUserSelf()] })))[0]; client2._bot = me.bot; if (!client2._selfInputPeer) { client2._selfInputPeer = __1.utils.getInputPeer(me, false); } return inputPeer ? client2._selfInputPeer : me; } async function isBot(client2) { if (client2._bot === void 0) { const me = await client2.getMe(); if (me) { return !(me instanceof tl_1.Api.InputPeerUser) ? me.bot : void 0; } } return client2._bot; } async function isUserAuthorized(client2) { try { await client2.invoke(new tl_1.Api.updates.GetState()); return true; } catch (e) { return false; } } async function getEntity(client2, entity) { const single = !(0, Helpers_1.isArrayLike)(entity); let entityArray = []; if ((0, Helpers_1.isArrayLike)(entity)) { entityArray = entity; } else { entityArray.push(entity); } const inputs = []; for (const x of entityArray) { if (typeof x === "string") { const valid = (0, Utils_1.parseID)(x); if (valid) { inputs.push(await client2.getInputEntity(valid)); } else { inputs.push(x); } } else { inputs.push(await client2.getInputEntity(x)); } } const lists = /* @__PURE__ */ new Map([ [Helpers_1._EntityType.USER, []], [Helpers_1._EntityType.CHAT, []], [Helpers_1._EntityType.CHANNEL, []] ]); for (const x of inputs) { try { lists.get((0, Helpers_1._entityType)(x)).push(x); } catch (e) { } } let users = lists.get(Helpers_1._EntityType.USER); let chats = lists.get(Helpers_1._EntityType.CHAT); let channels = lists.get(Helpers_1._EntityType.CHANNEL); if (users.length) { users = await client2.invoke(new tl_1.Api.users.GetUsers({ id: users })); } if (chats.length) { const chatIds = chats.map((x) => x.chatId); chats = (await client2.invoke(new tl_1.Api.messages.GetChats({ id: chatIds }))).chats; } if (channels.length) { channels = (await client2.invoke(new tl_1.Api.channels.GetChannels({ id: channels }))).chats; } const idEntity = /* @__PURE__ */ new Map(); for (const user of users) { idEntity.set((0, Utils_1.getPeerId)(user), user); } for (const channel of channels) { idEntity.set((0, Utils_1.getPeerId)(channel), channel); } for (const chat of chats) { idEntity.set((0, Utils_1.getPeerId)(chat), chat); } const result = []; for (const x of inputs) { if (typeof x === "string") { result.push(await _getEntityFromString(client2, x)); } else if (!(x instanceof tl_1.Api.InputPeerSelf)) { result.push(idEntity.get((0, Utils_1.getPeerId)(x))); } else { for (const [key, u] of idEntity.entries()) { if (u instanceof tl_1.Api.User && u.self) { result.push(u); break; } } } } return single ? result[0] : result; } async function getInputEntity(client2, peer) { try { return __1.utils.getInputPeer(peer); } catch (e) { } try { if (typeof peer == "string") { const valid = (0, Utils_1.parseID)(peer); if (valid) { const res = client2._entityCache.get(peer); if (res) { return res; } } } if (typeof peer === "number" || typeof peer === "bigint" || big_integer_1.default.isInstance(peer)) { const res = client2._entityCache.get(peer.toString()); if (res) { return res; } } if (typeof peer == "object" && !big_integer_1.default.isInstance(peer) && peer.SUBCLASS_OF_ID === 47470215) { const res = client2._entityCache.get(__1.utils.getPeerId(peer)); if (res) { return res; } } } catch (e) { } if (typeof peer == "string") { if (["me", "this", "self"].includes(peer)) { return new tl_1.Api.InputPeerSelf(); } } try { if (peer != void 0) { return client2.session.getInputEntity(peer); } } catch (e) { } if (typeof peer === "string") { return __1.utils.getInputPeer(await _getEntityFromString(client2, peer)); } if (typeof peer === "number") { peer = (0, Helpers_1.returnBigInt)(peer); } peer = __1.utils.getPeer(peer); if (peer instanceof tl_1.Api.PeerUser) { const users = await client2.invoke(new tl_1.Api.users.GetUsers({ id: [ new tl_1.Api.InputUser({ userId: peer.userId, accessHash: big_integer_1.default.zero }) ] })); if (users.length && !(users[0] instanceof tl_1.Api.UserEmpty)) { return __1.utils.getInputPeer(users[0]); } } else if (peer instanceof tl_1.Api.PeerChat) { return new tl_1.Api.InputPeerChat({ chatId: peer.chatId }); } else if (peer instanceof tl_1.Api.PeerChannel) { try { const channels = await client2.invoke(new tl_1.Api.channels.GetChannels({ id: [ new tl_1.Api.InputChannel({ channelId: peer.channelId, accessHash: big_integer_1.default.zero }) ] })); return __1.utils.getInputPeer(channels.chats[0]); } catch (e) { if (client2._errorHandler) { await client2._errorHandler(e); } if (client2._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(e); } } } throw new Error(`Could not find the input entity for ${JSON.stringify(peer)}. Please read https://docs.telethon.dev/en/stable/concepts/entities.html to find out more details.`); } async function _getEntityFromString(client2, string) { const phone = __1.utils.parsePhone(string); if (phone) { try { const result = await client2.invoke(new tl_1.Api.contacts.GetContacts({ hash: big_integer_1.default.zero })); if (!(result instanceof tl_1.Api.contacts.ContactsNotModified)) { for (const user of result.users) { if (user instanceof tl_1.Api.User && user.phone === phone) { return user; } } } } catch (e) { if (e.errorMessage === "BOT_METHOD_INVALID") { throw new Error("Cannot get entity by phone number as a bot (try using integer IDs, not strings)"); } throw e; } } const id = __1.utils.parseID(string); if (id != void 0) { return getInputEntity(client2, id); } else if (["me", "this"].includes(string.toLowerCase())) { return client2.getMe(); } else { const { username, isInvite } = __1.utils.parseUsername(string); if (isInvite) { const invite = await client2.invoke(new tl_1.Api.messages.CheckChatInvite({ hash: username })); if (invite instanceof tl_1.Api.ChatInvite) { throw new Error("Cannot get entity from a channel (or group) that you are not part of. Join the group and retry"); } else if (invite instanceof tl_1.Api.ChatInviteAlready) { return invite.chat; } } else if (username) { try { const result = await client2.invoke(new tl_1.Api.contacts.ResolveUsername({ username })); const pid = __1.utils.getPeerId(result.peer, false); if (result.peer instanceof tl_1.Api.PeerUser) { for (const x of result.users) { if ((0, Helpers_1.returnBigInt)(x.id).equals((0, Helpers_1.returnBigInt)(pid))) { return x; } } } else { for (const x of result.chats) { if ((0, Helpers_1.returnBigInt)(x.id).equals((0, Helpers_1.returnBigInt)(pid))) { return x; } } } } catch (e) { if (e.errorMessage === "USERNAME_NOT_OCCUPIED") { throw new Error(`No user has "${username}" as username`); } throw e; } } } throw new Error(`Cannot find any entity corresponding to "${string}"`); } async function getPeerId(client2, peer, addMark = true) { if (typeof peer == "string") { const valid = (0, Utils_1.parseID)(peer); if (valid) { return __1.utils.getPeerId(peer, addMark); } else { peer = await client2.getInputEntity(peer); } } if (typeof peer == "number" || typeof peer == "bigint" || big_integer_1.default.isInstance(peer)) { return __1.utils.getPeerId(peer, addMark); } if (peer.SUBCLASS_OF_ID == 47470215 || peer.SUBCLASS_OF_ID == 3374092470) { peer = await client2.getInputEntity(peer); } if (peer instanceof tl_1.Api.InputPeerSelf) { peer = await client2.getMe(true); } return __1.utils.getPeerId(peer, addMark); } async function _getPeer(client2, peer) { if (!peer) { return void 0; } const [i, cls] = __1.utils.resolveId((0, Helpers_1.returnBigInt)(await client2.getPeerId(peer))); return new cls({ userId: i, channelId: i, chatId: i }); } async function _getInputDialog(client2, dialog) { try { if (dialog.SUBCLASS_OF_ID == 2719782805) { dialog.peer = await client2.getInputEntity(dialog.peer); return dialog; } else if (dialog.SUBCLASS_OF_ID == 3374092470) { return new tl_1.Api.InputDialogPeer({ peer: dialog }); } } catch (e) { } return new tl_1.Api.InputDialogPeer({ peer: dialog }); } async function _getInputNotify(client2, notify) { try { if (notify.SUBCLASS_OF_ID == 1486362133) { if (notify instanceof tl_1.Api.InputNotifyPeer) { notify.peer = await client2.getInputEntity(notify.peer); } return notify; } } catch (e) { } return new tl_1.Api.InputNotifyPeer({ peer: await client2.getInputEntity(notify) }); } function _selfId(client2) { return client2._selfInputPeer ? client2._selfInputPeer.userId : void 0; } } }); // node_modules/telegram/tl/custom/button.js var require_button = __commonJS({ "node_modules/telegram/tl/custom/button.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Button = void 0; var api_1 = require_api(); var __1 = require_telegram(); var Helpers_1 = require_Helpers(); var inspect_1 = require_inspect(); var Button = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(button, resize, singleUse, selective) { this.button = button; this.resize = resize; this.singleUse = singleUse; this.selective = selective; } static _isInline(button) { return button instanceof api_1.Api.KeyboardButtonCallback || button instanceof api_1.Api.KeyboardButtonSwitchInline || button instanceof api_1.Api.KeyboardButtonUrl || button instanceof api_1.Api.KeyboardButtonUrlAuth || button instanceof api_1.Api.InputKeyboardButtonUrlAuth; } static inline(text, data) { if (!data) { data = Buffer.from(text, "utf-8"); } if (data.length > 64) { throw new Error("Too many bytes for the data"); } return new api_1.Api.KeyboardButtonCallback({ text, data }); } static switchInline(text, query = "", samePeer = false) { return new api_1.Api.KeyboardButtonSwitchInline({ text, query, samePeer }); } static url(text, url) { return new api_1.Api.KeyboardButtonUrl({ text, url: url || text }); } static auth(text, url, bot, writeAccess, fwdText) { return new api_1.Api.InputKeyboardButtonUrlAuth({ text, url: url || text, bot: __1.utils.getInputUser(bot || new api_1.Api.InputUserSelf()), requestWriteAccess: writeAccess, fwdText }); } static text(text, resize, singleUse, selective) { return new this(new api_1.Api.KeyboardButton({ text }), resize, singleUse, selective); } static requestLocation(text, resize, singleUse, selective) { return new this(new api_1.Api.KeyboardButtonRequestGeoLocation({ text }), resize, singleUse, selective); } static requestPhone(text, resize, singleUse, selective) { return new this(new api_1.Api.KeyboardButtonRequestPhone({ text }), resize, singleUse, selective); } static requestPoll(text, resize, singleUse, selective) { return new this(new api_1.Api.KeyboardButtonRequestPoll({ text }), resize, singleUse, selective); } static clear() { return new api_1.Api.ReplyKeyboardHide({}); } static forceReply() { return new api_1.Api.ReplyKeyboardForceReply({}); } }; exports2.Button = Button; } }); // node_modules/telegram/Password.js var require_Password = __commonJS({ "node_modules/telegram/Password.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.computeCheck = computeCheck; exports2.computeDigest = computeDigest; var tl_1 = require_tl(); var Helpers_1 = require_Helpers(); var big_integer_1 = __importDefault2(require_BigInteger()); var CryptoFile_1 = __importDefault2(require_CryptoFile()); var SIZE_FOR_HASH = 256; function checkPrimeAndGood(primeBytes, g) { const goodPrime = Buffer.from([ 199, 28, 174, 185, 198, 177, 201, 4, 142, 108, 82, 47, 112, 241, 63, 115, 152, 13, 64, 35, 142, 62, 33, 193, 73, 52, 208, 55, 86, 61, 147, 15, 72, 25, 138, 10, 167, 193, 64, 88, 34, 148, 147, 210, 37, 48, 244, 219, 250, 51, 111, 110, 10, 201, 37, 19, 149, 67, 174, 212, 76, 206, 124, 55, 32, 253, 81, 246, 148, 88, 112, 90, 198, 140, 212, 254, 107, 107, 19, 171, 220, 151, 70, 81, 41, 105, 50, 132, 84, 241, 143, 175, 140, 89, 95, 100, 36, 119, 254, 150, 187, 42, 148, 29, 91, 205, 29, 74, 200, 204, 73, 136, 7, 8, 250, 155, 55, 142, 60, 79, 58, 144, 96, 190, 230, 124, 249, 164, 164, 166, 149, 129, 16, 81, 144, 126, 22, 39, 83, 181, 107, 15, 107, 65, 13, 186, 116, 216, 168, 75, 42, 20, 179, 20, 78, 14, 241, 40, 71, 84, 253, 23, 237, 149, 13, 89, 101, 180, 185, 221, 70, 88, 45, 177, 23, 141, 22, 156, 107, 196, 101, 176, 214, 255, 156, 163, 146, 143, 239, 91, 154, 228, 228, 24, 252, 21, 232, 62, 190, 160, 248, 127, 169, 255, 94, 237, 112, 5, 13, 237, 40, 73, 244, 123, 249, 89, 217, 86, 133, 12, 233, 41, 133, 31, 13, 129, 21, 246, 53, 177, 5, 238, 46, 78, 21, 208, 75, 36, 84, 191, 111, 79, 173, 240, 52, 177, 4, 3, 17, 156, 216, 227, 185, 47, 204, 91 ]); if (goodPrime.equals(primeBytes)) { if ([3, 4, 5, 7].includes(g)) { return; } } throw new Error("Changing passwords unsupported"); } function isGoodLarge(number, p) { return number.greater((0, big_integer_1.default)(0)) && p.subtract(number).greater((0, big_integer_1.default)(0)); } function numBytesForHash(number) { return Buffer.concat([Buffer.alloc(SIZE_FOR_HASH - number.length), number]); } function bigNumForHash(g) { return (0, Helpers_1.readBufferFromBigInt)(g, SIZE_FOR_HASH, false); } function isGoodModExpFirst(modexp, prime) { const diff = prime.subtract(modexp); const minDiffBitsCount = 2048 - 64; const maxModExpSize = 256; return !(diff.lesser((0, big_integer_1.default)(0)) || diff.bitLength().toJSNumber() < minDiffBitsCount || modexp.bitLength().toJSNumber() < minDiffBitsCount || Math.floor((modexp.bitLength().toJSNumber() + 7) / 8) > maxModExpSize); } function xor(a, b) { const length = Math.min(a.length, b.length); for (let i = 0; i < length; i++) { a[i] = a[i] ^ b[i]; } return a; } function pbkdf2sha512(password, salt, iterations) { return CryptoFile_1.default.pbkdf2Sync(password, salt, iterations, 64, "sha512"); } async function computeHash(algo, password) { const hash1 = await (0, Helpers_1.sha256)(Buffer.concat([algo.salt1, Buffer.from(password, "utf-8"), algo.salt1])); const hash2 = await (0, Helpers_1.sha256)(Buffer.concat([algo.salt2, hash1, algo.salt2])); const hash3 = await pbkdf2sha512(hash2, algo.salt1, 1e5); return (0, Helpers_1.sha256)(Buffer.concat([algo.salt2, hash3, algo.salt2])); } async function computeDigest(algo, password) { try { checkPrimeAndGood(algo.p, algo.g); } catch (e) { throw new Error("bad p/g in password"); } const value = (0, Helpers_1.modExp)((0, big_integer_1.default)(algo.g), (0, Helpers_1.readBigIntFromBuffer)(await computeHash(algo, password), false), (0, Helpers_1.readBigIntFromBuffer)(algo.p, false)); return bigNumForHash(value); } async function computeCheck(request, password) { const algo = request.currentAlgo; if (!(algo instanceof tl_1.Api.PasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow)) { throw new Error(`Unsupported password algorithm ${algo === null || algo === void 0 ? void 0 : algo.className}`); } const srp_B = request.srp_B; const srpId = request.srpId; if (!srp_B || !srpId) { throw new Error(`Undefined srp_b ${request}`); } const pwHash = await computeHash(algo, password); const p = (0, Helpers_1.readBigIntFromBuffer)(algo.p, false); const g = algo.g; const B = (0, Helpers_1.readBigIntFromBuffer)(srp_B, false); try { checkPrimeAndGood(algo.p, g); } catch (e) { throw new Error("bad /g in password"); } if (!isGoodLarge(B, p)) { throw new Error("bad b in check"); } const x = (0, Helpers_1.readBigIntFromBuffer)(pwHash, false); const pForHash = numBytesForHash(algo.p); const gForHash = bigNumForHash((0, big_integer_1.default)(g)); const bForHash = numBytesForHash(srp_B); const gX = (0, Helpers_1.modExp)((0, big_integer_1.default)(g), x, p); const k = (0, Helpers_1.readBigIntFromBuffer)(await (0, Helpers_1.sha256)(Buffer.concat([pForHash, gForHash])), false); const kgX = (0, Helpers_1.bigIntMod)(k.multiply(gX), p); const generateAndCheckRandom = async () => { const randomSize = 256; while (true) { const random = (0, Helpers_1.generateRandomBytes)(randomSize); const a2 = (0, Helpers_1.readBigIntFromBuffer)(random, false); const A = (0, Helpers_1.modExp)((0, big_integer_1.default)(g), a2, p); if (isGoodModExpFirst(A, p)) { const aForHash2 = bigNumForHash(A); const u2 = (0, Helpers_1.readBigIntFromBuffer)(await (0, Helpers_1.sha256)(Buffer.concat([aForHash2, bForHash])), false); if (u2.greater((0, big_integer_1.default)(0))) { return { a: a2, aForHash: aForHash2, u: u2 }; } } } }; const { a, aForHash, u } = await generateAndCheckRandom(); const gB = (0, Helpers_1.bigIntMod)(B.subtract(kgX), p); if (!isGoodModExpFirst(gB, p)) { throw new Error("bad gB"); } const ux = u.multiply(x); const aUx = a.add(ux); const S = (0, Helpers_1.modExp)(gB, aUx, p); const [K, pSha, gSha, salt1Sha, salt2Sha] = await Promise.all([ (0, Helpers_1.sha256)(bigNumForHash(S)), (0, Helpers_1.sha256)(pForHash), (0, Helpers_1.sha256)(gForHash), (0, Helpers_1.sha256)(algo.salt1), (0, Helpers_1.sha256)(algo.salt2) ]); const M1 = await (0, Helpers_1.sha256)(Buffer.concat([ xor(pSha, gSha), salt1Sha, salt2Sha, aForHash, bForHash, K ])); return new tl_1.Api.InputCheckPasswordSRP({ srpId, A: Buffer.from(aForHash), M1 }); } } }); // node_modules/telegram/tl/custom/messageButton.js var require_messageButton = __commonJS({ "node_modules/telegram/tl/custom/messageButton.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MessageButton = void 0; var api_1 = require_api(); var button_1 = require_button(); var Helpers_1 = require_Helpers(); var Password_1 = require_Password(); var inspect_1 = require_inspect(); var MessageButton = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(client2, original, chat, bot, msgId) { this.button = original; this._bot = bot; this._chat = chat; this._msgId = msgId; this._client = client2; } get client() { return this._client; } get text() { return !(this.button instanceof button_1.Button) ? this.button.text : ""; } get data() { if (this.button instanceof api_1.Api.KeyboardButtonCallback) { return this.button.data; } } get inlineQuery() { if (this.button instanceof api_1.Api.KeyboardButtonSwitchInline) { return this.button.query; } } get url() { if (this.button instanceof api_1.Api.KeyboardButtonUrl) { return this.button.url; } } /** * Emulates the behaviour of clicking this button. If it's a normal `KeyboardButton` with text, a message will be sent, and the sent `Message <Message>` returned. If it's an inline `KeyboardButtonCallback` with text and data, it will be "clicked" and the `BotCallbackAnswer` returned. If it's an inline `KeyboardButtonSwitchInline` button, the `StartBot` will be invoked and the resulting updates returned. If it's a `KeyboardButtonUrl`, the URL of the button will be returned. If it's a `KeyboardButtonRequestPhone`, you must indicate that you want to ``sharePhone=True`` in order to share it. Sharing it is not a default because it is a privacy concern and could happen accidentally. You may also use ``sharePhone=phone`` to share a specific number, in which case either `str` or `InputMediaContact` should be used. If it's a `KeyboardButtonRequestGeoLocation`, you must pass a tuple in ``shareGeo=[longitude, latitude]``. Note that Telegram seems to have some heuristics to determine impossible locations, so changing this value a lot quickly may not work as expected. You may also pass a `InputGeoPoint` if you find the order confusing. */ async click({ sharePhone = false, shareGeo = [0, 0], password }) { if (this.button instanceof api_1.Api.KeyboardButton) { return this._client.sendMessage(this._chat, { message: this.button.text, parseMode: void 0 }); } else if (this.button instanceof api_1.Api.KeyboardButtonCallback) { let encryptedPassword; if (password != void 0) { const pwd = await this.client.invoke(new api_1.Api.account.GetPassword()); encryptedPassword = await (0, Password_1.computeCheck)(pwd, password); } const request = new api_1.Api.messages.GetBotCallbackAnswer({ peer: this._chat, msgId: this._msgId, data: this.button.data, password: encryptedPassword }); try { return await this._client.invoke(request); } catch (e) { if (e.errorMessage == "BOT_RESPONSE_TIMEOUT") { return null; } throw e; } } else if (this.button instanceof api_1.Api.KeyboardButtonSwitchInline) { return this._client.invoke(new api_1.Api.messages.StartBot({ bot: this._bot, peer: this._chat, startParam: this.button.query })); } else if (this.button instanceof api_1.Api.KeyboardButtonUrl) { return this.button.url; } else if (this.button instanceof api_1.Api.KeyboardButtonGame) { const request = new api_1.Api.messages.GetBotCallbackAnswer({ peer: this._chat, msgId: this._msgId, game: true }); try { return await this._client.invoke(request); } catch (e) { if (e.errorMessage == "BOT_RESPONSE_TIMEOUT") { return null; } throw e; } } else if (this.button instanceof api_1.Api.KeyboardButtonRequestPhone) { if (!sharePhone) { throw new Error("cannot click on phone buttons unless sharePhone=true"); } if (sharePhone == true || typeof sharePhone == "string") { const me = await this._client.getMe(); sharePhone = new api_1.Api.InputMediaContact({ phoneNumber: (sharePhone == true ? me.phone : sharePhone) || "", firstName: me.firstName || "", lastName: me.lastName || "", vcard: "" }); } throw new Error("Not supported for now"); } else if (this.button instanceof api_1.Api.InputWebFileGeoPointLocation) { if (!shareGeo) { throw new Error("cannot click on geo buttons unless shareGeo=[longitude, latitude]"); } throw new Error("Not supported for now"); } } }; exports2.MessageButton = MessageButton; } }); // node_modules/telegram/tl/custom/message.js var require_message = __commonJS({ "node_modules/telegram/tl/custom/message.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.CustomMessage = void 0; var senderGetter_1 = require_senderGetter(); var api_1 = require_api(); var chatGetter_1 = require_chatGetter(); var utils = __importStar2(require_Utils()); var forward_1 = require_forward(); var file_1 = require_file(); var Helpers_1 = require_Helpers(); var users_1 = require_users(); var Logger_1 = require_Logger(); var messageButton_1 = require_messageButton(); var inspect_1 = require_inspect(); var CustomMessage = class extends senderGetter_1.SenderGetter { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } init({ id, peerId = void 0, date = void 0, out = void 0, mentioned = void 0, mediaUnread = void 0, silent = void 0, post = void 0, fromId = void 0, replyTo = void 0, message = void 0, fwdFrom = void 0, viaBotId = void 0, media = void 0, replyMarkup = void 0, entities: entities2 = void 0, views = void 0, editDate = void 0, postAuthor = void 0, groupedId = void 0, fromScheduled = void 0, legacy = void 0, editHide = void 0, pinned = void 0, restrictionReason = void 0, forwards = void 0, replies = void 0, action = void 0, reactions = void 0, noforwards = void 0, ttlPeriod = void 0, _entities = /* @__PURE__ */ new Map() }) { if (!id) throw new Error("id is a required attribute for Message"); let senderId = void 0; if (fromId) { senderId = utils.getPeerId(fromId); } else if (peerId) { if (post || !out && peerId instanceof api_1.Api.PeerUser) { senderId = utils.getPeerId(peerId); } } this._entities = _entities; this.out = out; this.mentioned = mentioned; this.mediaUnread = mediaUnread; this.silent = silent; this.post = post; this.post = post; this.fromScheduled = fromScheduled; this.legacy = legacy; this.editHide = editHide; this.ttlPeriod = ttlPeriod; this.id = id; this.fromId = fromId; this.peerId = peerId; this.fwdFrom = fwdFrom; this.viaBotId = viaBotId; this.replyTo = replyTo; this.date = date; this.message = message; this.media = media instanceof api_1.Api.MessageMediaEmpty ? media : void 0; this.replyMarkup = replyMarkup; this.entities = entities2; this.views = views; this.forwards = forwards; this.replies = replies; this.editDate = editDate; this.pinned = pinned; this.postAuthor = postAuthor; this.groupedId = groupedId; this.restrictionReason = restrictionReason; this.action = action; this.noforwards = noforwards; this.reactions = reactions; this._client = void 0; this._text = void 0; this._file = void 0; this._replyMessage = void 0; this._buttons = void 0; this._buttonsFlat = void 0; this._buttonsCount = 0; this._viaBot = void 0; this._viaInputBot = void 0; this._actionEntities = void 0; chatGetter_1.ChatGetter.initChatClass(this, { chatPeer: peerId, broadcast: post }); senderGetter_1.SenderGetter.initSenderClass(this, { senderId: senderId ? (0, Helpers_1.returnBigInt)(senderId) : void 0 }); this._forward = void 0; } constructor(args) { super(); this.init(args); } _finishInit(client2, entities2, inputChat) { this._client = client2; const cache = client2._entityCache; if (this.senderId) { [this._sender, this._inputSender] = utils._getEntityPair(this.senderId.toString(), entities2, cache); } if (this.chatId) { [this._chat, this._inputChat] = utils._getEntityPair(this.chatId.toString(), entities2, cache); } if (inputChat) { this._inputChat = inputChat; } if (this.viaBotId) { [this._viaBot, this._viaInputBot] = utils._getEntityPair(this.viaBotId.toString(), entities2, cache); } if (this.fwdFrom) { this._forward = new forward_1.Forward(this._client, this.fwdFrom, entities2); } if (this.action) { if (this.action instanceof api_1.Api.MessageActionChatAddUser || this.action instanceof api_1.Api.MessageActionChatCreate) { this._actionEntities = this.action.users.map((i) => entities2.get(i.toString())); } else if (this.action instanceof api_1.Api.MessageActionChatDeleteUser) { this._actionEntities = [ entities2.get(this.action.userId.toString()) ]; } else if (this.action instanceof api_1.Api.MessageActionChatJoinedByLink) { this._actionEntities = [ entities2.get(utils.getPeerId(new api_1.Api.PeerChannel({ channelId: this.action.inviterId }))) ]; } else if (this.action instanceof api_1.Api.MessageActionChannelMigrateFrom) { this._actionEntities = [ entities2.get(utils.getPeerId(new api_1.Api.PeerChat({ chatId: this.action.chatId }))) ]; } } } get client() { return this._client; } get text() { if (this._text === void 0 && this._client) { if (!this._client.parseMode) { this._text = this.message; } else { this._text = this._client.parseMode.unparse(this.message || "", this.entities || []); } } return this._text || ""; } set text(value) { this._text = value; if (this._client && this._client.parseMode) { [this.message, this.entities] = this._client.parseMode.parse(value); } else { this.message = value; this.entities = []; } } get rawText() { return this.message || ""; } /** * @param {string} value */ set rawText(value) { this.message = value; this.entities = []; this._text = ""; } get isReply() { return !!this.replyTo; } get forward() { return this._forward; } async _refetchSender() { await this._reloadMessage(); } /** * Re-fetches this message to reload the sender and chat entities, * along with their input versions. * @private */ async _reloadMessage() { if (!this._client) return; let msg = void 0; try { const chat = this.isChannel ? await this.getInputChat() : void 0; let temp = await this._client.getMessages(chat, { ids: this.id }); if (temp) { msg = temp[0]; } } catch (e) { this._client._log.error("Got error while trying to finish init message with id " + this.id); if (this._client._errorHandler) { await this._client._errorHandler(e); } if (this._client._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(e); } } if (msg == void 0) return; this._sender = msg._sender; this._inputSender = msg._inputSender; this._chat = msg._chat; this._inputChat = msg._inputChat; this._viaBot = msg._viaBot; this._viaInputBot = msg._viaInputBot; this._forward = msg._forward; this._actionEntities = msg._actionEntities; } /** * Returns a list of lists of `MessageButton <MessageButton>`, if any. * Otherwise, it returns `undefined`. */ get buttons() { if (!this._buttons && this.replyMarkup) { if (!this.inputChat) { return; } try { const bot = this._neededMarkupBot(); this._setButtons(this.inputChat, bot); } catch (e) { return; } } return this._buttons; } /** * Returns `buttons` when that property fails (this is rarely needed). */ async getButtons() { if (!this.buttons && this.replyMarkup) { const chat = await this.getInputChat(); if (!chat) return; let bot; try { bot = this._neededMarkupBot(); } catch (e) { await this._reloadMessage(); bot = this._neededMarkupBot(); } this._setButtons(chat, bot); } return this._buttons; } get buttonCount() { if (!this._buttonsCount) { if (this.replyMarkup instanceof api_1.Api.ReplyInlineMarkup || this.replyMarkup instanceof api_1.Api.ReplyKeyboardMarkup) { this._buttonsCount = this.replyMarkup.rows.map((r) => r.buttons.length).reduce(function(a, b) { return a + b; }, 0); } else { this._buttonsCount = 0; } } return this._buttonsCount; } get file() { if (!this._file) { const media = this.photo || this.document; if (media) { this._file = new file_1.File(media); } } return this._file; } get photo() { if (this.media instanceof api_1.Api.MessageMediaPhoto) { if (this.media.photo instanceof api_1.Api.Photo) return this.media.photo; } else if (this.action instanceof api_1.Api.MessageActionChatEditPhoto) { return this.action.photo; } else { return this.webPreview && this.webPreview.photo instanceof api_1.Api.Photo ? this.webPreview.photo : void 0; } return void 0; } get document() { if (this.media instanceof api_1.Api.MessageMediaDocument) { if (this.media.document instanceof api_1.Api.Document) return this.media.document; } else { const web = this.webPreview; return web && web.document instanceof api_1.Api.Document ? web.document : void 0; } return void 0; } get webPreview() { if (this.media instanceof api_1.Api.MessageMediaWebPage) { if (this.media.webpage instanceof api_1.Api.WebPage) return this.media.webpage; } } get audio() { return this._documentByAttribute(api_1.Api.DocumentAttributeAudio, (attr) => !attr.voice); } get voice() { return this._documentByAttribute(api_1.Api.DocumentAttributeAudio, (attr) => !!attr.voice); } get video() { return this._documentByAttribute(api_1.Api.DocumentAttributeVideo); } get videoNote() { return this._documentByAttribute(api_1.Api.DocumentAttributeVideo, (attr) => !!attr.roundMessage); } get gif() { return this._documentByAttribute(api_1.Api.DocumentAttributeAnimated); } get sticker() { return this._documentByAttribute(api_1.Api.DocumentAttributeSticker); } get contact() { if (this.media instanceof api_1.Api.MessageMediaContact) { return this.media; } } get game() { if (this.media instanceof api_1.Api.MessageMediaGame) { return this.media.game; } } get geo() { if (this.media instanceof api_1.Api.MessageMediaGeo || this.media instanceof api_1.Api.MessageMediaGeoLive || this.media instanceof api_1.Api.MessageMediaVenue) { return this.media.geo; } } get invoice() { if (this.media instanceof api_1.Api.MessageMediaInvoice) { return this.media; } } get poll() { if (this.media instanceof api_1.Api.MessageMediaPoll) { return this.media; } } get venue() { if (this.media instanceof api_1.Api.MessageMediaVenue) { return this.media; } } get dice() { if (this.media instanceof api_1.Api.MessageMediaDice) { return this.media; } } get actionEntities() { return this._actionEntities; } get viaBot() { return this._viaBot; } get viaInputBot() { return this._viaInputBot; } get replyToMsgId() { var _a; return (_a = this.replyTo) === null || _a === void 0 ? void 0 : _a.replyToMsgId; } get toId() { if (this._client && !this.out && this.isPrivate) { return new api_1.Api.PeerUser({ userId: (0, users_1._selfId)(this._client) }); } return this.peerId; } getEntitiesText(cls) { let ent = this.entities; if (!ent || ent.length == 0) return; if (cls) { ent = ent.filter((v) => v instanceof cls); } const texts = utils.getInnerText(this.message || "", ent); const zip = (rows) => rows[0].map((_, c) => rows.map((row) => row[c])); return zip([ent, texts]); } async getReplyMessage() { if (!this._replyMessage && this._client) { if (!this.replyTo) return void 0; this._replyMessage = (await this._client.getMessages(this.isChannel ? await this.getInputChat() : void 0, { ids: new api_1.Api.InputMessageReplyTo({ id: this.id }) }))[0]; if (!this._replyMessage) { this._replyMessage = (await this._client.getMessages(this.isChannel ? this._inputChat : void 0, { ids: this.replyToMsgId }))[0]; } } return this._replyMessage; } async respond(params) { if (this._client) { return this._client.sendMessage(await this.getInputChat(), params); } } async reply(params) { if (this._client) { params.replyTo = this.id; return this._client.sendMessage(await this.getInputChat(), params); } } async forwardTo(entity) { if (this._client) { entity = await this._client.getInputEntity(entity); const params = { messages: [this.id], fromPeer: await this.getInputChat() }; return this._client.forwardMessages(entity, params); } } async edit(params) { const param = params; if (this.fwdFrom || !this._client) return void 0; if (param.linkPreview == void 0) { param.linkPreview = !!this.webPreview; } if (param.buttons == void 0) { param.buttons = this.replyMarkup; } param.message = this.id; return this._client.editMessage(await this.getInputChat(), param); } async delete({ revoke } = { revoke: false }) { if (this._client) { return this._client.deleteMessages(await this.getInputChat(), [this.id], { revoke }); } } async pin(params) { if (this._client) { const entity = await this.getInputChat(); if (entity === void 0) { throw Error("Failed to pin message due to cannot get input chat."); } return this._client.pinMessage(entity, this.id, params); } } async unpin(params) { if (this._client) { const entity = await this.getInputChat(); if (entity === void 0) { throw Error("Failed to unpin message due to cannot get input chat."); } return this._client.unpinMessage(entity, this.id, params); } } async downloadMedia(params) { if (this._client) return this._client.downloadMedia(this, params || {}); } async markAsRead() { if (this._client) { const entity = await this.getInputChat(); if (entity === void 0) { throw Error(`Failed to mark message id ${this.id} as read due to cannot get input chat.`); } return this._client.markAsRead(entity, this.id); } } async click({ i, j, text, filter: filter2, data, sharePhone, shareGeo, password }) { if (!this.client) { return; } if (data) { const chat = await this.getInputChat(); if (!chat) { return; } const button2 = new api_1.Api.KeyboardButtonCallback({ text: "", data }); return await new messageButton_1.MessageButton(this.client, button2, chat, void 0, this.id).click({ sharePhone, shareGeo, password }); } if (this.poll) { let findPoll = function(answers) { if (i != void 0) { if (Array.isArray(i)) { const corrects = []; for (let x = 0; x < i.length; x++) { corrects.push(answers[x].option); } return corrects; } return [answers[i].option]; } if (text != void 0) { if (typeof text == "function") { for (const answer of answers) { if (text(answer.text)) { return [answer.option]; } } } else { for (const answer of answers) { if (answer.text.text == text) { return [answer.option]; } } } return; } if (filter2 != void 0) { for (const answer of answers) { if (filter2(answer)) { return [answer.option]; } } return; } }; const options = findPoll(this.poll.poll.answers) || []; return await this.client.invoke(new api_1.Api.messages.SendVote({ peer: this.inputChat, msgId: this.id, options })); } if (!await this.getButtons()) { return; } function findButton(self2) { if (!self2._buttonsFlat || !self2._buttons) { return; } if (Array.isArray(i)) { i = i[0]; } if (text != void 0) { if (typeof text == "function") { for (const button2 of self2._buttonsFlat) { if (text(button2.text)) { return button2; } } } else { for (const button2 of self2._buttonsFlat) { if (button2.text == text) { return button2; } } } return; } if (filter2 != void 0) { for (const button2 of self2._buttonsFlat) { if (filter2(button2)) { return button2; } } return; } if (i == void 0) { i = 0; } if (j == void 0) { return self2._buttonsFlat[i]; } else { return self2._buttons[i][j]; } } const button = findButton(this); if (button) { return await button.click({ sharePhone, shareGeo, password }); } } /** * Helper methods to set the buttons given the input sender and chat. */ _setButtons(chat, bot) { if (this.client && (this.replyMarkup instanceof api_1.Api.ReplyInlineMarkup || this.replyMarkup instanceof api_1.Api.ReplyKeyboardMarkup)) { this._buttons = []; this._buttonsFlat = []; for (const row of this.replyMarkup.rows) { const tmp = []; for (const button of row.buttons) { const btn = new messageButton_1.MessageButton(this.client, button, chat, bot, this.id); tmp.push(btn); this._buttonsFlat.push(btn); } this._buttons.push(tmp); } } } /** *Returns the input peer of the bot that's needed for the reply markup. This is necessary for `KeyboardButtonSwitchInline` since we need to know what bot we want to start. Raises ``Error`` if the bot cannot be found but is needed. Returns `None` if it's not needed. */ _neededMarkupBot() { if (!this.client || this.replyMarkup == void 0) { return; } if (!(this.replyMarkup instanceof api_1.Api.ReplyInlineMarkup || this.replyMarkup instanceof api_1.Api.ReplyKeyboardMarkup)) { return; } for (const row of this.replyMarkup.rows) { for (const button of row.buttons) { if (button instanceof api_1.Api.KeyboardButtonSwitchInline) { if (button.samePeer || !this.viaBotId) { const bot = this._inputSender; if (!bot) throw new Error("No input sender"); return bot; } else { const ent = this.client._entityCache.get(this.viaBotId); if (!ent) throw new Error("No input sender"); return ent; } } } } } // TODO fix this _documentByAttribute(kind, condition) { const doc = this.document; if (doc) { for (const attr of doc.attributes) { if (attr instanceof kind) { if (condition == void 0 || typeof condition == "function" && condition(attr)) { return doc; } return void 0; } } } } }; exports2.CustomMessage = CustomMessage; } }); // node_modules/telegram/tl/patched/index.js var require_patched = __commonJS({ "node_modules/telegram/tl/patched/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.patchAll = patchAll; var api_1 = require_api(); var message_1 = require_message(); function getGetter(obj, prop) { while (obj) { let getter = Object.getOwnPropertyDescriptor(obj, prop); if (getter && getter.get) { return getter.get; } obj = Object.getPrototypeOf(obj); } } function getSetter(obj, prop) { while (obj) { let getter = Object.getOwnPropertyDescriptor(obj, prop); if (getter && getter.set) { return getter.set; } obj = Object.getPrototypeOf(obj); } } var getInstanceMethods = (obj) => { let keys = { methods: /* @__PURE__ */ new Set(), setters: /* @__PURE__ */ new Set(), getters: /* @__PURE__ */ new Set() }; let topObject = obj; const mapAllMethods = (property) => { const getter = getGetter(topObject, property); const setter = getSetter(topObject, property); if (getter) { keys["getters"].add(property); } else if (setter) { keys["setters"].add(property); } else { if (!(property == "constructor")) { keys["methods"].add(property); } } }; do { Object.getOwnPropertyNames(obj).map(mapAllMethods); obj = Object.getPrototypeOf(obj); } while ( // not the the Object prototype methods (hasOwnProperty, etc...) obj && Object.getPrototypeOf(obj) ); return keys; }; function patchClass(clazz) { const { getters, setters, methods } = getInstanceMethods(message_1.CustomMessage.prototype); for (const getter of getters) { Object.defineProperty(clazz.prototype, getter, { get: getGetter(message_1.CustomMessage.prototype, getter) }); } for (const setter of setters) { Object.defineProperty(clazz.prototype, setter, { set: getSetter(message_1.CustomMessage.prototype, setter) }); } for (const method of methods) { clazz.prototype[method] = message_1.CustomMessage.prototype[method]; } } function patchAll() { patchClass(api_1.Api.Message); patchClass(api_1.Api.MessageService); patchClass(api_1.Api.MessageEmpty); } } }); // node_modules/telegram/tl/index.js var require_tl = __commonJS({ "node_modules/telegram/tl/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.serializeDate = exports2.serializeBytes = exports2.Api = void 0; var api_1 = require_api(); Object.defineProperty(exports2, "Api", { enumerable: true, get: function() { return api_1.Api; } }); var patched_1 = require_patched(); (0, patched_1.patchAll)(); var generationHelpers_1 = require_generationHelpers(); Object.defineProperty(exports2, "serializeBytes", { enumerable: true, get: function() { return generationHelpers_1.serializeBytes; } }); Object.defineProperty(exports2, "serializeDate", { enumerable: true, get: function() { return generationHelpers_1.serializeDate; } }); } }); // node_modules/telegram/extensions/BinaryWriter.js var require_BinaryWriter = __commonJS({ "node_modules/telegram/extensions/BinaryWriter.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.BinaryWriter = void 0; var BinaryWriter = class { constructor(stream) { this._buffers = [stream]; } write(buffer) { this._buffers.push(buffer); } getValue() { return Buffer.concat(this._buffers); } }; exports2.BinaryWriter = BinaryWriter; } }); // node_modules/ts-custom-error/dist/custom-error.js var require_custom_error = __commonJS({ "node_modules/ts-custom-error/dist/custom-error.js"(exports2) { init_define_import_meta_env(); function fixProto(target, prototype) { var setPrototypeOf = Object.setPrototypeOf; setPrototypeOf ? setPrototypeOf(target, prototype) : target.__proto__ = prototype; } function fixStack(target, fn) { if (fn === void 0) { fn = target.constructor; } var captureStackTrace = Error.captureStackTrace; captureStackTrace && captureStackTrace(target, fn); } var __extends2 = /* @__PURE__ */ (function() { var _extendStatics = function extendStatics2(d, b) { _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { d2.__proto__ = b2; } || function(d2, b2) { for (var p in b2) { if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; } }; return _extendStatics(d, b); }; return function(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); _extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var CustomError = (function(_super) { __extends2(CustomError2, _super); function CustomError2(message, options) { var _newTarget = this.constructor; var _this = _super.call(this, message, options) || this; Object.defineProperty(_this, "name", { value: _newTarget.name, enumerable: false, configurable: true }); fixProto(_this, _newTarget.prototype); fixStack(_this); return _this; } return CustomError2; })(Error); var __spreadArray2 = function(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; function customErrorFactory(fn, parent) { if (parent === void 0) { parent = Error; } function CustomError2() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (!(this instanceof CustomError2)) return new (CustomError2.bind.apply(CustomError2, __spreadArray2([void 0], args, false)))(); parent.apply(this, args); Object.defineProperty(this, "name", { value: fn.name || parent.name, enumerable: false, configurable: true }); fn.apply(this, args); fixStack(this, CustomError2); } return Object.defineProperties(CustomError2, { prototype: { value: Object.create(parent.prototype, { constructor: { value: CustomError2, writable: true, configurable: true } }) } }); } exports2.CustomError = CustomError; exports2.customErrorFactory = customErrorFactory; } }); // node_modules/telegram/errors/RPCBaseErrors.js var require_RPCBaseErrors = __commonJS({ "node_modules/telegram/errors/RPCBaseErrors.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.TimedOutError = exports2.ServerError = exports2.FloodError = exports2.AuthKeyError = exports2.NotFoundError = exports2.ForbiddenError = exports2.UnauthorizedError = exports2.BadRequestError = exports2.InvalidDCError = exports2.RPCError = void 0; var ts_custom_error_1 = require_custom_error(); var RPCError = class _RPCError extends ts_custom_error_1.CustomError { constructor(message, request, code) { super("{0}: {1}{2}".replace("{0}", (code === null || code === void 0 ? void 0 : code.toString()) || "").replace("{1}", message || "").replace("{2}", _RPCError._fmtRequest(request))); this.code = code; this.errorMessage = message; } static _fmtRequest(request) { if (request) { return ` (caused by ${request.className})`; } else { return ""; } } }; exports2.RPCError = RPCError; var InvalidDCError = class extends RPCError { constructor(message, request, code) { super(message, request, code); this.code = code || 303; this.errorMessage = message || "ERROR_SEE_OTHER"; } }; exports2.InvalidDCError = InvalidDCError; var BadRequestError = class extends RPCError { constructor() { super(...arguments); this.code = 400; this.errorMessage = "BAD_REQUEST"; } }; exports2.BadRequestError = BadRequestError; var UnauthorizedError = class extends RPCError { constructor() { super(...arguments); this.code = 401; this.errorMessage = "UNAUTHORIZED"; } }; exports2.UnauthorizedError = UnauthorizedError; var ForbiddenError = class extends RPCError { constructor() { super(...arguments); this.code = 403; this.errorMessage = "FORBIDDEN"; } }; exports2.ForbiddenError = ForbiddenError; var NotFoundError = class extends RPCError { constructor() { super(...arguments); this.code = 404; this.errorMessage = "NOT_FOUND"; } }; exports2.NotFoundError = NotFoundError; var AuthKeyError = class extends RPCError { constructor() { super(...arguments); this.code = 406; this.errorMessage = "AUTH_KEY"; } }; exports2.AuthKeyError = AuthKeyError; var FloodError = class extends RPCError { constructor() { super(...arguments); this.code = 420; this.errorMessage = "FLOOD"; } }; exports2.FloodError = FloodError; var ServerError = class extends RPCError { constructor() { super(...arguments); this.code = 500; this.errorMessage = "INTERNAL"; } }; exports2.ServerError = ServerError; var TimedOutError = class extends RPCError { constructor() { super(...arguments); this.code = 503; this.errorMessage = "Timeout"; } }; exports2.TimedOutError = TimedOutError; } }); // node_modules/telegram/errors/RPCErrorList.js var require_RPCErrorList = __commonJS({ "node_modules/telegram/errors/RPCErrorList.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.rpcErrorRe = exports2.MsgWaitError = exports2.EmailUnconfirmedError = exports2.NetworkMigrateError = exports2.FileMigrateError = exports2.FloodTestPhoneWaitError = exports2.FloodWaitError = exports2.SlowModeWaitError = exports2.PhoneMigrateError = exports2.UserMigrateError = void 0; var RPCBaseErrors_1 = require_RPCBaseErrors(); var UserMigrateError = class extends RPCBaseErrors_1.InvalidDCError { constructor(args) { const newDc = Number(args.capture || 0); super(`The user whose identity is being used to execute queries is associated with DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request), args.request); this.message = `The user whose identity is being used to execute queries is associated with DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request); this.newDc = newDc; } }; exports2.UserMigrateError = UserMigrateError; var PhoneMigrateError = class extends RPCBaseErrors_1.InvalidDCError { constructor(args) { const newDc = Number(args.capture || 0); super(`The phone number a user is trying to use for authorization is associated with DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request), args.request); this.message = `The phone number a user is trying to use for authorization is associated with DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request); this.newDc = newDc; } }; exports2.PhoneMigrateError = PhoneMigrateError; var SlowModeWaitError = class extends RPCBaseErrors_1.FloodError { constructor(args) { const seconds = Number(args.capture || 0); super(`A wait of ${seconds} seconds is required before sending another message in this chat` + RPCBaseErrors_1.RPCError._fmtRequest(args.request), args.request); this.message = `A wait of ${seconds} seconds is required before sending another message in this chat` + RPCBaseErrors_1.RPCError._fmtRequest(args.request); this.seconds = seconds; } }; exports2.SlowModeWaitError = SlowModeWaitError; var FloodWaitError = class extends RPCBaseErrors_1.FloodError { constructor(args) { const seconds = Number(args.capture || 0); super(`A wait of ${seconds} seconds is required` + RPCBaseErrors_1.RPCError._fmtRequest(args.request), args.request); this.message = `A wait of ${seconds} seconds is required` + RPCBaseErrors_1.RPCError._fmtRequest(args.request); this.seconds = seconds; } }; exports2.FloodWaitError = FloodWaitError; var FloodTestPhoneWaitError = class extends RPCBaseErrors_1.FloodError { constructor(args) { const seconds = Number(args.capture || 0); super(`A wait of ${seconds} seconds is required in the test servers` + RPCBaseErrors_1.RPCError._fmtRequest(args.request), args.request); this.message = `A wait of ${seconds} seconds is required in the test servers` + RPCBaseErrors_1.RPCError._fmtRequest(args.request); this.seconds = seconds; } }; exports2.FloodTestPhoneWaitError = FloodTestPhoneWaitError; var FileMigrateError = class extends RPCBaseErrors_1.InvalidDCError { constructor(args) { const newDc = Number(args.capture || 0); super(`The file to be accessed is currently stored in DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request), args.request); this.message = `The file to be accessed is currently stored in DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request); this.newDc = newDc; } }; exports2.FileMigrateError = FileMigrateError; var NetworkMigrateError = class extends RPCBaseErrors_1.InvalidDCError { constructor(args) { const newDc = Number(args.capture || 0); super(`The source IP address is associated with DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request), args.request); this.message = `The source IP address is associated with DC ${newDc}` + RPCBaseErrors_1.RPCError._fmtRequest(args.request); this.newDc = newDc; } }; exports2.NetworkMigrateError = NetworkMigrateError; var EmailUnconfirmedError = class extends RPCBaseErrors_1.BadRequestError { constructor(args) { const codeLength = Number(args.capture || 0); super(`Email unconfirmed, the length of the code must be ${codeLength}${RPCBaseErrors_1.RPCError._fmtRequest(args.request)}`, args.request, 400); this.message = `Email unconfirmed, the length of the code must be ${codeLength}${RPCBaseErrors_1.RPCError._fmtRequest(args.request)}`; this.codeLength = codeLength; } }; exports2.EmailUnconfirmedError = EmailUnconfirmedError; var MsgWaitError = class extends RPCBaseErrors_1.FloodError { constructor(args) { super(`Message failed to be sent.${RPCBaseErrors_1.RPCError._fmtRequest(args.request)}`, args.request); this.message = `Message failed to be sent.${RPCBaseErrors_1.RPCError._fmtRequest(args.request)}`; } }; exports2.MsgWaitError = MsgWaitError; exports2.rpcErrorRe = /* @__PURE__ */ new Map([ [/FILE_MIGRATE_(\d+)/, FileMigrateError], [/FLOOD_TEST_PHONE_WAIT_(\d+)/, FloodTestPhoneWaitError], [/FLOOD_WAIT_(\d+)/, FloodWaitError], [/FLOOD_PREMIUM_WAIT_(\d+)/, FloodWaitError], [/MSG_WAIT_(.*)/, MsgWaitError], [/PHONE_MIGRATE_(\d+)/, PhoneMigrateError], [/SLOWMODE_WAIT_(\d+)/, SlowModeWaitError], [/USER_MIGRATE_(\d+)/, UserMigrateError], [/NETWORK_MIGRATE_(\d+)/, NetworkMigrateError], [/EMAIL_UNCONFIRMED_(\d+)/, EmailUnconfirmedError] ]); } }); // node_modules/telegram/errors/Common.js var require_Common = __commonJS({ "node_modules/telegram/errors/Common.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.BadMessageError = exports2.CdnFileTamperedError = exports2.SecurityError = exports2.InvalidBufferError = exports2.InvalidChecksumError = exports2.TypeNotFoundError = exports2.ReadCancelledError = void 0; var ReadCancelledError = class extends Error { constructor() { super("The read operation was cancelled."); } }; exports2.ReadCancelledError = ReadCancelledError; var TypeNotFoundError = class extends Error { constructor(invalidConstructorId, remaining) { super(`Could not find a matching Constructor ID for the TLObject that was supposed to be read with ID ${invalidConstructorId}. Most likely, a TLObject was trying to be read when it should not be read. Remaining bytes: ${remaining.length}`); if (typeof alert !== "undefined") { alert(`Missing MTProto Entity: Please, make sure to add TL definition for ID ${invalidConstructorId}`); } this.invalidConstructorId = invalidConstructorId; this.remaining = remaining; } }; exports2.TypeNotFoundError = TypeNotFoundError; var InvalidChecksumError = class extends Error { constructor(checksum, validChecksum) { super(`Invalid checksum (${checksum} when ${validChecksum} was expected). This packet should be skipped.`); this.checksum = checksum; this.validChecksum = validChecksum; } }; exports2.InvalidChecksumError = InvalidChecksumError; var InvalidBufferError = class extends Error { constructor(payload) { let code = void 0; if (payload.length === 4) { code = -payload.readInt32LE(0); super(`Invalid response buffer (HTTP code ${code})`); } else { super(`Invalid response buffer (too short ${payload})`); } this.code = code; this.payload = payload; } }; exports2.InvalidBufferError = InvalidBufferError; var SecurityError = class extends Error { constructor(...args) { if (!args.length) { args = ["A security check failed."]; } super(...args); } }; exports2.SecurityError = SecurityError; var CdnFileTamperedError = class extends SecurityError { constructor() { super("The CDN file has been altered and its download cancelled."); } }; exports2.CdnFileTamperedError = CdnFileTamperedError; var BadMessageError = class _BadMessageError extends Error { constructor(request, code) { let errorMessage = _BadMessageError.ErrorMessages[code] || `Unknown error code (this should not happen): ${code}.`; errorMessage += ` Caused by ${request.className}`; super(errorMessage); this.errorMessage = errorMessage; this.code = code; } }; exports2.BadMessageError = BadMessageError; BadMessageError.ErrorMessages = { 16: "msg_id too low (most likely, client time is wrong it would be worthwhile to synchronize it using msg_id notifications and re-send the original message with the \u201Ccorrect\u201D msg_id or wrap it in a container with a new msg_id if the original message had waited too long on the client to be transmitted).", 17: "msg_id too high (similar to the previous case, the client time has to be synchronized, and the message re-sent with the correct msg_id).", 18: "Incorrect two lower order msg_id bits (the server expects client message msg_id to be divisible by 4).", 19: "Container msg_id is the same as msg_id of a previously received message (this must never happen).", 20: "Message too old, and it cannot be verified whether the server has received a message with this msg_id or not.", 32: "msg_seqno too low (the server has already received a message with a lower msg_id but with either a higher or an equal and odd seqno).", 33: "msg_seqno too high (similarly, there is a message with a higher msg_id but with either a lower or an equal and odd seqno).", 34: "An even msg_seqno expected (irrelevant message), but odd received.", 35: "Odd msg_seqno expected (relevant message), but even received.", 48: "Incorrect server salt (in this case, the bad_server_salt response is received with the correct salt, and the message is to be re-sent with it).", 64: "Invalid container." }; } }); // node_modules/telegram/errors/index.js var require_errors = __commonJS({ "node_modules/telegram/errors/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.RPCMessageToError = RPCMessageToError; var RPCBaseErrors_1 = require_RPCBaseErrors(); var RPCErrorList_1 = require_RPCErrorList(); function RPCMessageToError(rpcError, request) { for (const [msgRegex, Cls] of RPCErrorList_1.rpcErrorRe) { const m = rpcError.errorMessage.match(msgRegex); if (m) { const capture = m.length === 2 ? parseInt(m[1]) : null; return new Cls({ request, capture }); } } return new RPCBaseErrors_1.RPCError(rpcError.errorMessage, request, rpcError.errorCode); } __exportStar2(require_Common(), exports2); __exportStar2(require_RPCBaseErrors(), exports2); __exportStar2(require_RPCErrorList(), exports2); } }); // node_modules/telegram/tl/core/TLMessage.js var require_TLMessage = __commonJS({ "node_modules/telegram/tl/core/TLMessage.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.TLMessage = void 0; var TLMessage = class { constructor(msgId, seqNo, obj) { this.msgId = msgId; this.seqNo = seqNo; this.obj = obj; this.classType = "constructor"; } }; exports2.TLMessage = TLMessage; TLMessage.SIZE_OVERHEAD = 12; TLMessage.classType = "constructor"; } }); // node_modules/telegram/tl/core/RPCResult.js var require_RPCResult = __commonJS({ "node_modules/telegram/tl/core/RPCResult.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.RPCResult = void 0; var api_1 = require_api(); var _1 = require_core(); var RPCResult = class _RPCResult { constructor(reqMsgId, body, error) { this.CONSTRUCTOR_ID = 4082920705; this.reqMsgId = reqMsgId; this.body = body; this.error = error; this.classType = "constructor"; } static async fromReader(reader) { const msgId = reader.readLong(); const innerCode = reader.readInt(false); if (innerCode === api_1.Api.RpcError.CONSTRUCTOR_ID) { return new _RPCResult(msgId, void 0, api_1.Api.RpcError.fromReader(reader)); } if (innerCode === _1.GZIPPacked.CONSTRUCTOR_ID) { return new _RPCResult(msgId, (await _1.GZIPPacked.fromReader(reader)).data); } reader.seek(-4); return new _RPCResult(msgId, reader.read(), void 0); } }; exports2.RPCResult = RPCResult; RPCResult.CONSTRUCTOR_ID = 4082920705; RPCResult.classType = "constructor"; } }); // node_modules/telegram/tl/core/MessageContainer.js var require_MessageContainer = __commonJS({ "node_modules/telegram/tl/core/MessageContainer.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MessageContainer = void 0; var TLMessage_1 = require_TLMessage(); var MessageContainer = class _MessageContainer { constructor(messages) { this.CONSTRUCTOR_ID = 1945237724; this.messages = messages; this.classType = "constructor"; } static async fromReader(reader) { const messages = []; const length = reader.readInt(); for (let x = 0; x < length; x++) { const msgId = reader.readLong(); const seqNo = reader.readInt(); const length2 = reader.readInt(); const before = reader.tellPosition(); const obj = reader.tgReadObject(); reader.setPosition(before + length2); const tlMessage = new TLMessage_1.TLMessage(msgId, seqNo, obj); messages.push(tlMessage); } return new _MessageContainer(messages); } }; exports2.MessageContainer = MessageContainer; MessageContainer.CONSTRUCTOR_ID = 1945237724; MessageContainer.classType = "constructor"; MessageContainer.MAXIMUM_SIZE = 1044456 - 8; MessageContainer.MAXIMUM_LENGTH = 100; } }); // node_modules/pako/lib/zlib/trees.js var require_trees = __commonJS({ "node_modules/pako/lib/zlib/trees.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var Z_FIXED = 4; var Z_BINARY = 0; var Z_TEXT = 1; var Z_UNKNOWN = 2; function zero(buf) { let len = buf.length; while (--len >= 0) { buf[len] = 0; } } var STORED_BLOCK = 0; var STATIC_TREES = 1; var DYN_TREES = 2; var MIN_MATCH = 3; var MAX_MATCH = 258; var LENGTH_CODES = 29; var LITERALS = 256; var L_CODES = LITERALS + 1 + LENGTH_CODES; var D_CODES = 30; var BL_CODES = 19; var HEAP_SIZE = 2 * L_CODES + 1; var MAX_BITS = 15; var Buf_size = 16; var MAX_BL_BITS = 7; var END_BLOCK = 256; var REP_3_6 = 16; var REPZ_3_10 = 17; var REPZ_11_138 = 18; var extra_lbits = ( /* extra bits for each length code */ new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0]) ); var extra_dbits = ( /* extra bits for each distance code */ new Uint8Array([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]) ); var extra_blbits = ( /* extra bits for each bit length code */ new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7]) ); var bl_order = new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); var DIST_CODE_LEN = 512; var static_ltree = new Array((L_CODES + 2) * 2); zero(static_ltree); var static_dtree = new Array(D_CODES * 2); zero(static_dtree); var _dist_code = new Array(DIST_CODE_LEN); zero(_dist_code); var _length_code = new Array(MAX_MATCH - MIN_MATCH + 1); zero(_length_code); var base_length = new Array(LENGTH_CODES); zero(base_length); var base_dist = new Array(D_CODES); zero(base_dist); function StaticTreeDesc(static_tree, extra_bits, extra_base, elems, max_length) { this.static_tree = static_tree; this.extra_bits = extra_bits; this.extra_base = extra_base; this.elems = elems; this.max_length = max_length; this.has_stree = static_tree && static_tree.length; } var static_l_desc; var static_d_desc; var static_bl_desc; function TreeDesc(dyn_tree, stat_desc) { this.dyn_tree = dyn_tree; this.max_code = 0; this.stat_desc = stat_desc; } var d_code = (dist) => { return dist < 256 ? _dist_code[dist] : _dist_code[256 + (dist >>> 7)]; }; var put_short = (s, w) => { s.pending_buf[s.pending++] = w & 255; s.pending_buf[s.pending++] = w >>> 8 & 255; }; var send_bits = (s, value, length) => { if (s.bi_valid > Buf_size - length) { s.bi_buf |= value << s.bi_valid & 65535; put_short(s, s.bi_buf); s.bi_buf = value >> Buf_size - s.bi_valid; s.bi_valid += length - Buf_size; } else { s.bi_buf |= value << s.bi_valid & 65535; s.bi_valid += length; } }; var send_code = (s, c, tree) => { send_bits( s, tree[c * 2], tree[c * 2 + 1] /*.Len*/ ); }; var bi_reverse = (code, len) => { let res = 0; do { res |= code & 1; code >>>= 1; res <<= 1; } while (--len > 0); return res >>> 1; }; var bi_flush = (s) => { if (s.bi_valid === 16) { put_short(s, s.bi_buf); s.bi_buf = 0; s.bi_valid = 0; } else if (s.bi_valid >= 8) { s.pending_buf[s.pending++] = s.bi_buf & 255; s.bi_buf >>= 8; s.bi_valid -= 8; } }; var gen_bitlen = (s, desc) => { const tree = desc.dyn_tree; const max_code = desc.max_code; const stree = desc.stat_desc.static_tree; const has_stree = desc.stat_desc.has_stree; const extra = desc.stat_desc.extra_bits; const base = desc.stat_desc.extra_base; const max_length = desc.stat_desc.max_length; let h; let n, m; let bits; let xbits; let f; let overflow = 0; for (bits = 0; bits <= MAX_BITS; bits++) { s.bl_count[bits] = 0; } tree[s.heap[s.heap_max] * 2 + 1] = 0; for (h = s.heap_max + 1; h < HEAP_SIZE; h++) { n = s.heap[h]; bits = tree[tree[n * 2 + 1] * 2 + 1] + 1; if (bits > max_length) { bits = max_length; overflow++; } tree[n * 2 + 1] = bits; if (n > max_code) { continue; } s.bl_count[bits]++; xbits = 0; if (n >= base) { xbits = extra[n - base]; } f = tree[n * 2]; s.opt_len += f * (bits + xbits); if (has_stree) { s.static_len += f * (stree[n * 2 + 1] + xbits); } } if (overflow === 0) { return; } do { bits = max_length - 1; while (s.bl_count[bits] === 0) { bits--; } s.bl_count[bits]--; s.bl_count[bits + 1] += 2; s.bl_count[max_length]--; overflow -= 2; } while (overflow > 0); for (bits = max_length; bits !== 0; bits--) { n = s.bl_count[bits]; while (n !== 0) { m = s.heap[--h]; if (m > max_code) { continue; } if (tree[m * 2 + 1] !== bits) { s.opt_len += (bits - tree[m * 2 + 1]) * tree[m * 2]; tree[m * 2 + 1] = bits; } n--; } } }; var gen_codes = (tree, max_code, bl_count) => { const next_code = new Array(MAX_BITS + 1); let code = 0; let bits; let n; for (bits = 1; bits <= MAX_BITS; bits++) { code = code + bl_count[bits - 1] << 1; next_code[bits] = code; } for (n = 0; n <= max_code; n++) { let len = tree[n * 2 + 1]; if (len === 0) { continue; } tree[n * 2] = bi_reverse(next_code[len]++, len); } }; var tr_static_init = () => { let n; let bits; let length; let code; let dist; const bl_count = new Array(MAX_BITS + 1); length = 0; for (code = 0; code < LENGTH_CODES - 1; code++) { base_length[code] = length; for (n = 0; n < 1 << extra_lbits[code]; n++) { _length_code[length++] = code; } } _length_code[length - 1] = code; dist = 0; for (code = 0; code < 16; code++) { base_dist[code] = dist; for (n = 0; n < 1 << extra_dbits[code]; n++) { _dist_code[dist++] = code; } } dist >>= 7; for (; code < D_CODES; code++) { base_dist[code] = dist << 7; for (n = 0; n < 1 << extra_dbits[code] - 7; n++) { _dist_code[256 + dist++] = code; } } for (bits = 0; bits <= MAX_BITS; bits++) { bl_count[bits] = 0; } n = 0; while (n <= 143) { static_ltree[n * 2 + 1] = 8; n++; bl_count[8]++; } while (n <= 255) { static_ltree[n * 2 + 1] = 9; n++; bl_count[9]++; } while (n <= 279) { static_ltree[n * 2 + 1] = 7; n++; bl_count[7]++; } while (n <= 287) { static_ltree[n * 2 + 1] = 8; n++; bl_count[8]++; } gen_codes(static_ltree, L_CODES + 1, bl_count); for (n = 0; n < D_CODES; n++) { static_dtree[n * 2 + 1] = 5; static_dtree[n * 2] = bi_reverse(n, 5); } static_l_desc = new StaticTreeDesc(static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS); static_d_desc = new StaticTreeDesc(static_dtree, extra_dbits, 0, D_CODES, MAX_BITS); static_bl_desc = new StaticTreeDesc(new Array(0), extra_blbits, 0, BL_CODES, MAX_BL_BITS); }; var init_block = (s) => { let n; for (n = 0; n < L_CODES; n++) { s.dyn_ltree[n * 2] = 0; } for (n = 0; n < D_CODES; n++) { s.dyn_dtree[n * 2] = 0; } for (n = 0; n < BL_CODES; n++) { s.bl_tree[n * 2] = 0; } s.dyn_ltree[END_BLOCK * 2] = 1; s.opt_len = s.static_len = 0; s.sym_next = s.matches = 0; }; var bi_windup = (s) => { if (s.bi_valid > 8) { put_short(s, s.bi_buf); } else if (s.bi_valid > 0) { s.pending_buf[s.pending++] = s.bi_buf; } s.bi_buf = 0; s.bi_valid = 0; }; var smaller = (tree, n, m, depth) => { const _n2 = n * 2; const _m2 = m * 2; return tree[_n2] < tree[_m2] || tree[_n2] === tree[_m2] && depth[n] <= depth[m]; }; var pqdownheap = (s, tree, k) => { const v = s.heap[k]; let j = k << 1; while (j <= s.heap_len) { if (j < s.heap_len && smaller(tree, s.heap[j + 1], s.heap[j], s.depth)) { j++; } if (smaller(tree, v, s.heap[j], s.depth)) { break; } s.heap[k] = s.heap[j]; k = j; j <<= 1; } s.heap[k] = v; }; var compress_block = (s, ltree, dtree) => { let dist; let lc; let sx = 0; let code; let extra; if (s.sym_next !== 0) { do { dist = s.pending_buf[s.sym_buf + sx++] & 255; dist += (s.pending_buf[s.sym_buf + sx++] & 255) << 8; lc = s.pending_buf[s.sym_buf + sx++]; if (dist === 0) { send_code(s, lc, ltree); } else { code = _length_code[lc]; send_code(s, code + LITERALS + 1, ltree); extra = extra_lbits[code]; if (extra !== 0) { lc -= base_length[code]; send_bits(s, lc, extra); } dist--; code = d_code(dist); send_code(s, code, dtree); extra = extra_dbits[code]; if (extra !== 0) { dist -= base_dist[code]; send_bits(s, dist, extra); } } } while (sx < s.sym_next); } send_code(s, END_BLOCK, ltree); }; var build_tree = (s, desc) => { const tree = desc.dyn_tree; const stree = desc.stat_desc.static_tree; const has_stree = desc.stat_desc.has_stree; const elems = desc.stat_desc.elems; let n, m; let max_code = -1; let node; s.heap_len = 0; s.heap_max = HEAP_SIZE; for (n = 0; n < elems; n++) { if (tree[n * 2] !== 0) { s.heap[++s.heap_len] = max_code = n; s.depth[n] = 0; } else { tree[n * 2 + 1] = 0; } } while (s.heap_len < 2) { node = s.heap[++s.heap_len] = max_code < 2 ? ++max_code : 0; tree[node * 2] = 1; s.depth[node] = 0; s.opt_len--; if (has_stree) { s.static_len -= stree[node * 2 + 1]; } } desc.max_code = max_code; for (n = s.heap_len >> 1; n >= 1; n--) { pqdownheap(s, tree, n); } node = elems; do { n = s.heap[ 1 /*SMALLEST*/ ]; s.heap[ 1 /*SMALLEST*/ ] = s.heap[s.heap_len--]; pqdownheap( s, tree, 1 /*SMALLEST*/ ); m = s.heap[ 1 /*SMALLEST*/ ]; s.heap[--s.heap_max] = n; s.heap[--s.heap_max] = m; tree[node * 2] = tree[n * 2] + tree[m * 2]; s.depth[node] = (s.depth[n] >= s.depth[m] ? s.depth[n] : s.depth[m]) + 1; tree[n * 2 + 1] = tree[m * 2 + 1] = node; s.heap[ 1 /*SMALLEST*/ ] = node++; pqdownheap( s, tree, 1 /*SMALLEST*/ ); } while (s.heap_len >= 2); s.heap[--s.heap_max] = s.heap[ 1 /*SMALLEST*/ ]; gen_bitlen(s, desc); gen_codes(tree, max_code, s.bl_count); }; var scan_tree = (s, tree, max_code) => { let n; let prevlen = -1; let curlen; let nextlen = tree[0 * 2 + 1]; let count = 0; let max_count = 7; let min_count = 4; if (nextlen === 0) { max_count = 138; min_count = 3; } tree[(max_code + 1) * 2 + 1] = 65535; for (n = 0; n <= max_code; n++) { curlen = nextlen; nextlen = tree[(n + 1) * 2 + 1]; if (++count < max_count && curlen === nextlen) { continue; } else if (count < min_count) { s.bl_tree[curlen * 2] += count; } else if (curlen !== 0) { if (curlen !== prevlen) { s.bl_tree[curlen * 2]++; } s.bl_tree[REP_3_6 * 2]++; } else if (count <= 10) { s.bl_tree[REPZ_3_10 * 2]++; } else { s.bl_tree[REPZ_11_138 * 2]++; } count = 0; prevlen = curlen; if (nextlen === 0) { max_count = 138; min_count = 3; } else if (curlen === nextlen) { max_count = 6; min_count = 3; } else { max_count = 7; min_count = 4; } } }; var send_tree = (s, tree, max_code) => { let n; let prevlen = -1; let curlen; let nextlen = tree[0 * 2 + 1]; let count = 0; let max_count = 7; let min_count = 4; if (nextlen === 0) { max_count = 138; min_count = 3; } for (n = 0; n <= max_code; n++) { curlen = nextlen; nextlen = tree[(n + 1) * 2 + 1]; if (++count < max_count && curlen === nextlen) { continue; } else if (count < min_count) { do { send_code(s, curlen, s.bl_tree); } while (--count !== 0); } else if (curlen !== 0) { if (curlen !== prevlen) { send_code(s, curlen, s.bl_tree); count--; } send_code(s, REP_3_6, s.bl_tree); send_bits(s, count - 3, 2); } else if (count <= 10) { send_code(s, REPZ_3_10, s.bl_tree); send_bits(s, count - 3, 3); } else { send_code(s, REPZ_11_138, s.bl_tree); send_bits(s, count - 11, 7); } count = 0; prevlen = curlen; if (nextlen === 0) { max_count = 138; min_count = 3; } else if (curlen === nextlen) { max_count = 6; min_count = 3; } else { max_count = 7; min_count = 4; } } }; var build_bl_tree = (s) => { let max_blindex; scan_tree(s, s.dyn_ltree, s.l_desc.max_code); scan_tree(s, s.dyn_dtree, s.d_desc.max_code); build_tree(s, s.bl_desc); for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { if (s.bl_tree[bl_order[max_blindex] * 2 + 1] !== 0) { break; } } s.opt_len += 3 * (max_blindex + 1) + 5 + 5 + 4; return max_blindex; }; var send_all_trees = (s, lcodes, dcodes, blcodes) => { let rank; send_bits(s, lcodes - 257, 5); send_bits(s, dcodes - 1, 5); send_bits(s, blcodes - 4, 4); for (rank = 0; rank < blcodes; rank++) { send_bits(s, s.bl_tree[bl_order[rank] * 2 + 1], 3); } send_tree(s, s.dyn_ltree, lcodes - 1); send_tree(s, s.dyn_dtree, dcodes - 1); }; var detect_data_type = (s) => { let block_mask = 4093624447; let n; for (n = 0; n <= 31; n++, block_mask >>>= 1) { if (block_mask & 1 && s.dyn_ltree[n * 2] !== 0) { return Z_BINARY; } } if (s.dyn_ltree[9 * 2] !== 0 || s.dyn_ltree[10 * 2] !== 0 || s.dyn_ltree[13 * 2] !== 0) { return Z_TEXT; } for (n = 32; n < LITERALS; n++) { if (s.dyn_ltree[n * 2] !== 0) { return Z_TEXT; } } return Z_BINARY; }; var static_init_done = false; var _tr_init = (s) => { if (!static_init_done) { tr_static_init(); static_init_done = true; } s.l_desc = new TreeDesc(s.dyn_ltree, static_l_desc); s.d_desc = new TreeDesc(s.dyn_dtree, static_d_desc); s.bl_desc = new TreeDesc(s.bl_tree, static_bl_desc); s.bi_buf = 0; s.bi_valid = 0; init_block(s); }; var _tr_stored_block = (s, buf, stored_len, last) => { send_bits(s, (STORED_BLOCK << 1) + (last ? 1 : 0), 3); bi_windup(s); put_short(s, stored_len); put_short(s, ~stored_len); if (stored_len) { s.pending_buf.set(s.window.subarray(buf, buf + stored_len), s.pending); } s.pending += stored_len; }; var _tr_align = (s) => { send_bits(s, STATIC_TREES << 1, 3); send_code(s, END_BLOCK, static_ltree); bi_flush(s); }; var _tr_flush_block = (s, buf, stored_len, last) => { let opt_lenb, static_lenb; let max_blindex = 0; if (s.level > 0) { if (s.strm.data_type === Z_UNKNOWN) { s.strm.data_type = detect_data_type(s); } build_tree(s, s.l_desc); build_tree(s, s.d_desc); max_blindex = build_bl_tree(s); opt_lenb = s.opt_len + 3 + 7 >>> 3; static_lenb = s.static_len + 3 + 7 >>> 3; if (static_lenb <= opt_lenb) { opt_lenb = static_lenb; } } else { opt_lenb = static_lenb = stored_len + 5; } if (stored_len + 4 <= opt_lenb && buf !== -1) { _tr_stored_block(s, buf, stored_len, last); } else if (s.strategy === Z_FIXED || static_lenb === opt_lenb) { send_bits(s, (STATIC_TREES << 1) + (last ? 1 : 0), 3); compress_block(s, static_ltree, static_dtree); } else { send_bits(s, (DYN_TREES << 1) + (last ? 1 : 0), 3); send_all_trees(s, s.l_desc.max_code + 1, s.d_desc.max_code + 1, max_blindex + 1); compress_block(s, s.dyn_ltree, s.dyn_dtree); } init_block(s); if (last) { bi_windup(s); } }; var _tr_tally = (s, dist, lc) => { s.pending_buf[s.sym_buf + s.sym_next++] = dist; s.pending_buf[s.sym_buf + s.sym_next++] = dist >> 8; s.pending_buf[s.sym_buf + s.sym_next++] = lc; if (dist === 0) { s.dyn_ltree[lc * 2]++; } else { s.matches++; dist--; s.dyn_ltree[(_length_code[lc] + LITERALS + 1) * 2]++; s.dyn_dtree[d_code(dist) * 2]++; } return s.sym_next === s.sym_end; }; module2.exports._tr_init = _tr_init; module2.exports._tr_stored_block = _tr_stored_block; module2.exports._tr_flush_block = _tr_flush_block; module2.exports._tr_tally = _tr_tally; module2.exports._tr_align = _tr_align; } }); // node_modules/pako/lib/zlib/adler32.js var require_adler32 = __commonJS({ "node_modules/pako/lib/zlib/adler32.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var adler32 = (adler, buf, len, pos) => { let s1 = adler & 65535 | 0, s2 = adler >>> 16 & 65535 | 0, n = 0; while (len !== 0) { n = len > 2e3 ? 2e3 : len; len -= n; do { s1 = s1 + buf[pos++] | 0; s2 = s2 + s1 | 0; } while (--n); s1 %= 65521; s2 %= 65521; } return s1 | s2 << 16 | 0; }; module2.exports = adler32; } }); // node_modules/pako/lib/zlib/crc32.js var require_crc32 = __commonJS({ "node_modules/pako/lib/zlib/crc32.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var makeTable = () => { let c, table = []; for (var n = 0; n < 256; n++) { c = n; for (var k = 0; k < 8; k++) { c = c & 1 ? 3988292384 ^ c >>> 1 : c >>> 1; } table[n] = c; } return table; }; var crcTable = new Uint32Array(makeTable()); var crc32 = (crc, buf, len, pos) => { const t = crcTable; const end = pos + len; crc ^= -1; for (let i = pos; i < end; i++) { crc = crc >>> 8 ^ t[(crc ^ buf[i]) & 255]; } return crc ^ -1; }; module2.exports = crc32; } }); // node_modules/pako/lib/zlib/messages.js var require_messages = __commonJS({ "node_modules/pako/lib/zlib/messages.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { 2: "need dictionary", /* Z_NEED_DICT 2 */ 1: "stream end", /* Z_STREAM_END 1 */ 0: "", /* Z_OK 0 */ "-1": "file error", /* Z_ERRNO (-1) */ "-2": "stream error", /* Z_STREAM_ERROR (-2) */ "-3": "data error", /* Z_DATA_ERROR (-3) */ "-4": "insufficient memory", /* Z_MEM_ERROR (-4) */ "-5": "buffer error", /* Z_BUF_ERROR (-5) */ "-6": "incompatible version" /* Z_VERSION_ERROR (-6) */ }; } }); // node_modules/pako/lib/zlib/constants.js var require_constants2 = __commonJS({ "node_modules/pako/lib/zlib/constants.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = { /* Allowed flush values; see deflate() and inflate() below for details */ Z_NO_FLUSH: 0, Z_PARTIAL_FLUSH: 1, Z_SYNC_FLUSH: 2, Z_FULL_FLUSH: 3, Z_FINISH: 4, Z_BLOCK: 5, Z_TREES: 6, /* Return codes for the compression/decompression functions. Negative values * are errors, positive values are used for special but normal events. */ Z_OK: 0, Z_STREAM_END: 1, Z_NEED_DICT: 2, Z_ERRNO: -1, Z_STREAM_ERROR: -2, Z_DATA_ERROR: -3, Z_MEM_ERROR: -4, Z_BUF_ERROR: -5, //Z_VERSION_ERROR: -6, /* compression levels */ Z_NO_COMPRESSION: 0, Z_BEST_SPEED: 1, Z_BEST_COMPRESSION: 9, Z_DEFAULT_COMPRESSION: -1, Z_FILTERED: 1, Z_HUFFMAN_ONLY: 2, Z_RLE: 3, Z_FIXED: 4, Z_DEFAULT_STRATEGY: 0, /* Possible values of the data_type field (though see inflate()) */ Z_BINARY: 0, Z_TEXT: 1, //Z_ASCII: 1, // = Z_TEXT (deprecated) Z_UNKNOWN: 2, /* The deflate compression method */ Z_DEFLATED: 8 //Z_NULL: null // Use -1 or null inline, depending on var type }; } }); // node_modules/pako/lib/zlib/deflate.js var require_deflate = __commonJS({ "node_modules/pako/lib/zlib/deflate.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var { _tr_init, _tr_stored_block, _tr_flush_block, _tr_tally, _tr_align } = require_trees(); var adler32 = require_adler32(); var crc32 = require_crc32(); var msg = require_messages(); var { Z_NO_FLUSH, Z_PARTIAL_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_BLOCK, Z_OK, Z_STREAM_END, Z_STREAM_ERROR, Z_DATA_ERROR, Z_BUF_ERROR, Z_DEFAULT_COMPRESSION, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE, Z_FIXED, Z_DEFAULT_STRATEGY, Z_UNKNOWN, Z_DEFLATED } = require_constants2(); var MAX_MEM_LEVEL = 9; var MAX_WBITS = 15; var DEF_MEM_LEVEL = 8; var LENGTH_CODES = 29; var LITERALS = 256; var L_CODES = LITERALS + 1 + LENGTH_CODES; var D_CODES = 30; var BL_CODES = 19; var HEAP_SIZE = 2 * L_CODES + 1; var MAX_BITS = 15; var MIN_MATCH = 3; var MAX_MATCH = 258; var MIN_LOOKAHEAD = MAX_MATCH + MIN_MATCH + 1; var PRESET_DICT = 32; var INIT_STATE = 42; var GZIP_STATE = 57; var EXTRA_STATE = 69; var NAME_STATE = 73; var COMMENT_STATE = 91; var HCRC_STATE = 103; var BUSY_STATE = 113; var FINISH_STATE = 666; var BS_NEED_MORE = 1; var BS_BLOCK_DONE = 2; var BS_FINISH_STARTED = 3; var BS_FINISH_DONE = 4; var OS_CODE = 3; var err = (strm, errorCode) => { strm.msg = msg[errorCode]; return errorCode; }; var rank = (f) => { return f * 2 - (f > 4 ? 9 : 0); }; var zero = (buf) => { let len = buf.length; while (--len >= 0) { buf[len] = 0; } }; var slide_hash = (s) => { let n, m; let p; let wsize = s.w_size; n = s.hash_size; p = n; do { m = s.head[--p]; s.head[p] = m >= wsize ? m - wsize : 0; } while (--n); n = wsize; p = n; do { m = s.prev[--p]; s.prev[p] = m >= wsize ? m - wsize : 0; } while (--n); }; var HASH = (s, prev, data) => (prev << s.hash_shift ^ data) & s.hash_mask; var INSERT_STRING = (s, str) => { let h; if (s.legacy_hash) { h = s.ins_h = HASH(s, s.ins_h, s.window[str + MIN_MATCH - 1]); } else { const w = s.window; const value = w[str] | w[str + 1] << 8 | w[str + 2] << 16 | w[str + 3] << 24; h = s.ins_h = Math.imul(value, 66521) + 66521 >>> 16 & s.hash_mask; } const hash_head = s.prev[str & s.w_mask] = s.head[h]; s.head[h] = str; return hash_head; }; var flush_pending = (strm) => { const s = strm.state; let len = s.pending; if (len > strm.avail_out) { len = strm.avail_out; } if (len === 0) { return; } strm.output.set(s.pending_buf.subarray(s.pending_out, s.pending_out + len), strm.next_out); strm.next_out += len; s.pending_out += len; strm.total_out += len; strm.avail_out -= len; s.pending -= len; if (s.pending === 0) { s.pending_out = 0; } }; var flush_block_only = (s, last) => { _tr_flush_block(s, s.block_start >= 0 ? s.block_start : -1, s.strstart - s.block_start, last); s.block_start = s.strstart; flush_pending(s.strm); }; var put_byte = (s, b) => { s.pending_buf[s.pending++] = b; }; var putShortMSB = (s, b) => { s.pending_buf[s.pending++] = b >>> 8 & 255; s.pending_buf[s.pending++] = b & 255; }; var read_buf = (strm, buf, start, size) => { let len = strm.avail_in; if (len > size) { len = size; } if (len === 0) { return 0; } strm.avail_in -= len; buf.set(strm.input.subarray(strm.next_in, strm.next_in + len), start); if (strm.state.wrap === 1) { strm.adler = adler32(strm.adler, buf, len, start); } else if (strm.state.wrap === 2) { strm.adler = crc32(strm.adler, buf, len, start); } strm.next_in += len; strm.total_in += len; return len; }; var longest_match = (s, cur_match) => { let chain_length = s.max_chain_length; let scan = s.strstart; let match; let len; let best_len = s.prev_length; let nice_match = s.nice_match; const limit = s.strstart > s.w_size - MIN_LOOKAHEAD ? s.strstart - (s.w_size - MIN_LOOKAHEAD) : 0; const _win = s.window; const wmask = s.w_mask; const prev = s.prev; const strend = s.strstart + MAX_MATCH; let scan_end1 = _win[scan + best_len - 1]; let scan_end = _win[scan + best_len]; if (s.prev_length >= s.good_match) { chain_length >>= 2; } if (nice_match > s.lookahead) { nice_match = s.lookahead; } do { match = cur_match; if (_win[match + best_len] !== scan_end || _win[match + best_len - 1] !== scan_end1 || _win[match] !== _win[scan] || _win[++match] !== _win[scan + 1]) { continue; } scan += 2; match++; do { } while (_win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && _win[++scan] === _win[++match] && scan < strend); len = MAX_MATCH - (strend - scan); scan = strend - MAX_MATCH; if (len > best_len) { s.match_start = cur_match; best_len = len; if (len >= nice_match) { break; } scan_end1 = _win[scan + best_len - 1]; scan_end = _win[scan + best_len]; } } while ((cur_match = prev[cur_match & wmask]) > limit && --chain_length !== 0); if (best_len <= s.lookahead) { return best_len; } return s.lookahead; }; var fill_window = (s) => { const _w_size = s.w_size; let n, more, str; do { more = s.window_size - s.lookahead - s.strstart; if (s.strstart >= _w_size + (_w_size - MIN_LOOKAHEAD)) { s.window.set(s.window.subarray(_w_size, _w_size + _w_size - more), 0); s.match_start -= _w_size; s.strstart -= _w_size; s.block_start -= _w_size; if (s.insert > s.strstart) { s.insert = s.strstart; } slide_hash(s); more += _w_size; } if (s.strm.avail_in === 0) { break; } n = read_buf(s.strm, s.window, s.strstart + s.lookahead, more); s.lookahead += n; if (!s.legacy_hash) { if (s.lookahead + s.insert > MIN_MATCH) { str = s.strstart - s.insert; while (s.insert) { INSERT_STRING(s, str); str++; s.insert--; if (s.lookahead + s.insert <= MIN_MATCH) { break; } } } } else if (s.lookahead + s.insert >= MIN_MATCH) { str = s.strstart - s.insert; s.ins_h = s.window[str]; s.ins_h = HASH(s, s.ins_h, s.window[str + 1]); while (s.insert) { INSERT_STRING(s, str); str++; s.insert--; if (s.lookahead + s.insert < MIN_MATCH) { break; } } } } while (s.lookahead < MIN_LOOKAHEAD && s.strm.avail_in !== 0); }; var deflate_stored = (s, flush) => { let min_block = s.pending_buf_size - 5 > s.w_size ? s.w_size : s.pending_buf_size - 5; let len, left, have, last = 0; let used = s.strm.avail_in; do { len = 65535; have = s.bi_valid + 42 >> 3; if (s.strm.avail_out < have) { break; } have = s.strm.avail_out - have; left = s.strstart - s.block_start; if (len > left + s.strm.avail_in) { len = left + s.strm.avail_in; } if (len > have) { len = have; } if (len < min_block && (len === 0 && flush !== Z_FINISH || flush === Z_NO_FLUSH || len !== left + s.strm.avail_in)) { break; } last = flush === Z_FINISH && len === left + s.strm.avail_in ? 1 : 0; _tr_stored_block(s, 0, 0, last); s.pending_buf[s.pending - 4] = len; s.pending_buf[s.pending - 3] = len >> 8; s.pending_buf[s.pending - 2] = ~len; s.pending_buf[s.pending - 1] = ~len >> 8; flush_pending(s.strm); if (left) { if (left > len) { left = len; } s.strm.output.set(s.window.subarray(s.block_start, s.block_start + left), s.strm.next_out); s.strm.next_out += left; s.strm.avail_out -= left; s.strm.total_out += left; s.block_start += left; len -= left; } if (len) { read_buf(s.strm, s.strm.output, s.strm.next_out, len); s.strm.next_out += len; s.strm.avail_out -= len; s.strm.total_out += len; } } while (last === 0); used -= s.strm.avail_in; if (used) { if (used >= s.w_size) { s.matches = 2; s.window.set(s.strm.input.subarray(s.strm.next_in - s.w_size, s.strm.next_in), 0); s.strstart = s.w_size; s.insert = s.strstart; } else { if (s.window_size - s.strstart <= used) { s.strstart -= s.w_size; s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0); if (s.matches < 2) { s.matches++; } if (s.insert > s.strstart) { s.insert = s.strstart; } } s.window.set(s.strm.input.subarray(s.strm.next_in - used, s.strm.next_in), s.strstart); s.strstart += used; s.insert += used > s.w_size - s.insert ? s.w_size - s.insert : used; } s.block_start = s.strstart; } if (s.high_water < s.strstart) { s.high_water = s.strstart; } if (last) { return BS_FINISH_DONE; } if (flush !== Z_NO_FLUSH && flush !== Z_FINISH && s.strm.avail_in === 0 && s.strstart === s.block_start) { return BS_BLOCK_DONE; } have = s.window_size - s.strstart; if (s.strm.avail_in > have && s.block_start >= s.w_size) { s.block_start -= s.w_size; s.strstart -= s.w_size; s.window.set(s.window.subarray(s.w_size, s.w_size + s.strstart), 0); if (s.matches < 2) { s.matches++; } have += s.w_size; if (s.insert > s.strstart) { s.insert = s.strstart; } } if (have > s.strm.avail_in) { have = s.strm.avail_in; } if (have) { read_buf(s.strm, s.window, s.strstart, have); s.strstart += have; s.insert += have > s.w_size - s.insert ? s.w_size - s.insert : have; } if (s.high_water < s.strstart) { s.high_water = s.strstart; } have = s.bi_valid + 42 >> 3; have = s.pending_buf_size - have > 65535 ? 65535 : s.pending_buf_size - have; min_block = have > s.w_size ? s.w_size : have; left = s.strstart - s.block_start; if (left >= min_block || (left || flush === Z_FINISH) && flush !== Z_NO_FLUSH && s.strm.avail_in === 0 && left <= have) { len = left > have ? have : left; last = flush === Z_FINISH && s.strm.avail_in === 0 && len === left ? 1 : 0; _tr_stored_block(s, s.block_start, len, last); s.block_start += len; flush_pending(s.strm); } return last ? BS_FINISH_STARTED : BS_NEED_MORE; }; var deflate_fast = (s, flush) => { let hash_head; let bflush; for (; ; ) { if (s.lookahead < MIN_LOOKAHEAD) { fill_window(s); if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { return BS_NEED_MORE; } if (s.lookahead === 0) { break; } } hash_head = 0; if (s.lookahead >= MIN_MATCH) { hash_head = INSERT_STRING(s, s.strstart); } if (hash_head !== 0 && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { s.match_length = longest_match(s, hash_head); } if (s.match_length >= MIN_MATCH) { bflush = _tr_tally(s, s.strstart - s.match_start, s.match_length - MIN_MATCH); s.lookahead -= s.match_length; if (s.match_length <= s.max_lazy_match && s.lookahead >= MIN_MATCH) { s.match_length--; do { s.strstart++; hash_head = INSERT_STRING(s, s.strstart); } while (--s.match_length !== 0); s.strstart++; } else { s.strstart += s.match_length; s.match_length = 0; if (s.legacy_hash) { s.ins_h = s.window[s.strstart]; s.ins_h = HASH(s, s.ins_h, s.window[s.strstart + 1]); } } } else { bflush = _tr_tally(s, 0, s.window[s.strstart]); s.lookahead--; s.strstart++; } if (bflush) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } } s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; if (flush === Z_FINISH) { flush_block_only(s, true); if (s.strm.avail_out === 0) { return BS_FINISH_STARTED; } return BS_FINISH_DONE; } if (s.sym_next) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } return BS_BLOCK_DONE; }; var deflate_slow = (s, flush) => { let hash_head; let bflush; let max_insert; for (; ; ) { if (s.lookahead < MIN_LOOKAHEAD) { fill_window(s); if (s.lookahead < MIN_LOOKAHEAD && flush === Z_NO_FLUSH) { return BS_NEED_MORE; } if (s.lookahead === 0) { break; } } hash_head = 0; if (s.lookahead >= MIN_MATCH) { hash_head = INSERT_STRING(s, s.strstart); } s.prev_length = s.match_length; s.prev_match = s.match_start; s.match_length = MIN_MATCH - 1; if (hash_head !== 0 && s.prev_length < s.max_lazy_match && s.strstart - hash_head <= s.w_size - MIN_LOOKAHEAD) { s.match_length = longest_match(s, hash_head); if (s.match_length <= 5 && (s.strategy === Z_FILTERED || s.match_length === MIN_MATCH && s.strstart - s.match_start > 4096)) { s.match_length = MIN_MATCH - 1; } } if (s.prev_length >= MIN_MATCH && s.match_length <= s.prev_length) { max_insert = s.strstart + s.lookahead - MIN_MATCH; bflush = _tr_tally(s, s.strstart - 1 - s.prev_match, s.prev_length - MIN_MATCH); s.lookahead -= s.prev_length - 1; s.prev_length -= 2; do { if (++s.strstart <= max_insert) { hash_head = INSERT_STRING(s, s.strstart); } } while (--s.prev_length !== 0); s.match_available = 0; s.match_length = MIN_MATCH - 1; s.strstart++; if (bflush) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } } else if (s.match_available) { bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); if (bflush) { flush_block_only(s, false); } s.strstart++; s.lookahead--; if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } else { s.match_available = 1; s.strstart++; s.lookahead--; } } if (s.match_available) { bflush = _tr_tally(s, 0, s.window[s.strstart - 1]); s.match_available = 0; } s.insert = s.strstart < MIN_MATCH - 1 ? s.strstart : MIN_MATCH - 1; if (flush === Z_FINISH) { flush_block_only(s, true); if (s.strm.avail_out === 0) { return BS_FINISH_STARTED; } return BS_FINISH_DONE; } if (s.sym_next) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } return BS_BLOCK_DONE; }; var deflate_rle = (s, flush) => { let bflush; let prev; let scan, strend; const _win = s.window; for (; ; ) { if (s.lookahead <= MAX_MATCH) { fill_window(s); if (s.lookahead <= MAX_MATCH && flush === Z_NO_FLUSH) { return BS_NEED_MORE; } if (s.lookahead === 0) { break; } } s.match_length = 0; if (s.lookahead >= MIN_MATCH && s.strstart > 0) { scan = s.strstart - 1; prev = _win[scan]; if (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan]) { strend = s.strstart + MAX_MATCH; do { } while (prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && prev === _win[++scan] && scan < strend); s.match_length = MAX_MATCH - (strend - scan); if (s.match_length > s.lookahead) { s.match_length = s.lookahead; } } } if (s.match_length >= MIN_MATCH) { bflush = _tr_tally(s, 1, s.match_length - MIN_MATCH); s.lookahead -= s.match_length; s.strstart += s.match_length; s.match_length = 0; } else { bflush = _tr_tally(s, 0, s.window[s.strstart]); s.lookahead--; s.strstart++; } if (bflush) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } } s.insert = 0; if (flush === Z_FINISH) { flush_block_only(s, true); if (s.strm.avail_out === 0) { return BS_FINISH_STARTED; } return BS_FINISH_DONE; } if (s.sym_next) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } return BS_BLOCK_DONE; }; var deflate_huff = (s, flush) => { let bflush; for (; ; ) { if (s.lookahead === 0) { fill_window(s); if (s.lookahead === 0) { if (flush === Z_NO_FLUSH) { return BS_NEED_MORE; } break; } } s.match_length = 0; bflush = _tr_tally(s, 0, s.window[s.strstart]); s.lookahead--; s.strstart++; if (bflush) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } } s.insert = 0; if (flush === Z_FINISH) { flush_block_only(s, true); if (s.strm.avail_out === 0) { return BS_FINISH_STARTED; } return BS_FINISH_DONE; } if (s.sym_next) { flush_block_only(s, false); if (s.strm.avail_out === 0) { return BS_NEED_MORE; } } return BS_BLOCK_DONE; }; function Config(good_length, max_lazy, nice_length, max_chain, func) { this.good_length = good_length; this.max_lazy = max_lazy; this.nice_length = nice_length; this.max_chain = max_chain; this.func = func; } var configuration_table = [ /* good lazy nice chain */ new Config(0, 0, 0, 0, deflate_stored), /* 0 store only */ new Config(4, 4, 8, 4, deflate_fast), /* 1 max speed, no lazy matches */ new Config(4, 5, 16, 8, deflate_fast), /* 2 */ new Config(4, 6, 32, 32, deflate_fast), /* 3 */ new Config(4, 4, 16, 16, deflate_slow), /* 4 lazy matches */ new Config(8, 16, 32, 32, deflate_slow), /* 5 */ new Config(8, 16, 128, 128, deflate_slow), /* 6 */ new Config(8, 32, 128, 256, deflate_slow), /* 7 */ new Config(32, 128, 258, 1024, deflate_slow), /* 8 */ new Config(32, 258, 258, 4096, deflate_slow) /* 9 max compression */ ]; var lm_init = (s) => { s.window_size = 2 * s.w_size; zero(s.head); s.max_lazy_match = configuration_table[s.level].max_lazy; s.good_match = configuration_table[s.level].good_length; s.nice_match = configuration_table[s.level].nice_length; s.max_chain_length = configuration_table[s.level].max_chain; s.strstart = 0; s.block_start = 0; s.lookahead = 0; s.insert = 0; s.match_length = s.prev_length = MIN_MATCH - 1; s.match_available = 0; s.ins_h = 0; }; function DeflateState() { this.strm = null; this.status = 0; this.pending_buf = null; this.pending_buf_size = 0; this.pending_out = 0; this.pending = 0; this.wrap = 0; this.gzhead = null; this.gzindex = 0; this.method = Z_DEFLATED; this.last_flush = -1; this.w_size = 0; this.w_bits = 0; this.w_mask = 0; this.window = null; this.window_size = 0; this.prev = null; this.head = null; this.ins_h = 0; this.legacy_hash = 0; this.hash_size = 0; this.hash_bits = 0; this.hash_mask = 0; this.hash_shift = 0; this.block_start = 0; this.match_length = 0; this.prev_match = 0; this.match_available = 0; this.strstart = 0; this.match_start = 0; this.lookahead = 0; this.prev_length = 0; this.max_chain_length = 0; this.max_lazy_match = 0; this.level = 0; this.strategy = 0; this.good_match = 0; this.nice_match = 0; this.dyn_ltree = new Uint16Array(HEAP_SIZE * 2); this.dyn_dtree = new Uint16Array((2 * D_CODES + 1) * 2); this.bl_tree = new Uint16Array((2 * BL_CODES + 1) * 2); zero(this.dyn_ltree); zero(this.dyn_dtree); zero(this.bl_tree); this.l_desc = null; this.d_desc = null; this.bl_desc = null; this.bl_count = new Uint16Array(MAX_BITS + 1); this.heap = new Uint16Array(2 * L_CODES + 1); zero(this.heap); this.heap_len = 0; this.heap_max = 0; this.depth = new Uint16Array(2 * L_CODES + 1); zero(this.depth); this.sym_buf = 0; this.lit_bufsize = 0; this.sym_next = 0; this.sym_end = 0; this.opt_len = 0; this.static_len = 0; this.matches = 0; this.insert = 0; this.bi_buf = 0; this.bi_valid = 0; } var deflateStateCheck = (strm) => { if (!strm) { return 1; } const s = strm.state; if (!s || s.strm !== strm || s.status !== INIT_STATE && //#ifdef GZIP s.status !== GZIP_STATE && //#endif s.status !== EXTRA_STATE && s.status !== NAME_STATE && s.status !== COMMENT_STATE && s.status !== HCRC_STATE && s.status !== BUSY_STATE && s.status !== FINISH_STATE) { return 1; } return 0; }; var deflateResetKeep = (strm) => { if (deflateStateCheck(strm)) { return err(strm, Z_STREAM_ERROR); } strm.total_in = strm.total_out = 0; strm.data_type = Z_UNKNOWN; const s = strm.state; s.pending = 0; s.pending_out = 0; if (s.wrap < 0) { s.wrap = -s.wrap; } s.status = //#ifdef GZIP s.wrap === 2 ? GZIP_STATE : ( //#endif s.wrap ? INIT_STATE : BUSY_STATE ); strm.adler = s.wrap === 2 ? 0 : 1; s.last_flush = -2; _tr_init(s); return Z_OK; }; var deflateReset = (strm) => { const ret = deflateResetKeep(strm); if (ret === Z_OK) { lm_init(strm.state); } return ret; }; var deflateSetHeader = (strm, head) => { if (deflateStateCheck(strm) || strm.state.wrap !== 2) { return Z_STREAM_ERROR; } strm.state.gzhead = head; return Z_OK; }; var deflateInit2 = (strm, level, method, windowBits, memLevel, strategy, legacyHash) => { if (!strm) { return Z_STREAM_ERROR; } let wrap = 1; if (level === Z_DEFAULT_COMPRESSION) { level = 6; } if (windowBits < 0) { wrap = 0; windowBits = -windowBits; } else if (windowBits > 15) { wrap = 2; windowBits -= 16; } if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method !== Z_DEFLATED || windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED || windowBits === 8 && wrap !== 1) { return err(strm, Z_STREAM_ERROR); } if (windowBits === 8) { windowBits = 9; } const s = new DeflateState(); strm.state = s; s.strm = strm; s.status = INIT_STATE; s.wrap = wrap; s.gzhead = null; s.w_bits = windowBits; s.w_size = 1 << s.w_bits; s.w_mask = s.w_size - 1; s.legacy_hash = legacyHash ? 1 : 0; s.hash_bits = memLevel + 7; if (!s.legacy_hash && s.hash_bits < 15) { s.hash_bits = 15; } s.hash_size = 1 << s.hash_bits; s.hash_mask = s.hash_size - 1; s.hash_shift = ~~((s.hash_bits + MIN_MATCH - 1) / MIN_MATCH); s.window = new Uint8Array(s.w_size * 2); s.head = new Uint16Array(s.hash_size); s.prev = new Uint16Array(s.w_size); s.lit_bufsize = 1 << memLevel + 6; s.pending_buf_size = s.lit_bufsize * 4; s.pending_buf = new Uint8Array(s.pending_buf_size); s.sym_buf = s.lit_bufsize; s.sym_end = (s.lit_bufsize - 1) * 3; s.level = level; s.strategy = strategy; s.method = method; return deflateReset(strm); }; var deflateInit = (strm, level) => { return deflateInit2(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY); }; var deflate = (strm, flush) => { if (deflateStateCheck(strm) || flush > Z_BLOCK || flush < 0) { return strm ? err(strm, Z_STREAM_ERROR) : Z_STREAM_ERROR; } const s = strm.state; if (!strm.output || strm.avail_in !== 0 && !strm.input || s.status === FINISH_STATE && flush !== Z_FINISH) { return err(strm, strm.avail_out === 0 ? Z_BUF_ERROR : Z_STREAM_ERROR); } const old_flush = s.last_flush; s.last_flush = flush; if (s.pending !== 0) { flush_pending(strm); if (strm.avail_out === 0) { s.last_flush = -1; return Z_OK; } } else if (strm.avail_in === 0 && rank(flush) <= rank(old_flush) && flush !== Z_FINISH) { return err(strm, Z_BUF_ERROR); } if (s.status === FINISH_STATE && strm.avail_in !== 0) { return err(strm, Z_BUF_ERROR); } if (s.status === INIT_STATE && s.wrap === 0) { s.status = BUSY_STATE; } if (s.status === INIT_STATE) { let header = Z_DEFLATED + (s.w_bits - 8 << 4) << 8; let level_flags = -1; if (s.strategy >= Z_HUFFMAN_ONLY || s.level < 2) { level_flags = 0; } else if (s.level < 6) { level_flags = 1; } else if (s.level === 6) { level_flags = 2; } else { level_flags = 3; } header |= level_flags << 6; if (s.strstart !== 0) { header |= PRESET_DICT; } header += 31 - header % 31; putShortMSB(s, header); if (s.strstart !== 0) { putShortMSB(s, strm.adler >>> 16); putShortMSB(s, strm.adler & 65535); } strm.adler = 1; s.status = BUSY_STATE; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK; } } if (s.status === GZIP_STATE) { strm.adler = 0; put_byte(s, 31); put_byte(s, 139); put_byte(s, 8); if (!s.gzhead) { put_byte(s, 0); put_byte(s, 0); put_byte(s, 0); put_byte(s, 0); put_byte(s, 0); put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); put_byte(s, OS_CODE); s.status = BUSY_STATE; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK; } } else { put_byte( s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (!s.gzhead.extra ? 0 : 4) + (!s.gzhead.name ? 0 : 8) + (!s.gzhead.comment ? 0 : 16) ); put_byte(s, s.gzhead.time & 255); put_byte(s, s.gzhead.time >> 8 & 255); put_byte(s, s.gzhead.time >> 16 & 255); put_byte(s, s.gzhead.time >> 24 & 255); put_byte(s, s.level === 9 ? 2 : s.strategy >= Z_HUFFMAN_ONLY || s.level < 2 ? 4 : 0); put_byte(s, s.gzhead.os & 255); if (s.gzhead.extra && s.gzhead.extra.length) { put_byte(s, s.gzhead.extra.length & 255); put_byte(s, s.gzhead.extra.length >> 8 & 255); } if (s.gzhead.hcrc) { strm.adler = crc32(strm.adler, s.pending_buf, s.pending, 0); } s.gzindex = 0; s.status = EXTRA_STATE; } } if (s.status === EXTRA_STATE) { if (s.gzhead.extra) { let beg = s.pending; let left = (s.gzhead.extra.length & 65535) - s.gzindex; while (s.pending + left > s.pending_buf_size) { let copy = s.pending_buf_size - s.pending; s.pending_buf.set(s.gzhead.extra.subarray(s.gzindex, s.gzindex + copy), s.pending); s.pending = s.pending_buf_size; if (s.gzhead.hcrc && s.pending > beg) { strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } s.gzindex += copy; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK; } beg = 0; left -= copy; } let gzhead_extra = new Uint8Array(s.gzhead.extra); s.pending_buf.set(gzhead_extra.subarray(s.gzindex, s.gzindex + left), s.pending); s.pending += left; if (s.gzhead.hcrc && s.pending > beg) { strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } s.gzindex = 0; } s.status = NAME_STATE; } if (s.status === NAME_STATE) { if (s.gzhead.name) { let beg = s.pending; let val; do { if (s.pending === s.pending_buf_size) { if (s.gzhead.hcrc && s.pending > beg) { strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK; } beg = 0; } if (s.gzindex < s.gzhead.name.length) { val = s.gzhead.name.charCodeAt(s.gzindex++) & 255; } else { val = 0; } put_byte(s, val); } while (val !== 0); if (s.gzhead.hcrc && s.pending > beg) { strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } s.gzindex = 0; } s.status = COMMENT_STATE; } if (s.status === COMMENT_STATE) { if (s.gzhead.comment) { let beg = s.pending; let val; do { if (s.pending === s.pending_buf_size) { if (s.gzhead.hcrc && s.pending > beg) { strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK; } beg = 0; } if (s.gzindex < s.gzhead.comment.length) { val = s.gzhead.comment.charCodeAt(s.gzindex++) & 255; } else { val = 0; } put_byte(s, val); } while (val !== 0); if (s.gzhead.hcrc && s.pending > beg) { strm.adler = crc32(strm.adler, s.pending_buf, s.pending - beg, beg); } } s.status = HCRC_STATE; } if (s.status === HCRC_STATE) { if (s.gzhead.hcrc) { if (s.pending + 2 > s.pending_buf_size) { flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK; } } put_byte(s, strm.adler & 255); put_byte(s, strm.adler >> 8 & 255); strm.adler = 0; } s.status = BUSY_STATE; flush_pending(strm); if (s.pending !== 0) { s.last_flush = -1; return Z_OK; } } if (strm.avail_in !== 0 || s.lookahead !== 0 || flush !== Z_NO_FLUSH && s.status !== FINISH_STATE) { let bstate = s.level === 0 ? deflate_stored(s, flush) : s.strategy === Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : s.strategy === Z_RLE ? deflate_rle(s, flush) : configuration_table[s.level].func(s, flush); if (bstate === BS_FINISH_STARTED || bstate === BS_FINISH_DONE) { s.status = FINISH_STATE; } if (bstate === BS_NEED_MORE || bstate === BS_FINISH_STARTED) { if (strm.avail_out === 0) { s.last_flush = -1; } return Z_OK; } if (bstate === BS_BLOCK_DONE) { if (flush === Z_PARTIAL_FLUSH) { _tr_align(s); } else if (flush !== Z_BLOCK) { _tr_stored_block(s, 0, 0, false); if (flush === Z_FULL_FLUSH) { zero(s.head); if (s.lookahead === 0) { s.strstart = 0; s.block_start = 0; s.insert = 0; } } } flush_pending(strm); if (strm.avail_out === 0) { s.last_flush = -1; return Z_OK; } } } if (flush !== Z_FINISH) { return Z_OK; } if (s.wrap <= 0) { return Z_STREAM_END; } if (s.wrap === 2) { put_byte(s, strm.adler & 255); put_byte(s, strm.adler >> 8 & 255); put_byte(s, strm.adler >> 16 & 255); put_byte(s, strm.adler >> 24 & 255); put_byte(s, strm.total_in & 255); put_byte(s, strm.total_in >> 8 & 255); put_byte(s, strm.total_in >> 16 & 255); put_byte(s, strm.total_in >> 24 & 255); } else { putShortMSB(s, strm.adler >>> 16); putShortMSB(s, strm.adler & 65535); } flush_pending(strm); if (s.wrap > 0) { s.wrap = -s.wrap; } return s.pending !== 0 ? Z_OK : Z_STREAM_END; }; var deflateEnd = (strm) => { if (deflateStateCheck(strm)) { return Z_STREAM_ERROR; } const status = strm.state.status; strm.state = null; return status === BUSY_STATE ? err(strm, Z_DATA_ERROR) : Z_OK; }; var deflateSetDictionary = (strm, dictionary) => { let dictLength = dictionary.length; if (deflateStateCheck(strm)) { return Z_STREAM_ERROR; } const s = strm.state; const wrap = s.wrap; if (wrap === 2 || wrap === 1 && s.status !== INIT_STATE || s.lookahead) { return Z_STREAM_ERROR; } if (wrap === 1) { strm.adler = adler32(strm.adler, dictionary, dictLength, 0); } s.wrap = 0; if (dictLength >= s.w_size) { if (wrap === 0) { zero(s.head); s.strstart = 0; s.block_start = 0; s.insert = 0; } let tmpDict = new Uint8Array(s.w_size); tmpDict.set(dictionary.subarray(dictLength - s.w_size, dictLength), 0); dictionary = tmpDict; dictLength = s.w_size; } const avail = strm.avail_in; const next = strm.next_in; const input = strm.input; strm.avail_in = dictLength; strm.next_in = 0; strm.input = dictionary; fill_window(s); while (s.lookahead >= MIN_MATCH) { let str = s.strstart; let n = s.lookahead - (MIN_MATCH - 1); do { INSERT_STRING(s, str); str++; } while (--n); s.strstart = str; s.lookahead = MIN_MATCH - 1; fill_window(s); } s.strstart += s.lookahead; s.block_start = s.strstart; s.insert = s.lookahead; s.lookahead = 0; s.match_length = s.prev_length = MIN_MATCH - 1; s.match_available = 0; strm.next_in = next; strm.input = input; strm.avail_in = avail; s.wrap = wrap; return Z_OK; }; module2.exports.deflateInit = deflateInit; module2.exports.deflateInit2 = deflateInit2; module2.exports.deflateReset = deflateReset; module2.exports.deflateResetKeep = deflateResetKeep; module2.exports.deflateSetHeader = deflateSetHeader; module2.exports.deflate = deflate; module2.exports.deflateEnd = deflateEnd; module2.exports.deflateSetDictionary = deflateSetDictionary; module2.exports.deflateInfo = "pako deflate (from Nodeca project)"; } }); // node_modules/pako/lib/utils/common.js var require_common = __commonJS({ "node_modules/pako/lib/utils/common.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var _has = (obj, key) => { return Object.prototype.hasOwnProperty.call(obj, key); }; module2.exports.assign = function(obj) { const sources = Array.prototype.slice.call(arguments, 1); while (sources.length) { const source = sources.shift(); if (!source) { continue; } if (typeof source !== "object") { throw new TypeError(source + "must be non-object"); } for (const p in source) { if (_has(source, p)) { obj[p] = source[p]; } } } return obj; }; module2.exports.flattenChunks = (chunks) => { let len = 0; for (let i = 0, l = chunks.length; i < l; i++) { len += chunks[i].length; } const result = new Uint8Array(len); for (let i = 0, pos = 0, l = chunks.length; i < l; i++) { let chunk = chunks[i]; result.set(chunk, pos); pos += chunk.length; } return result; }; } }); // node_modules/pako/lib/utils/strings.js var require_strings = __commonJS({ "node_modules/pako/lib/utils/strings.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var STR_APPLY_UIA_OK = true; try { String.fromCharCode.apply(null, new Uint8Array(1)); } catch (__) { STR_APPLY_UIA_OK = false; } var _utf8len = new Uint8Array(256); for (let q = 0; q < 256; q++) { _utf8len[q] = q >= 252 ? 6 : q >= 248 ? 5 : q >= 240 ? 4 : q >= 224 ? 3 : q >= 192 ? 2 : 1; } _utf8len[254] = _utf8len[255] = 1; module2.exports.string2buf = (str) => { if (typeof TextEncoder === "function" && TextEncoder.prototype.encode) { return new TextEncoder().encode(str); } let buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0; for (m_pos = 0; m_pos < str_len; m_pos++) { c = str.charCodeAt(m_pos); if ((c & 64512) === 55296 && m_pos + 1 < str_len) { c2 = str.charCodeAt(m_pos + 1); if ((c2 & 64512) === 56320) { c = 65536 + (c - 55296 << 10) + (c2 - 56320); m_pos++; } } buf_len += c < 128 ? 1 : c < 2048 ? 2 : c < 65536 ? 3 : 4; } buf = new Uint8Array(buf_len); for (i = 0, m_pos = 0; i < buf_len; m_pos++) { c = str.charCodeAt(m_pos); if ((c & 64512) === 55296 && m_pos + 1 < str_len) { c2 = str.charCodeAt(m_pos + 1); if ((c2 & 64512) === 56320) { c = 65536 + (c - 55296 << 10) + (c2 - 56320); m_pos++; } } if (c < 128) { buf[i++] = c; } else if (c < 2048) { buf[i++] = 192 | c >>> 6; buf[i++] = 128 | c & 63; } else if (c < 65536) { buf[i++] = 224 | c >>> 12; buf[i++] = 128 | c >>> 6 & 63; buf[i++] = 128 | c & 63; } else { buf[i++] = 240 | c >>> 18; buf[i++] = 128 | c >>> 12 & 63; buf[i++] = 128 | c >>> 6 & 63; buf[i++] = 128 | c & 63; } } return buf; }; var buf2binstring = (buf, len) => { if (len < 65534) { if (buf.subarray && STR_APPLY_UIA_OK) { return String.fromCharCode.apply(null, buf.length === len ? buf : buf.subarray(0, len)); } } let result = ""; for (let i = 0; i < len; i++) { result += String.fromCharCode(buf[i]); } return result; }; module2.exports.buf2string = (buf, max) => { const len = max || buf.length; if (typeof TextDecoder === "function" && TextDecoder.prototype.decode) { return new TextDecoder().decode(buf.subarray(0, max)); } let i, out; const utf16buf = new Array(len * 2); for (out = 0, i = 0; i < len; ) { let c = buf[i++]; if (c < 128) { utf16buf[out++] = c; continue; } let c_len = _utf8len[c]; if (c_len > 4) { utf16buf[out++] = 65533; i += c_len - 1; continue; } c &= c_len === 2 ? 31 : c_len === 3 ? 15 : 7; while (c_len > 1 && i < len) { c = c << 6 | buf[i++] & 63; c_len--; } if (c_len > 1) { utf16buf[out++] = 65533; continue; } if (c < 65536) { utf16buf[out++] = c; } else { c -= 65536; utf16buf[out++] = 55296 | c >> 10 & 1023; utf16buf[out++] = 56320 | c & 1023; } } return buf2binstring(utf16buf, out); }; module2.exports.utf8border = (buf, max) => { max = max || buf.length; if (max > buf.length) { max = buf.length; } let pos = max - 1; while (pos >= 0 && (buf[pos] & 192) === 128) { pos--; } if (pos < 0) { return max; } if (pos === 0) { return max; } return pos + _utf8len[buf[pos]] > max ? pos : max; }; } }); // node_modules/pako/lib/zlib/zstream.js var require_zstream = __commonJS({ "node_modules/pako/lib/zlib/zstream.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); function ZStream() { this.input = null; this.next_in = 0; this.avail_in = 0; this.total_in = 0; this.output = null; this.next_out = 0; this.avail_out = 0; this.total_out = 0; this.msg = ""; this.state = null; this.data_type = 2; this.adler = 0; } module2.exports = ZStream; } }); // node_modules/pako/lib/deflate.js var require_deflate2 = __commonJS({ "node_modules/pako/lib/deflate.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var zlib_deflate = require_deflate(); var utils = require_common(); var strings = require_strings(); var msg = require_messages(); var ZStream = require_zstream(); var toString = Object.prototype.toString; var { Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_FINISH, Z_OK, Z_STREAM_END, Z_DEFAULT_COMPRESSION, Z_DEFAULT_STRATEGY, Z_DEFLATED } = require_constants2(); var defaultOptions2 = { level: Z_DEFAULT_COMPRESSION, method: Z_DEFLATED, chunkSize: 16384, windowBits: 15, memLevel: 8, strategy: Z_DEFAULT_STRATEGY, legacyHash: true }; function Deflate(options) { this.options = utils.assign({}, defaultOptions2, options || {}); let opt = this.options; if (opt.raw && opt.windowBits > 0) { opt.windowBits = -opt.windowBits; } else if (opt.gzip && opt.windowBits > 0 && opt.windowBits < 16) { opt.windowBits += 16; } this.err = 0; this.msg = ""; this.ended = false; this.chunks = []; this.strm = new ZStream(); this.strm.avail_out = 0; let status = zlib_deflate.deflateInit2( this.strm, opt.level, opt.method, opt.windowBits, opt.memLevel, opt.strategy, opt.legacyHash ); if (status !== Z_OK) { throw new Error(msg[status]); } if (opt.header) { zlib_deflate.deflateSetHeader(this.strm, opt.header); } if (opt.dictionary) { let dict; if (typeof opt.dictionary === "string") { dict = strings.string2buf(opt.dictionary); } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") { dict = new Uint8Array(opt.dictionary); } else { dict = opt.dictionary; } status = zlib_deflate.deflateSetDictionary(this.strm, dict); if (status !== Z_OK) { throw new Error(msg[status]); } this._dict_set = true; } } Deflate.prototype.push = function(data, flush_mode) { const strm = this.strm; const chunkSize = this.options.chunkSize; let status, _flush_mode; if (this.ended) { return false; } if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH; if (typeof data === "string") { strm.input = strings.string2buf(data); } else if (toString.call(data) === "[object ArrayBuffer]") { strm.input = new Uint8Array(data); } else { strm.input = data; } strm.next_in = 0; strm.avail_in = strm.input.length; for (; ; ) { if (strm.avail_out === 0) { strm.output = new Uint8Array(chunkSize); strm.next_out = 0; strm.avail_out = chunkSize; } if ((_flush_mode === Z_SYNC_FLUSH || _flush_mode === Z_FULL_FLUSH) && strm.avail_out <= 6) { this.onData(strm.output.subarray(0, strm.next_out)); strm.avail_out = 0; continue; } status = zlib_deflate.deflate(strm, _flush_mode); if (status === Z_STREAM_END) { if (strm.next_out > 0) { this.onData(strm.output.subarray(0, strm.next_out)); } status = zlib_deflate.deflateEnd(this.strm); this.onEnd(status); this.ended = true; return status === Z_OK; } if (strm.avail_out === 0) { this.onData(strm.output); continue; } if (_flush_mode > 0 && strm.next_out > 0) { this.onData(strm.output.subarray(0, strm.next_out)); strm.avail_out = 0; continue; } if (strm.avail_in === 0) break; } return true; }; Deflate.prototype.onData = function(chunk) { this.chunks.push(chunk); }; Deflate.prototype.onEnd = function(status) { if (status === Z_OK) { this.result = utils.flattenChunks(this.chunks); } this.chunks = []; this.err = status; this.msg = this.strm.msg; }; function deflate(input, options) { const deflator = new Deflate(options); deflator.push(input, true); if (deflator.err) { throw deflator.msg || msg[deflator.err]; } return deflator.result; } function deflateRaw(input, options) { options = options || {}; options.raw = true; return deflate(input, options); } function gzip2(input, options) { options = options || {}; options.gzip = true; return deflate(input, options); } module2.exports.Deflate = Deflate; module2.exports.deflate = deflate; module2.exports.deflateRaw = deflateRaw; module2.exports.gzip = gzip2; module2.exports.constants = require_constants2(); } }); // node_modules/pako/lib/zlib/inffast.js var require_inffast = __commonJS({ "node_modules/pako/lib/zlib/inffast.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var BAD = 16209; var TYPE = 16191; module2.exports = function inflate_fast(strm, start) { let _in; let last; let _out; let beg; let end; let dmax; let wsize; let whave; let wnext; let s_window; let hold; let bits; let lcode; let dcode; let lmask; let dmask; let here; let op; let len; let dist; let from; let from_source; let input, output; const state2 = strm.state; _in = strm.next_in; input = strm.input; last = _in + (strm.avail_in - 5); _out = strm.next_out; output = strm.output; beg = _out - (start - strm.avail_out); end = _out + (strm.avail_out - 257); dmax = state2.dmax; wsize = state2.wsize; whave = state2.whave; wnext = state2.wnext; s_window = state2.window; hold = state2.hold; bits = state2.bits; lcode = state2.lencode; dcode = state2.distcode; lmask = (1 << state2.lenbits) - 1; dmask = (1 << state2.distbits) - 1; top: do { if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = lcode[hold & lmask]; dolen: for (; ; ) { op = here >>> 24; hold >>>= op; bits -= op; op = here >>> 16 & 255; if (op === 0) { output[_out++] = here & 65535; } else if (op & 16) { len = here & 65535; op &= 15; if (op) { if (bits < op) { hold += input[_in++] << bits; bits += 8; } len += hold & (1 << op) - 1; hold >>>= op; bits -= op; } if (bits < 15) { hold += input[_in++] << bits; bits += 8; hold += input[_in++] << bits; bits += 8; } here = dcode[hold & dmask]; dodist: for (; ; ) { op = here >>> 24; hold >>>= op; bits -= op; op = here >>> 16 & 255; if (op & 16) { dist = here & 65535; op &= 15; if (bits < op) { hold += input[_in++] << bits; bits += 8; if (bits < op) { hold += input[_in++] << bits; bits += 8; } } dist += hold & (1 << op) - 1; if (dist > dmax) { strm.msg = "invalid distance too far back"; state2.mode = BAD; break top; } hold >>>= op; bits -= op; op = _out - beg; if (dist > op) { op = dist - op; if (op > whave) { if (state2.sane) { strm.msg = "invalid distance too far back"; state2.mode = BAD; break top; } } from = 0; from_source = s_window; if (wnext === 0) { from += wsize - op; if (op < len) { len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = _out - dist; from_source = output; } } else if (wnext < op) { from += wsize + wnext - op; op -= wnext; if (op < len) { len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = 0; if (wnext < len) { op = wnext; len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = _out - dist; from_source = output; } } } else { from += wnext - op; if (op < len) { len -= op; do { output[_out++] = s_window[from++]; } while (--op); from = _out - dist; from_source = output; } } while (len > 2) { output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; output[_out++] = from_source[from++]; len -= 3; } if (len) { output[_out++] = from_source[from++]; if (len > 1) { output[_out++] = from_source[from++]; } } } else { from = _out - dist; do { output[_out++] = output[from++]; output[_out++] = output[from++]; output[_out++] = output[from++]; len -= 3; } while (len > 2); if (len) { output[_out++] = output[from++]; if (len > 1) { output[_out++] = output[from++]; } } } } else if ((op & 64) === 0) { here = dcode[(here & 65535) + (hold & (1 << op) - 1)]; continue dodist; } else { strm.msg = "invalid distance code"; state2.mode = BAD; break top; } break; } } else if ((op & 64) === 0) { here = lcode[(here & 65535) + (hold & (1 << op) - 1)]; continue dolen; } else if (op & 32) { state2.mode = TYPE; break top; } else { strm.msg = "invalid literal/length code"; state2.mode = BAD; break top; } break; } } while (_in < last && _out < end); len = bits >> 3; _in -= len; bits -= len << 3; hold &= (1 << bits) - 1; strm.next_in = _in; strm.next_out = _out; strm.avail_in = _in < last ? 5 + (last - _in) : 5 - (_in - last); strm.avail_out = _out < end ? 257 + (end - _out) : 257 - (_out - end); state2.hold = hold; state2.bits = bits; return; }; } }); // node_modules/pako/lib/zlib/inftrees.js var require_inftrees = __commonJS({ "node_modules/pako/lib/zlib/inftrees.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var MAXBITS = 15; var ENOUGH_LENS = 852; var ENOUGH_DISTS = 592; var CODES = 0; var LENS = 1; var DISTS = 2; var lbase = new Uint16Array([ /* Length codes 257..285 base */ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 ]); var lext = new Uint8Array([ /* Length codes 257..285 extra */ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 75 ]); var dbase = new Uint16Array([ /* Distance codes 0..29 base */ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0 ]); var dext = new Uint8Array([ /* Distance codes 0..29 extra */ 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64 ]); var inflate_table = (type, lens, lens_index, codes, table, table_index, work, opts) => { const bits = opts.bits; let len = 0; let sym = 0; let min = 0, max = 0; let root = 0; let curr = 0; let drop = 0; let left = 0; let used = 0; let huff = 0; let incr; let fill; let low; let mask; let next; let base = null; let match; const count = new Uint16Array(MAXBITS + 1); const offs = new Uint16Array(MAXBITS + 1); let extra = null; let here_bits, here_op, here_val; for (len = 0; len <= MAXBITS; len++) { count[len] = 0; } for (sym = 0; sym < codes; sym++) { count[lens[lens_index + sym]]++; } root = bits; for (max = MAXBITS; max >= 1; max--) { if (count[max] !== 0) { break; } } if (root > max) { root = max; } if (max === 0) { table[table_index++] = 1 << 24 | 64 << 16 | 0; table[table_index++] = 1 << 24 | 64 << 16 | 0; opts.bits = 1; return 0; } for (min = 1; min < max; min++) { if (count[min] !== 0) { break; } } if (root < min) { root = min; } left = 1; for (len = 1; len <= MAXBITS; len++) { left <<= 1; left -= count[len]; if (left < 0) { return -1; } } if (left > 0 && (type === CODES || max !== 1)) { return -1; } offs[1] = 0; for (len = 1; len < MAXBITS; len++) { offs[len + 1] = offs[len] + count[len]; } for (sym = 0; sym < codes; sym++) { if (lens[lens_index + sym] !== 0) { work[offs[lens[lens_index + sym]]++] = sym; } } if (type === CODES) { base = extra = work; match = 20; } else if (type === LENS) { base = lbase; extra = lext; match = 257; } else { base = dbase; extra = dext; match = 0; } huff = 0; sym = 0; len = min; next = table_index; curr = root; drop = 0; low = -1; used = 1 << root; mask = used - 1; if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { return 1; } for (; ; ) { here_bits = len - drop; if (work[sym] + 1 < match) { here_op = 0; here_val = work[sym]; } else if (work[sym] >= match) { here_op = extra[work[sym] - match]; here_val = base[work[sym] - match]; } else { here_op = 32 + 64; here_val = 0; } incr = 1 << len - drop; fill = 1 << curr; min = fill; do { fill -= incr; table[next + (huff >> drop) + fill] = here_bits << 24 | here_op << 16 | here_val | 0; } while (fill !== 0); incr = 1 << len - 1; while (huff & incr) { incr >>= 1; } if (incr !== 0) { huff &= incr - 1; huff += incr; } else { huff = 0; } sym++; if (--count[len] === 0) { if (len === max) { break; } len = lens[lens_index + work[sym]]; } if (len > root && (huff & mask) !== low) { if (drop === 0) { drop = root; } next += min; curr = len - drop; left = 1 << curr; while (curr + drop < max) { left -= count[curr + drop]; if (left <= 0) { break; } curr++; left <<= 1; } used += 1 << curr; if (type === LENS && used > ENOUGH_LENS || type === DISTS && used > ENOUGH_DISTS) { return 1; } low = huff & mask; table[low] = root << 24 | curr << 16 | next - table_index | 0; } } if (huff !== 0) { table[next + huff] = len - drop << 24 | 64 << 16 | 0; } opts.bits = root; return 0; }; module2.exports = inflate_table; } }); // node_modules/pako/lib/zlib/inflate.js var require_inflate = __commonJS({ "node_modules/pako/lib/zlib/inflate.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var adler32 = require_adler32(); var crc32 = require_crc32(); var inflate_fast = require_inffast(); var inflate_table = require_inftrees(); var CODES = 0; var LENS = 1; var DISTS = 2; var { Z_FINISH, Z_BLOCK, Z_TREES, Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR, Z_BUF_ERROR, Z_DEFLATED } = require_constants2(); var HEAD = 16180; var FLAGS = 16181; var TIME = 16182; var OS = 16183; var EXLEN = 16184; var EXTRA = 16185; var NAME = 16186; var COMMENT = 16187; var HCRC = 16188; var DICTID = 16189; var DICT = 16190; var TYPE = 16191; var TYPEDO = 16192; var STORED = 16193; var COPY_ = 16194; var COPY = 16195; var TABLE = 16196; var LENLENS = 16197; var CODELENS = 16198; var LEN_ = 16199; var LEN = 16200; var LENEXT = 16201; var DIST = 16202; var DISTEXT = 16203; var MATCH = 16204; var LIT = 16205; var CHECK = 16206; var LENGTH = 16207; var DONE = 16208; var BAD = 16209; var MEM = 16210; var SYNC = 16211; var ENOUGH_LENS = 852; var ENOUGH_DISTS = 592; var MAX_WBITS = 15; var DEF_WBITS = MAX_WBITS; var zswap32 = (q) => { return (q >>> 24 & 255) + (q >>> 8 & 65280) + ((q & 65280) << 8) + ((q & 255) << 24); }; function InflateState() { this.strm = null; this.mode = 0; this.last = false; this.wrap = 0; this.havedict = false; this.flags = 0; this.dmax = 0; this.check = 0; this.total = 0; this.head = null; this.wbits = 0; this.wsize = 0; this.whave = 0; this.wnext = 0; this.window = null; this.hold = 0; this.bits = 0; this.length = 0; this.offset = 0; this.extra = 0; this.lencode = null; this.distcode = null; this.lenbits = 0; this.distbits = 0; this.ncode = 0; this.nlen = 0; this.ndist = 0; this.have = 0; this.next = null; this.lens = new Uint16Array(320); this.work = new Uint16Array(288); this.lendyn = null; this.distdyn = null; this.sane = 0; this.back = 0; this.was = 0; } var inflateStateCheck = (strm) => { if (!strm) { return 1; } const state2 = strm.state; if (!state2 || state2.strm !== strm || state2.mode < HEAD || state2.mode > SYNC) { return 1; } return 0; }; var inflateResetKeep = (strm) => { if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; } const state2 = strm.state; strm.total_in = strm.total_out = state2.total = 0; strm.msg = ""; if (state2.wrap) { strm.adler = state2.wrap & 1; } state2.mode = HEAD; state2.last = 0; state2.havedict = 0; state2.flags = -1; state2.dmax = 32768; state2.head = null; state2.hold = 0; state2.bits = 0; state2.lencode = state2.lendyn = new Int32Array(ENOUGH_LENS); state2.distcode = state2.distdyn = new Int32Array(ENOUGH_DISTS); state2.sane = 1; state2.back = -1; return Z_OK; }; var inflateReset = (strm) => { if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; } const state2 = strm.state; state2.wsize = 0; state2.whave = 0; state2.wnext = 0; return inflateResetKeep(strm); }; var inflateReset2 = (strm, windowBits) => { let wrap; if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; } const state2 = strm.state; if (windowBits < 0) { wrap = 0; windowBits = -windowBits; } else { wrap = (windowBits >> 4) + 5; if (windowBits < 48) { windowBits &= 15; } } if (windowBits && (windowBits < 8 || windowBits > 15)) { return Z_STREAM_ERROR; } if (state2.window !== null && state2.wbits !== windowBits) { state2.window = null; } state2.wrap = wrap; state2.wbits = windowBits; return inflateReset(strm); }; var inflateInit2 = (strm, windowBits) => { if (!strm) { return Z_STREAM_ERROR; } const state2 = new InflateState(); strm.state = state2; state2.strm = strm; state2.window = null; state2.mode = HEAD; const ret = inflateReset2(strm, windowBits); if (ret !== Z_OK) { strm.state = null; } return ret; }; var inflateInit = (strm) => { return inflateInit2(strm, DEF_WBITS); }; var virgin = true; var lenfix; var distfix; var fixedtables = (state2) => { if (virgin) { lenfix = new Int32Array(512); distfix = new Int32Array(32); let sym = 0; while (sym < 144) { state2.lens[sym++] = 8; } while (sym < 256) { state2.lens[sym++] = 9; } while (sym < 280) { state2.lens[sym++] = 7; } while (sym < 288) { state2.lens[sym++] = 8; } inflate_table(LENS, state2.lens, 0, 288, lenfix, 0, state2.work, { bits: 9 }); sym = 0; while (sym < 32) { state2.lens[sym++] = 5; } inflate_table(DISTS, state2.lens, 0, 32, distfix, 0, state2.work, { bits: 5 }); virgin = false; } state2.lencode = lenfix; state2.lenbits = 9; state2.distcode = distfix; state2.distbits = 5; }; var updatewindow = (strm, src, end, copy) => { let dist; const state2 = strm.state; if (state2.window === null) { state2.window = new Uint8Array(1 << state2.wbits); } if (state2.wsize === 0) { state2.wsize = 1 << state2.wbits; state2.wnext = 0; state2.whave = 0; } if (copy >= state2.wsize) { state2.window.set(src.subarray(end - state2.wsize, end), 0); state2.wnext = 0; state2.whave = state2.wsize; } else { dist = state2.wsize - state2.wnext; if (dist > copy) { dist = copy; } state2.window.set(src.subarray(end - copy, end - copy + dist), state2.wnext); copy -= dist; if (copy) { state2.window.set(src.subarray(end - copy, end), 0); state2.wnext = copy; state2.whave = state2.wsize; } else { state2.wnext += dist; if (state2.wnext === state2.wsize) { state2.wnext = 0; } if (state2.whave < state2.wsize) { state2.whave += dist; } } } return 0; }; var inflate = (strm, flush) => { let state2; let input, output; let next; let put; let have, left; let hold; let bits; let _in, _out; let copy; let from; let from_source; let here = 0; let here_bits, here_op, here_val; let last_bits, last_op, last_val; let len; let ret; const hbuf = new Uint8Array(4); let opts; let n; const order = ( /* permutation of code lengths */ new Uint8Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]) ); if (inflateStateCheck(strm) || !strm.output || !strm.input && strm.avail_in !== 0) { return Z_STREAM_ERROR; } state2 = strm.state; if (state2.mode === TYPE) { state2.mode = TYPEDO; } put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state2.hold; bits = state2.bits; _in = have; _out = left; ret = Z_OK; inf_leave: for (; ; ) { switch (state2.mode) { case HEAD: if (state2.wrap === 0) { state2.mode = TYPEDO; break; } while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state2.wrap & 2 && hold === 35615) { if (state2.wbits === 0) { state2.wbits = 15; } state2.check = 0; hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state2.check = crc32(state2.check, hbuf, 2, 0); hold = 0; bits = 0; state2.mode = FLAGS; break; } if (state2.head) { state2.head.done = false; } if (!(state2.wrap & 1) || /* check if zlib header allowed */ (((hold & 255) << 8) + (hold >> 8)) % 31) { strm.msg = "incorrect header check"; state2.mode = BAD; break; } if ((hold & 15) !== Z_DEFLATED) { strm.msg = "unknown compression method"; state2.mode = BAD; break; } hold >>>= 4; bits -= 4; len = (hold & 15) + 8; if (state2.wbits === 0) { state2.wbits = len; } if (len > 15 || len > state2.wbits) { strm.msg = "invalid window size"; state2.mode = BAD; break; } state2.dmax = 1 << state2.wbits; state2.flags = 0; strm.adler = state2.check = 1; state2.mode = hold & 512 ? DICTID : TYPE; hold = 0; bits = 0; break; case FLAGS: while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state2.flags = hold; if ((state2.flags & 255) !== Z_DEFLATED) { strm.msg = "unknown compression method"; state2.mode = BAD; break; } if (state2.flags & 57344) { strm.msg = "unknown header flags set"; state2.mode = BAD; break; } if (state2.head) { state2.head.text = hold >> 8 & 1; } if (state2.flags & 512 && state2.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state2.check = crc32(state2.check, hbuf, 2, 0); } hold = 0; bits = 0; state2.mode = TIME; /* falls through */ case TIME: while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state2.head) { state2.head.time = hold; } if (state2.flags & 512 && state2.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; hbuf[2] = hold >>> 16 & 255; hbuf[3] = hold >>> 24 & 255; state2.check = crc32(state2.check, hbuf, 4, 0); } hold = 0; bits = 0; state2.mode = OS; /* falls through */ case OS: while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state2.head) { state2.head.xflags = hold & 255; state2.head.os = hold >> 8; } if (state2.flags & 512 && state2.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state2.check = crc32(state2.check, hbuf, 2, 0); } hold = 0; bits = 0; state2.mode = EXLEN; /* falls through */ case EXLEN: if (state2.flags & 1024) { while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state2.length = hold; if (state2.head) { state2.head.extra_len = hold; } if (state2.flags & 512 && state2.wrap & 4) { hbuf[0] = hold & 255; hbuf[1] = hold >>> 8 & 255; state2.check = crc32(state2.check, hbuf, 2, 0); } hold = 0; bits = 0; } else if (state2.head) { state2.head.extra = null; } state2.mode = EXTRA; /* falls through */ case EXTRA: if (state2.flags & 1024) { copy = state2.length; if (copy > have) { copy = have; } if (copy) { if (state2.head) { len = state2.head.extra_len - state2.length; if (!state2.head.extra) { state2.head.extra = new Uint8Array(state2.head.extra_len); } state2.head.extra.set( input.subarray( next, // extra field is limited to 65536 bytes // - no need for additional size check next + copy ), /*len + copy > state.head.extra_max - len ? state.head.extra_max : copy,*/ len ); } if (state2.flags & 512 && state2.wrap & 4) { state2.check = crc32(state2.check, input, copy, next); } have -= copy; next += copy; state2.length -= copy; } if (state2.length) { break inf_leave; } } state2.length = 0; state2.mode = NAME; /* falls through */ case NAME: if (state2.flags & 2048) { if (have === 0) { break inf_leave; } copy = 0; do { len = input[next + copy++]; if (state2.head && len && state2.length < 65536) { state2.head.name += String.fromCharCode(len); } } while (len && copy < have); if (state2.flags & 512 && state2.wrap & 4) { state2.check = crc32(state2.check, input, copy, next); } have -= copy; next += copy; if (len) { break inf_leave; } } else if (state2.head) { state2.head.name = null; } state2.length = 0; state2.mode = COMMENT; /* falls through */ case COMMENT: if (state2.flags & 4096) { if (have === 0) { break inf_leave; } copy = 0; do { len = input[next + copy++]; if (state2.head && len && state2.length < 65536) { state2.head.comment += String.fromCharCode(len); } } while (len && copy < have); if (state2.flags & 512 && state2.wrap & 4) { state2.check = crc32(state2.check, input, copy, next); } have -= copy; next += copy; if (len) { break inf_leave; } } else if (state2.head) { state2.head.comment = null; } state2.mode = HCRC; /* falls through */ case HCRC: if (state2.flags & 512) { while (bits < 16) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state2.wrap & 4 && hold !== (state2.check & 65535)) { strm.msg = "header crc mismatch"; state2.mode = BAD; break; } hold = 0; bits = 0; } if (state2.head) { state2.head.hcrc = state2.flags >> 9 & 1; state2.head.done = true; } strm.adler = state2.check = 0; state2.mode = TYPE; break; case DICTID: while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } strm.adler = state2.check = zswap32(hold); hold = 0; bits = 0; state2.mode = DICT; /* falls through */ case DICT: if (state2.havedict === 0) { strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state2.hold = hold; state2.bits = bits; return Z_NEED_DICT; } strm.adler = state2.check = 1; state2.mode = TYPE; /* falls through */ case TYPE: if (flush === Z_BLOCK || flush === Z_TREES) { break inf_leave; } /* falls through */ case TYPEDO: if (state2.last) { hold >>>= bits & 7; bits -= bits & 7; state2.mode = CHECK; break; } while (bits < 3) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state2.last = hold & 1; hold >>>= 1; bits -= 1; switch (hold & 3) { case 0: state2.mode = STORED; break; case 1: fixedtables(state2); state2.mode = LEN_; if (flush === Z_TREES) { hold >>>= 2; bits -= 2; break inf_leave; } break; case 2: state2.mode = TABLE; break; case 3: strm.msg = "invalid block type"; state2.mode = BAD; } hold >>>= 2; bits -= 2; break; case STORED: hold >>>= bits & 7; bits -= bits & 7; while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if ((hold & 65535) !== (hold >>> 16 ^ 65535)) { strm.msg = "invalid stored block lengths"; state2.mode = BAD; break; } state2.length = hold & 65535; hold = 0; bits = 0; state2.mode = COPY_; if (flush === Z_TREES) { break inf_leave; } /* falls through */ case COPY_: state2.mode = COPY; /* falls through */ case COPY: copy = state2.length; if (copy) { if (copy > have) { copy = have; } if (copy > left) { copy = left; } if (copy === 0) { break inf_leave; } output.set(input.subarray(next, next + copy), put); have -= copy; next += copy; left -= copy; put += copy; state2.length -= copy; break; } state2.mode = TYPE; break; case TABLE: while (bits < 14) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state2.nlen = (hold & 31) + 257; hold >>>= 5; bits -= 5; state2.ndist = (hold & 31) + 1; hold >>>= 5; bits -= 5; state2.ncode = (hold & 15) + 4; hold >>>= 4; bits -= 4; if (state2.nlen > 286 || state2.ndist > 30) { strm.msg = "too many length or distance symbols"; state2.mode = BAD; break; } state2.have = 0; state2.mode = LENLENS; /* falls through */ case LENLENS: while (state2.have < state2.ncode) { while (bits < 3) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state2.lens[order[state2.have++]] = hold & 7; hold >>>= 3; bits -= 3; } while (state2.have < 19) { state2.lens[order[state2.have++]] = 0; } state2.lencode = state2.lendyn; state2.lenbits = 7; opts = { bits: state2.lenbits }; ret = inflate_table(CODES, state2.lens, 0, 19, state2.lencode, 0, state2.work, opts); state2.lenbits = opts.bits; if (ret) { strm.msg = "invalid code lengths set"; state2.mode = BAD; break; } state2.have = 0; state2.mode = CODELENS; /* falls through */ case CODELENS: while (state2.have < state2.nlen + state2.ndist) { for (; ; ) { here = state2.lencode[hold & (1 << state2.lenbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (here_val < 16) { hold >>>= here_bits; bits -= here_bits; state2.lens[state2.have++] = here_val; } else { if (here_val === 16) { n = here_bits + 2; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; if (state2.have === 0) { strm.msg = "invalid bit length repeat"; state2.mode = BAD; break; } len = state2.lens[state2.have - 1]; copy = 3 + (hold & 3); hold >>>= 2; bits -= 2; } else if (here_val === 17) { n = here_bits + 3; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; len = 0; copy = 3 + (hold & 7); hold >>>= 3; bits -= 3; } else { n = here_bits + 7; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= here_bits; bits -= here_bits; len = 0; copy = 11 + (hold & 127); hold >>>= 7; bits -= 7; } if (state2.have + copy > state2.nlen + state2.ndist) { strm.msg = "invalid bit length repeat"; state2.mode = BAD; break; } while (copy--) { state2.lens[state2.have++] = len; } } } if (state2.mode === BAD) { break; } if (state2.lens[256] === 0) { strm.msg = "invalid code -- missing end-of-block"; state2.mode = BAD; break; } state2.lenbits = 9; opts = { bits: state2.lenbits }; ret = inflate_table(LENS, state2.lens, 0, state2.nlen, state2.lencode, 0, state2.work, opts); state2.lenbits = opts.bits; if (ret) { strm.msg = "invalid literal/lengths set"; state2.mode = BAD; break; } state2.distbits = 6; state2.distcode = state2.distdyn; opts = { bits: state2.distbits }; ret = inflate_table(DISTS, state2.lens, state2.nlen, state2.ndist, state2.distcode, 0, state2.work, opts); state2.distbits = opts.bits; if (ret) { strm.msg = "invalid distances set"; state2.mode = BAD; break; } state2.mode = LEN_; if (flush === Z_TREES) { break inf_leave; } /* falls through */ case LEN_: state2.mode = LEN; /* falls through */ case LEN: if (have >= 6 && left >= 258) { strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state2.hold = hold; state2.bits = bits; inflate_fast(strm, _out); put = strm.next_out; output = strm.output; left = strm.avail_out; next = strm.next_in; input = strm.input; have = strm.avail_in; hold = state2.hold; bits = state2.bits; if (state2.mode === TYPE) { state2.back = -1; } break; } state2.back = 0; for (; ; ) { here = state2.lencode[hold & (1 << state2.lenbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (here_op && (here_op & 240) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (; ; ) { here = state2.lencode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (last_bits + here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= last_bits; bits -= last_bits; state2.back += last_bits; } hold >>>= here_bits; bits -= here_bits; state2.back += here_bits; state2.length = here_val; if (here_op === 0) { state2.mode = LIT; break; } if (here_op & 32) { state2.back = -1; state2.mode = TYPE; break; } if (here_op & 64) { strm.msg = "invalid literal/length code"; state2.mode = BAD; break; } state2.extra = here_op & 15; state2.mode = LENEXT; /* falls through */ case LENEXT: if (state2.extra) { n = state2.extra; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state2.length += hold & (1 << state2.extra) - 1; hold >>>= state2.extra; bits -= state2.extra; state2.back += state2.extra; } state2.was = state2.length; state2.mode = DIST; /* falls through */ case DIST: for (; ; ) { here = state2.distcode[hold & (1 << state2.distbits) - 1]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if ((here_op & 240) === 0) { last_bits = here_bits; last_op = here_op; last_val = here_val; for (; ; ) { here = state2.distcode[last_val + ((hold & (1 << last_bits + last_op) - 1) >> last_bits)]; here_bits = here >>> 24; here_op = here >>> 16 & 255; here_val = here & 65535; if (last_bits + here_bits <= bits) { break; } if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } hold >>>= last_bits; bits -= last_bits; state2.back += last_bits; } hold >>>= here_bits; bits -= here_bits; state2.back += here_bits; if (here_op & 64) { strm.msg = "invalid distance code"; state2.mode = BAD; break; } state2.offset = here_val; state2.extra = here_op & 15; state2.mode = DISTEXT; /* falls through */ case DISTEXT: if (state2.extra) { n = state2.extra; while (bits < n) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } state2.offset += hold & (1 << state2.extra) - 1; hold >>>= state2.extra; bits -= state2.extra; state2.back += state2.extra; } if (state2.offset > state2.dmax) { strm.msg = "invalid distance too far back"; state2.mode = BAD; break; } state2.mode = MATCH; /* falls through */ case MATCH: if (left === 0) { break inf_leave; } copy = _out - left; if (state2.offset > copy) { copy = state2.offset - copy; if (copy > state2.whave) { if (state2.sane) { strm.msg = "invalid distance too far back"; state2.mode = BAD; break; } } if (copy > state2.wnext) { copy -= state2.wnext; from = state2.wsize - copy; } else { from = state2.wnext - copy; } if (copy > state2.length) { copy = state2.length; } from_source = state2.window; } else { from_source = output; from = put - state2.offset; copy = state2.length; } if (copy > left) { copy = left; } left -= copy; state2.length -= copy; do { output[put++] = from_source[from++]; } while (--copy); if (state2.length === 0) { state2.mode = LEN; } break; case LIT: if (left === 0) { break inf_leave; } output[put++] = state2.length; left--; state2.mode = LEN; break; case CHECK: if (state2.wrap) { while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold |= input[next++] << bits; bits += 8; } _out -= left; strm.total_out += _out; state2.total += _out; if (state2.wrap & 4 && _out) { strm.adler = state2.check = /*UPDATE_CHECK(state.check, put - _out, _out);*/ state2.flags ? crc32(state2.check, output, _out, put - _out) : adler32(state2.check, output, _out, put - _out); } _out = left; if (state2.wrap & 4 && (state2.flags ? hold : zswap32(hold)) !== state2.check) { strm.msg = "incorrect data check"; state2.mode = BAD; break; } hold = 0; bits = 0; } state2.mode = LENGTH; /* falls through */ case LENGTH: if (state2.wrap && state2.flags) { while (bits < 32) { if (have === 0) { break inf_leave; } have--; hold += input[next++] << bits; bits += 8; } if (state2.wrap & 4 && hold !== (state2.total & 4294967295)) { strm.msg = "incorrect length check"; state2.mode = BAD; break; } hold = 0; bits = 0; } state2.mode = DONE; /* falls through */ case DONE: ret = Z_STREAM_END; break inf_leave; case BAD: ret = Z_DATA_ERROR; break inf_leave; case MEM: return Z_MEM_ERROR; case SYNC: /* falls through */ default: return Z_STREAM_ERROR; } } strm.next_out = put; strm.avail_out = left; strm.next_in = next; strm.avail_in = have; state2.hold = hold; state2.bits = bits; if (state2.wsize || _out !== strm.avail_out && state2.mode < BAD && (state2.mode < CHECK || flush !== Z_FINISH)) { if (updatewindow(strm, strm.output, strm.next_out, _out - strm.avail_out)) { state2.mode = MEM; return Z_MEM_ERROR; } } _in -= strm.avail_in; _out -= strm.avail_out; strm.total_in += _in; strm.total_out += _out; state2.total += _out; if (state2.wrap & 4 && _out) { strm.adler = state2.check = /*UPDATE_CHECK(state.check, strm.next_out - _out, _out);*/ state2.flags ? crc32(state2.check, output, _out, strm.next_out - _out) : adler32(state2.check, output, _out, strm.next_out - _out); } strm.data_type = state2.bits + (state2.last ? 64 : 0) + (state2.mode === TYPE ? 128 : 0) + (state2.mode === LEN_ || state2.mode === COPY_ ? 256 : 0); if ((_in === 0 && _out === 0 || flush === Z_FINISH) && ret === Z_OK) { ret = Z_BUF_ERROR; } return ret; }; var inflateEnd = (strm) => { if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; } let state2 = strm.state; if (state2.window) { state2.window = null; } strm.state = null; return Z_OK; }; var inflateGetHeader = (strm, head) => { if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; } const state2 = strm.state; if ((state2.wrap & 2) === 0) { return Z_STREAM_ERROR; } state2.head = head; head.done = false; return Z_OK; }; var inflateSetDictionary = (strm, dictionary) => { const dictLength = dictionary.length; let state2; let dictid; let ret; if (inflateStateCheck(strm)) { return Z_STREAM_ERROR; } state2 = strm.state; if (state2.wrap !== 0 && state2.mode !== DICT) { return Z_STREAM_ERROR; } if (state2.mode === DICT) { dictid = 1; dictid = adler32(dictid, dictionary, dictLength, 0); if (dictid !== state2.check) { return Z_DATA_ERROR; } } ret = updatewindow(strm, dictionary, dictLength, dictLength); if (ret) { state2.mode = MEM; return Z_MEM_ERROR; } state2.havedict = 1; return Z_OK; }; module2.exports.inflateReset = inflateReset; module2.exports.inflateReset2 = inflateReset2; module2.exports.inflateResetKeep = inflateResetKeep; module2.exports.inflateInit = inflateInit; module2.exports.inflateInit2 = inflateInit2; module2.exports.inflate = inflate; module2.exports.inflateEnd = inflateEnd; module2.exports.inflateGetHeader = inflateGetHeader; module2.exports.inflateSetDictionary = inflateSetDictionary; module2.exports.inflateInfo = "pako inflate (from Nodeca project)"; } }); // node_modules/pako/lib/zlib/gzheader.js var require_gzheader = __commonJS({ "node_modules/pako/lib/zlib/gzheader.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); function GZheader() { this.text = 0; this.time = 0; this.xflags = 0; this.os = 0; this.extra = null; this.extra_len = 0; this.name = ""; this.comment = ""; this.hcrc = 0; this.done = false; } module2.exports = GZheader; } }); // node_modules/pako/lib/inflate.js var require_inflate2 = __commonJS({ "node_modules/pako/lib/inflate.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var zlib_inflate = require_inflate(); var utils = require_common(); var strings = require_strings(); var msg = require_messages(); var ZStream = require_zstream(); var GZheader = require_gzheader(); var toString = Object.prototype.toString; var { Z_NO_FLUSH, Z_FINISH, Z_OK, Z_STREAM_END, Z_NEED_DICT, Z_STREAM_ERROR, Z_DATA_ERROR, Z_MEM_ERROR, Z_BUF_ERROR } = require_constants2(); var defaultOptions2 = { chunkSize: 1024 * 64, windowBits: 15, to: "" }; function Inflate(options) { this.options = utils.assign({}, defaultOptions2, options || {}); const opt = this.options; if (opt.raw && opt.windowBits >= 0 && opt.windowBits < 16) { opt.windowBits = -opt.windowBits; if (opt.windowBits === 0) { opt.windowBits = -15; } } if (opt.windowBits >= 0 && opt.windowBits < 16 && !(options && options.windowBits)) { opt.windowBits += 32; } if (opt.windowBits > 15 && opt.windowBits < 48) { if ((opt.windowBits & 15) === 0) { opt.windowBits |= 15; } } this.err = 0; this.msg = ""; this.ended = false; this.chunks = []; this.strm = new ZStream(); this.strm.avail_out = 0; let status = zlib_inflate.inflateInit2( this.strm, opt.windowBits ); if (status !== Z_OK) { throw new Error(msg[status]); } this.header = new GZheader(); zlib_inflate.inflateGetHeader(this.strm, this.header); if (opt.dictionary) { if (typeof opt.dictionary === "string") { opt.dictionary = strings.string2buf(opt.dictionary); } else if (toString.call(opt.dictionary) === "[object ArrayBuffer]") { opt.dictionary = new Uint8Array(opt.dictionary); } if (opt.raw) { status = zlib_inflate.inflateSetDictionary(this.strm, opt.dictionary); if (status !== Z_OK) { throw new Error(msg[status]); } } } } Inflate.prototype.push = function(data, flush_mode) { const strm = this.strm; const chunkSize = this.options.chunkSize; const dictionary = this.options.dictionary; let status, _flush_mode, last_avail_out; if (this.ended) return false; if (flush_mode === ~~flush_mode) _flush_mode = flush_mode; else _flush_mode = flush_mode === true ? Z_FINISH : Z_NO_FLUSH; if (toString.call(data) === "[object ArrayBuffer]") { strm.input = new Uint8Array(data); } else { strm.input = data; } strm.next_in = 0; strm.avail_in = strm.input.length; for (; ; ) { if (strm.avail_out === 0) { strm.output = new Uint8Array(chunkSize); strm.next_out = 0; strm.avail_out = chunkSize; } status = zlib_inflate.inflate(strm, _flush_mode); if (status === Z_NEED_DICT && dictionary) { status = zlib_inflate.inflateSetDictionary(strm, dictionary); if (status === Z_OK) { status = zlib_inflate.inflate(strm, _flush_mode); } else if (status === Z_DATA_ERROR) { status = Z_NEED_DICT; } } while (strm.avail_in > 0 && status === Z_STREAM_END && strm.state.wrap & 2 && strm.state.flags !== 0 && strm.input[strm.next_in] !== 0) { zlib_inflate.inflateReset(strm); status = zlib_inflate.inflate(strm, _flush_mode); } switch (status) { case Z_STREAM_ERROR: case Z_DATA_ERROR: case Z_NEED_DICT: case Z_MEM_ERROR: this.onEnd(status); this.ended = true; return false; } last_avail_out = strm.avail_out; if (strm.next_out) { if (strm.avail_out === 0 || status === Z_STREAM_END || _flush_mode > 0) { if (this.options.to === "string") { let next_out_utf8 = strings.utf8border(strm.output, strm.next_out); let tail = strm.next_out - next_out_utf8; let utf8str = strings.buf2string(strm.output, next_out_utf8); strm.next_out = tail; strm.avail_out = chunkSize - tail; if (tail) strm.output.set(strm.output.subarray(next_out_utf8, next_out_utf8 + tail), 0); this.onData(utf8str); } else { this.onData(strm.output.length === strm.next_out ? strm.output : strm.output.subarray(0, strm.next_out)); strm.avail_out = 0; strm.next_out = 0; } } } if ((status === Z_OK || status === Z_BUF_ERROR) && last_avail_out === 0) continue; if (status === Z_STREAM_END) { status = zlib_inflate.inflateEnd(this.strm); this.onEnd(status); this.ended = true; return true; } if (strm.avail_in === 0) { if (_flush_mode === Z_FINISH) { status = zlib_inflate.inflateEnd(this.strm); this.onEnd(status === Z_OK ? Z_BUF_ERROR : status); this.ended = true; return false; } break; } } return true; }; Inflate.prototype.onData = function(chunk) { this.chunks.push(chunk); }; Inflate.prototype.onEnd = function(status) { if (status === Z_OK) { if (this.options.to === "string") { this.result = this.chunks.join(""); } else { this.result = utils.flattenChunks(this.chunks); } } this.chunks = []; this.err = status; this.msg = this.strm.msg; }; function inflate(input, options) { const inflator = new Inflate(options); inflator.push(input, true); if (inflator.err) throw inflator.msg || msg[inflator.err]; return inflator.result; } function inflateRaw(input, options) { options = options || {}; options.raw = true; return inflate(input, options); } module2.exports.Inflate = Inflate; module2.exports.inflate = inflate; module2.exports.inflateRaw = inflateRaw; module2.exports.ungzip = inflate; module2.exports.constants = require_constants2(); } }); // node_modules/pako/index.js var require_pako = __commonJS({ "node_modules/pako/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var { Deflate, deflate, deflateRaw, gzip: gzip2 } = require_deflate2(); var { Inflate, inflate, inflateRaw, ungzip } = require_inflate2(); var constants = require_constants2(); module2.exports.Deflate = Deflate; module2.exports.deflate = deflate; module2.exports.deflateRaw = deflateRaw; module2.exports.gzip = gzip2; module2.exports.Inflate = Inflate; module2.exports.inflate = inflate; module2.exports.inflateRaw = inflateRaw; module2.exports.ungzip = ungzip; module2.exports.constants = constants; } }); // node_modules/telegram/tl/core/GZIPPacked.js var require_GZIPPacked = __commonJS({ "node_modules/telegram/tl/core/GZIPPacked.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.GZIPPacked = void 0; var __1 = require_tl(); var pako_1 = require_pako(); var GZIPPacked = class _GZIPPacked { constructor(data) { this.data = data; this.CONSTRUCTOR_ID = 812830625; this.classType = "constructor"; } static async gzipIfSmaller(contentRelated, data) { if (contentRelated && data.length > 512) { const gzipped = await new _GZIPPacked(data).toBytes(); if (gzipped.length < data.length) { return gzipped; } } return data; } static gzip(input) { return Buffer.from(input); } static ungzip(input) { return Buffer.from((0, pako_1.inflate)(input)); } async toBytes() { const g = Buffer.alloc(4); g.writeUInt32LE(_GZIPPacked.CONSTRUCTOR_ID, 0); return Buffer.concat([ g, (0, __1.serializeBytes)(await _GZIPPacked.gzip(this.data)) ]); } static async read(reader) { const constructor = reader.readInt(false); if (constructor !== _GZIPPacked.CONSTRUCTOR_ID) { throw new Error("not equal"); } return _GZIPPacked.gzip(reader.tgReadBytes()); } static async fromReader(reader) { const data = reader.tgReadBytes(); return new _GZIPPacked(await _GZIPPacked.ungzip(data)); } }; exports2.GZIPPacked = GZIPPacked; GZIPPacked.CONSTRUCTOR_ID = 812830625; GZIPPacked.classType = "constructor"; } }); // node_modules/telegram/tl/core/index.js var require_core = __commonJS({ "node_modules/telegram/tl/core/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.GZIPPacked = exports2.MessageContainer = exports2.TLMessage = exports2.RPCResult = exports2.coreObjects = void 0; var TLMessage_1 = require_TLMessage(); Object.defineProperty(exports2, "TLMessage", { enumerable: true, get: function() { return TLMessage_1.TLMessage; } }); var RPCResult_1 = require_RPCResult(); Object.defineProperty(exports2, "RPCResult", { enumerable: true, get: function() { return RPCResult_1.RPCResult; } }); var MessageContainer_1 = require_MessageContainer(); Object.defineProperty(exports2, "MessageContainer", { enumerable: true, get: function() { return MessageContainer_1.MessageContainer; } }); var GZIPPacked_1 = require_GZIPPacked(); Object.defineProperty(exports2, "GZIPPacked", { enumerable: true, get: function() { return GZIPPacked_1.GZIPPacked; } }); exports2.coreObjects = /* @__PURE__ */ new Map([ [RPCResult_1.RPCResult.CONSTRUCTOR_ID, RPCResult_1.RPCResult], [GZIPPacked_1.GZIPPacked.CONSTRUCTOR_ID, GZIPPacked_1.GZIPPacked], [MessageContainer_1.MessageContainer.CONSTRUCTOR_ID, MessageContainer_1.MessageContainer] ]); } }); // node_modules/telegram/tl/AllTLObjects.js var require_AllTLObjects = __commonJS({ "node_modules/telegram/tl/AllTLObjects.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.tlobjects = exports2.LAYER = void 0; exports2.LAYER = 198; var _1 = require_tl(); var tlobjects = {}; exports2.tlobjects = tlobjects; for (const tl of Object.values(_1.Api)) { if ("CONSTRUCTOR_ID" in tl) { tlobjects[tl.CONSTRUCTOR_ID] = tl; } else { for (const sub of Object.values(tl)) { tlobjects[sub.CONSTRUCTOR_ID] = sub; } } } } }); // node_modules/telegram/extensions/BinaryReader.js var require_BinaryReader = __commonJS({ "node_modules/telegram/extensions/BinaryReader.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.BinaryReader = void 0; var errors_1 = require_errors(); var core_1 = require_core(); var AllTLObjects_1 = require_AllTLObjects(); var Helpers_1 = require_Helpers(); var BinaryReader = class { /** * Small utility class to read binary data. * @param data {Buffer} */ constructor(data) { this.stream = data; this._last = void 0; this.offset = 0; } // region Reading // "All numbers are written as little endian." // https://core.telegram.org/mtproto /** * Reads a single byte value. */ readByte() { return this.read(1)[0]; } /** * Reads an integer (4 bytes or 32 bits) value. * @param signed {Boolean} */ readInt(signed = true) { let res; if (signed) { res = this.stream.readInt32LE(this.offset); } else { res = this.stream.readUInt32LE(this.offset); } this.offset += 4; return res; } /** * Reads a long integer (8 bytes or 64 bits) value. * @param signed * @returns {BigInteger} */ readLong(signed = true) { return this.readLargeInt(64, signed); } /** * Reads a real floating point (4 bytes) value. * @returns {number} */ readFloat() { return this.read(4).readFloatLE(0); } /** * Reads a real floating point (8 bytes) value. * @returns {BigInteger} */ readDouble() { return this.read(8).readDoubleLE(0); } /** * Reads a n-bits long integer value. * @param bits * @param signed {Boolean} */ readLargeInt(bits, signed = true) { const buffer = this.read(Math.floor(bits / 8)); return (0, Helpers_1.readBigIntFromBuffer)(buffer, true, signed); } /** * Read the given amount of bytes, or -1 to read all remaining. * @param length {number} * @param checkLength {boolean} whether to check if the length overflows or not. */ read(length = -1, checkLength = true) { if (length === -1) { length = this.stream.length - this.offset; } const result = this.stream.slice(this.offset, this.offset + length); this.offset += length; if (checkLength && result.length !== length) { throw Error(`No more data left to read (need ${length}, got ${result.length}: ${result}); last read ${this._last}`); } this._last = result; return result; } /** * Gets the byte array representing the current buffer as a whole. * @returns {Buffer} */ getBuffer() { return this.stream; } // endregion // region Telegram custom reading /** * Reads a Telegram-encoded byte array, without the need of * specifying its length. * @returns {Buffer} */ tgReadBytes() { const firstByte = this.readByte(); let padding; let length; if (firstByte === 254) { length = this.readByte() | this.readByte() << 8 | this.readByte() << 16; padding = length % 4; } else { length = firstByte; padding = (length + 1) % 4; } const data = this.read(length); if (padding > 0) { padding = 4 - padding; this.read(padding); } return data; } /** * Reads a Telegram-encoded string. * @returns {string} */ tgReadString() { return this.tgReadBytes().toString("utf-8"); } /** * Reads a Telegram boolean value. * @returns {boolean} */ tgReadBool() { const value = this.readInt(false); if (value === 2574415285) { return true; } else if (value === 3162085175) { return false; } else { throw new Error(`Invalid boolean code ${value.toString(16)}`); } } /** * Reads and converts Unix time (used by Telegram) * into a Javascript {Date} object. * @returns {Date} */ tgReadDate() { const value = this.readInt(); return new Date(value * 1e3); } /** * Reads a Telegram object. */ tgReadObject() { const constructorId = this.readInt(false); let clazz = AllTLObjects_1.tlobjects[constructorId]; if (clazz === void 0) { const value = constructorId; if (value === 2574415285) { return true; } else if (value === 3162085175) { return false; } else if (value === 481674261) { const temp = []; const length = this.readInt(); for (let i = 0; i < length; i++) { temp.push(this.tgReadObject()); } return temp; } clazz = core_1.coreObjects.get(constructorId); if (clazz === void 0) { this.seek(-4); const pos = this.tellPosition(); const error = new errors_1.TypeNotFoundError(constructorId, this.read()); this.setPosition(pos); throw error; } } return clazz.fromReader(this); } /** * Reads a vector (a list) of Telegram objects. * @returns {[Buffer]} */ tgReadVector() { if (this.readInt(false) !== 481674261) { throw new Error("Invalid constructor code, vector was expected"); } const count = this.readInt(); const temp = []; for (let i = 0; i < count; i++) { temp.push(this.tgReadObject()); } return temp; } // endregion // region Position related /** * Tells the current position on the stream. * @returns {number} */ tellPosition() { return this.offset; } /** * Sets the current position on the stream. * @param position */ setPosition(position) { this.offset = position; } /** * Seeks the stream position given an offset from the current position. * The offset may be negative. * @param offset */ seek(offset) { this.offset += offset; } }; exports2.BinaryReader = BinaryReader; } }); // node_modules/ms/index.js var require_ms3 = __commonJS({ "node_modules/ms/index.js"(exports2, module2) { init_define_import_meta_env(); var s = 1e3; var m = s * 60; var h = m * 60; var d = h * 24; var y = d * 365.25; module2.exports = function(val, options) { options = options || {}; var type = typeof val; if (type === "string" && val.length > 0) { return parse3(val); } else if (type === "number" && isNaN(val) === false) { return options.long ? fmtLong(val) : fmtShort(val); } throw new Error( "val is not a non-empty string or a valid number. val=" + JSON.stringify(val) ); }; function parse3(str) { str = String(str); if (str.length > 100) { return; } var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec( str ); if (!match) { return; } var n = parseFloat(match[1]); var type = (match[2] || "ms").toLowerCase(); switch (type) { case "years": case "year": case "yrs": case "yr": case "y": return n * y; case "days": case "day": case "d": return n * d; case "hours": case "hour": case "hrs": case "hr": case "h": return n * h; case "minutes": case "minute": case "mins": case "min": case "m": return n * m; case "seconds": case "second": case "secs": case "sec": case "s": return n * s; case "milliseconds": case "millisecond": case "msecs": case "msec": case "ms": return n; default: return void 0; } } function fmtShort(ms) { if (ms >= d) { return Math.round(ms / d) + "d"; } if (ms >= h) { return Math.round(ms / h) + "h"; } if (ms >= m) { return Math.round(ms / m) + "m"; } if (ms >= s) { return Math.round(ms / s) + "s"; } return ms + "ms"; } function fmtLong(ms) { return plural(ms, d, "day") || plural(ms, h, "hour") || plural(ms, m, "minute") || plural(ms, s, "second") || ms + " ms"; } function plural(ms, n, name) { if (ms < n) { return; } if (ms < n * 1.5) { return Math.floor(ms / n) + " " + name; } return Math.ceil(ms / n) + " " + name + "s"; } } }); // node_modules/debug/src/debug.js var require_debug2 = __commonJS({ "node_modules/debug/src/debug.js"(exports2, module2) { init_define_import_meta_env(); exports2 = module2.exports = createDebug.debug = createDebug["default"] = createDebug; exports2.coerce = coerce; exports2.disable = disable; exports2.enable = enable; exports2.enabled = enabled; exports2.humanize = require_ms3(); exports2.names = []; exports2.skips = []; exports2.formatters = {}; var prevTime; function selectColor(namespace) { var hash2 = 0, i; for (i in namespace) { hash2 = (hash2 << 5) - hash2 + namespace.charCodeAt(i); hash2 |= 0; } return exports2.colors[Math.abs(hash2) % exports2.colors.length]; } function createDebug(namespace) { function debug() { if (!debug.enabled) return; var self2 = debug; var curr = +/* @__PURE__ */ new Date(); var ms = curr - (prevTime || curr); self2.diff = ms; self2.prev = prevTime; self2.curr = curr; prevTime = curr; var args = new Array(arguments.length); for (var i = 0; i < args.length; i++) { args[i] = arguments[i]; } args[0] = exports2.coerce(args[0]); if ("string" !== typeof args[0]) { args.unshift("%O"); } var index2 = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) { if (match === "%%") return match; index2++; var formatter = exports2.formatters[format]; if ("function" === typeof formatter) { var val = args[index2]; match = formatter.call(self2, val); args.splice(index2, 1); index2--; } return match; }); exports2.formatArgs.call(self2, args); var logFn = debug.log || exports2.log || console.log.bind(console); logFn.apply(self2, args); } debug.namespace = namespace; debug.enabled = exports2.enabled(namespace); debug.useColors = exports2.useColors(); debug.color = selectColor(namespace); if ("function" === typeof exports2.init) { exports2.init(debug); } return debug; } function enable(namespaces) { exports2.save(namespaces); exports2.names = []; exports2.skips = []; var split = (typeof namespaces === "string" ? namespaces : "").split(/[\s,]+/); var len = split.length; for (var i = 0; i < len; i++) { if (!split[i]) continue; namespaces = split[i].replace(/\*/g, ".*?"); if (namespaces[0] === "-") { exports2.skips.push(new RegExp("^" + namespaces.substr(1) + "$")); } else { exports2.names.push(new RegExp("^" + namespaces + "$")); } } } function disable() { exports2.enable(""); } function enabled(name) { var i, len; for (i = 0, len = exports2.skips.length; i < len; i++) { if (exports2.skips[i].test(name)) { return false; } } for (i = 0, len = exports2.names.length; i < len; i++) { if (exports2.names[i].test(name)) { return true; } } return false; } function coerce(val) { if (val instanceof Error) return val.stack || val.message; return val; } } }); // node_modules/debug/src/browser.js var require_browser2 = __commonJS({ "node_modules/debug/src/browser.js"(exports2, module2) { init_define_import_meta_env(); exports2 = module2.exports = require_debug2(); exports2.log = log; exports2.formatArgs = formatArgs; exports2.save = save2; exports2.load = load2; exports2.useColors = useColors; exports2.storage = "undefined" != typeof chrome && "undefined" != typeof chrome.storage ? chrome.storage.local : localstorage(); exports2.colors = [ "lightseagreen", "forestgreen", "goldenrod", "dodgerblue", "darkorchid", "crimson" ]; function useColors() { if (typeof window !== "undefined" && window.process && window.process.type === "renderer") { return true; } return typeof document !== "undefined" && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // is firebug? http://stackoverflow.com/a/398120/376773 typeof window !== "undefined" && window.console && (window.console.firebug || window.console.exception && window.console.table) || // is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // double check webkit in userAgent just in case we are in a worker typeof navigator !== "undefined" && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/); } exports2.formatters.j = function(v) { try { return JSON.stringify(v); } catch (err) { return "[UnexpectedJSONParseError]: " + err.message; } }; function formatArgs(args) { var useColors2 = this.useColors; args[0] = (useColors2 ? "%c" : "") + this.namespace + (useColors2 ? " %c" : " ") + args[0] + (useColors2 ? "%c " : " ") + "+" + exports2.humanize(this.diff); if (!useColors2) return; var c = "color: " + this.color; args.splice(1, 0, c, "color: inherit"); var index2 = 0; var lastC = 0; args[0].replace(/%[a-zA-Z%]/g, function(match) { if ("%%" === match) return; index2++; if ("%c" === match) { lastC = index2; } }); args.splice(lastC, 0, c); } function log() { return "object" === typeof console && console.log && Function.prototype.apply.call(console.log, console, arguments); } function save2(namespaces) { try { if (null == namespaces) { exports2.storage.removeItem("debug"); } else { exports2.storage.debug = namespaces; } } catch (e) { } } function load2() { var r; try { r = exports2.storage.debug; } catch (e) { } if (!r && typeof process !== "undefined" && "env" in process) { r = process.env.DEBUG; } return r; } exports2.enable(load2()); function localstorage() { try { return window.localStorage; } catch (e) { } } } }); // node_modules/debug/src/node.js var require_node6 = __commonJS({ "node_modules/debug/src/node.js"(exports2, module2) { init_define_import_meta_env(); var tty = require("tty"); var util = require("util"); exports2 = module2.exports = require_debug2(); exports2.init = init; exports2.log = log; exports2.formatArgs = formatArgs; exports2.save = save2; exports2.load = load2; exports2.useColors = useColors; exports2.colors = [6, 2, 3, 4, 5, 1]; exports2.inspectOpts = Object.keys(process.env).filter(function(key) { return /^debug_/i.test(key); }).reduce(function(obj, key) { var prop = key.substring(6).toLowerCase().replace(/_([a-z])/g, function(_, k) { return k.toUpperCase(); }); var val = process.env[key]; if (/^(yes|on|true|enabled)$/i.test(val)) val = true; else if (/^(no|off|false|disabled)$/i.test(val)) val = false; else if (val === "null") val = null; else val = Number(val); obj[prop] = val; return obj; }, {}); var fd = parseInt(process.env.DEBUG_FD, 10) || 2; if (1 !== fd && 2 !== fd) { util.deprecate(function() { }, "except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)")(); } var stream = 1 === fd ? process.stdout : 2 === fd ? process.stderr : createWritableStdioStream(fd); function useColors() { return "colors" in exports2.inspectOpts ? Boolean(exports2.inspectOpts.colors) : tty.isatty(fd); } exports2.formatters.o = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts).split("\n").map(function(str) { return str.trim(); }).join(" "); }; exports2.formatters.O = function(v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts); }; function formatArgs(args) { var name = this.namespace; var useColors2 = this.useColors; if (useColors2) { var c = this.color; var prefix = " \x1B[3" + c + ";1m" + name + " \x1B[0m"; args[0] = prefix + args[0].split("\n").join("\n" + prefix); args.push("\x1B[3" + c + "m+" + exports2.humanize(this.diff) + "\x1B[0m"); } else { args[0] = (/* @__PURE__ */ new Date()).toUTCString() + " " + name + " " + args[0]; } } function log() { return stream.write(util.format.apply(util, arguments) + "\n"); } function save2(namespaces) { if (null == namespaces) { delete process.env.DEBUG; } else { process.env.DEBUG = namespaces; } } function load2() { return process.env.DEBUG; } function createWritableStdioStream(fd2) { var stream2; var tty_wrap = process.binding("tty_wrap"); switch (tty_wrap.guessHandleType(fd2)) { case "TTY": stream2 = new tty.WriteStream(fd2); stream2._type = "tty"; if (stream2._handle && stream2._handle.unref) { stream2._handle.unref(); } break; case "FILE": var fs = require("fs"); stream2 = new fs.SyncWriteStream(fd2, { autoClose: false }); stream2._type = "fs"; break; case "PIPE": case "TCP": var net = require("net"); stream2 = new net.Socket({ fd: fd2, readable: false, writable: true }); stream2.readable = false; stream2.read = null; stream2._type = "pipe"; if (stream2._handle && stream2._handle.unref) { stream2._handle.unref(); } break; default: throw new Error("Implement me. Unknown stream file type!"); } stream2.fd = fd2; stream2._isStdio = true; return stream2; } function init(debug) { debug.inspectOpts = {}; var keys = Object.keys(exports2.inspectOpts); for (var i = 0; i < keys.length; i++) { debug.inspectOpts[keys[i]] = exports2.inspectOpts[keys[i]]; } } exports2.enable(load2()); } }); // node_modules/debug/src/index.js var require_src2 = __commonJS({ "node_modules/debug/src/index.js"(exports2, module2) { init_define_import_meta_env(); if (typeof process !== "undefined" && process.type === "renderer") { module2.exports = require_browser2(); } else { module2.exports = require_node6(); } } }); // node_modules/websocket/lib/utils.js var require_utils5 = __commonJS({ "node_modules/websocket/lib/utils.js"(exports2) { init_define_import_meta_env(); var noop = exports2.noop = function() { }; exports2.extend = function extend(dest, source) { for (var prop in source) { dest[prop] = source[prop]; } }; exports2.eventEmitterListenerCount = require("events").EventEmitter.listenerCount || function(emitter, type) { return emitter.listeners(type).length; }; exports2.bufferAllocUnsafe = Buffer.allocUnsafe ? Buffer.allocUnsafe : function oldBufferAllocUnsafe(size) { return new Buffer(size); }; exports2.bufferFromString = Buffer.from ? Buffer.from : function oldBufferFromString(string, encoding) { return new Buffer(string, encoding); }; exports2.BufferingLogger = function createBufferingLogger(identifier, uniqueID) { var logFunction = require_src2()(identifier); if (logFunction.enabled) { var logger = new BufferingLogger(identifier, uniqueID, logFunction); var debug = logger.log.bind(logger); debug.printOutput = logger.printOutput.bind(logger); debug.enabled = logFunction.enabled; return debug; } logFunction.printOutput = noop; return logFunction; }; function BufferingLogger(identifier, uniqueID, logFunction) { this.logFunction = logFunction; this.identifier = identifier; this.uniqueID = uniqueID; this.buffer = []; } BufferingLogger.prototype.log = function() { this.buffer.push([/* @__PURE__ */ new Date(), Array.prototype.slice.call(arguments)]); return this; }; BufferingLogger.prototype.clear = function() { this.buffer = []; return this; }; BufferingLogger.prototype.printOutput = function(logFunction) { if (!logFunction) { logFunction = this.logFunction; } var uniqueID = this.uniqueID; this.buffer.forEach(function(entry) { var date = entry[0].toLocaleString(); var args = entry[1].slice(); var formatString = args[0]; if (formatString !== void 0 && formatString !== null) { formatString = "%s - %s - " + formatString.toString(); args.splice(0, 1, formatString, date, uniqueID); logFunction.apply(global, args); } }); }; } }); // node_modules/node-gyp-build/node-gyp-build.js var require_node_gyp_build = __commonJS({ "node_modules/node-gyp-build/node-gyp-build.js"(exports2, module2) { init_define_import_meta_env(); var fs = require("fs"); var path2 = require("path"); var os = require("os"); var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require; var vars = process.config && process.config.variables || {}; var prebuildsOnly = !!process.env.PREBUILDS_ONLY; var abi = process.versions.modules; var runtime = isElectron() ? "electron" : isNwjs() ? "node-webkit" : "node"; var arch = process.env.npm_config_arch || os.arch(); var platform = process.env.npm_config_platform || os.platform(); var libc = process.env.LIBC || (isAlpine(platform) ? "musl" : "glibc"); var armv = process.env.ARM_VERSION || (arch === "arm64" ? "8" : vars.arm_version) || ""; var uv = (process.versions.uv || "").split(".")[0]; module2.exports = load2; function load2(dir) { return runtimeRequire(load2.resolve(dir)); } load2.resolve = load2.path = function(dir) { dir = path2.resolve(dir || "."); try { var name = runtimeRequire(path2.join(dir, "package.json")).name.toUpperCase().replace(/-/g, "_"); if (process.env[name + "_PREBUILD"]) dir = process.env[name + "_PREBUILD"]; } catch (err) { } if (!prebuildsOnly) { var release = getFirst(path2.join(dir, "build/Release"), matchBuild); if (release) return release; var debug = getFirst(path2.join(dir, "build/Debug"), matchBuild); if (debug) return debug; } var prebuild = resolve(dir); if (prebuild) return prebuild; var nearby = resolve(path2.dirname(process.execPath)); if (nearby) return nearby; var target = [ "platform=" + platform, "arch=" + arch, "runtime=" + runtime, "abi=" + abi, "uv=" + uv, armv ? "armv=" + armv : "", "libc=" + libc, "node=" + process.versions.node, process.versions.electron ? "electron=" + process.versions.electron : "", typeof __webpack_require__ === "function" ? "webpack=true" : "" // eslint-disable-line ].filter(Boolean).join(" "); throw new Error("No native build was found for " + target + "\n loaded from: " + dir + "\n"); function resolve(dir2) { var tuples = readdirSync(path2.join(dir2, "prebuilds")).map(parseTuple); var tuple = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0]; if (!tuple) return; var prebuilds = path2.join(dir2, "prebuilds", tuple.name); var parsed = readdirSync(prebuilds).map(parseTags); var candidates = parsed.filter(matchTags(runtime, abi)); var winner = candidates.sort(compareTags(runtime))[0]; if (winner) return path2.join(prebuilds, winner.file); } }; function readdirSync(dir) { try { return fs.readdirSync(dir); } catch (err) { return []; } } function getFirst(dir, filter2) { var files = readdirSync(dir).filter(filter2); return files[0] && path2.join(dir, files[0]); } function matchBuild(name) { return /\.node$/.test(name); } function parseTuple(name) { var arr = name.split("-"); if (arr.length !== 2) return; var platform2 = arr[0]; var architectures = arr[1].split("+"); if (!platform2) return; if (!architectures.length) return; if (!architectures.every(Boolean)) return; return { name, platform: platform2, architectures }; } function matchTuple(platform2, arch2) { return function(tuple) { if (tuple == null) return false; if (tuple.platform !== platform2) return false; return tuple.architectures.includes(arch2); }; } function compareTuples(a, b) { return a.architectures.length - b.architectures.length; } function parseTags(file) { var arr = file.split("."); var extension = arr.pop(); var tags = { file, specificity: 0 }; if (extension !== "node") return; for (var i = 0; i < arr.length; i++) { var tag = arr[i]; if (tag === "node" || tag === "electron" || tag === "node-webkit") { tags.runtime = tag; } else if (tag === "napi") { tags.napi = true; } else if (tag.slice(0, 3) === "abi") { tags.abi = tag.slice(3); } else if (tag.slice(0, 2) === "uv") { tags.uv = tag.slice(2); } else if (tag.slice(0, 4) === "armv") { tags.armv = tag.slice(4); } else if (tag === "glibc" || tag === "musl") { tags.libc = tag; } else { continue; } tags.specificity++; } return tags; } function matchTags(runtime2, abi2) { return function(tags) { if (tags == null) return false; if (tags.runtime && tags.runtime !== runtime2 && !runtimeAgnostic(tags)) return false; if (tags.abi && tags.abi !== abi2 && !tags.napi) return false; if (tags.uv && tags.uv !== uv) return false; if (tags.armv && tags.armv !== armv) return false; if (tags.libc && tags.libc !== libc) return false; return true; }; } function runtimeAgnostic(tags) { return tags.runtime === "node" && tags.napi; } function compareTags(runtime2) { return function(a, b) { if (a.runtime !== b.runtime) { return a.runtime === runtime2 ? -1 : 1; } else if (a.abi !== b.abi) { return a.abi ? -1 : 1; } else if (a.specificity !== b.specificity) { return a.specificity > b.specificity ? -1 : 1; } else { return 0; } }; } function isNwjs() { return !!(process.versions && process.versions.nw); } function isElectron() { if (process.versions && process.versions.electron) return true; if (process.env.ELECTRON_RUN_AS_NODE) return true; return typeof window !== "undefined" && window.process && window.process.type === "renderer"; } function isAlpine(platform2) { return platform2 === "linux" && fs.existsSync("/etc/alpine-release"); } load2.parseTags = parseTags; load2.matchTags = matchTags; load2.compareTags = compareTags; load2.parseTuple = parseTuple; load2.matchTuple = matchTuple; load2.compareTuples = compareTuples; } }); // node_modules/node-gyp-build/index.js var require_node_gyp_build2 = __commonJS({ "node_modules/node-gyp-build/index.js"(exports2, module2) { init_define_import_meta_env(); var runtimeRequire = typeof __webpack_require__ === "function" ? __non_webpack_require__ : require; if (typeof runtimeRequire.addon === "function") { module2.exports = runtimeRequire.addon.bind(runtimeRequire); } else { module2.exports = require_node_gyp_build(); } } }); // node_modules/bufferutil/fallback.js var require_fallback = __commonJS({ "node_modules/bufferutil/fallback.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); var mask = (source, mask2, output, offset, length) => { for (var i = 0; i < length; i++) { output[offset + i] = source[i] ^ mask2[i & 3]; } }; var unmask = (buffer, mask2) => { const length = buffer.length; for (var i = 0; i < length; i++) { buffer[i] ^= mask2[i & 3]; } }; module2.exports = { mask, unmask }; } }); // node_modules/bufferutil/index.js var require_bufferutil = __commonJS({ "node_modules/bufferutil/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); try { module2.exports = require_node_gyp_build2()(__dirname); } catch (e) { module2.exports = require_fallback(); } } }); // node_modules/websocket/lib/WebSocketFrame.js var require_WebSocketFrame = __commonJS({ "node_modules/websocket/lib/WebSocketFrame.js"(exports2, module2) { init_define_import_meta_env(); var bufferUtil = require_bufferutil(); var bufferAllocUnsafe = require_utils5().bufferAllocUnsafe; var DECODE_HEADER = 1; var WAITING_FOR_16_BIT_LENGTH = 2; var WAITING_FOR_64_BIT_LENGTH = 3; var WAITING_FOR_MASK_KEY = 4; var WAITING_FOR_PAYLOAD = 5; var COMPLETE = 6; function WebSocketFrame(maskBytes, frameHeader, config) { this.maskBytes = maskBytes; this.frameHeader = frameHeader; this.config = config; this.maxReceivedFrameSize = config.maxReceivedFrameSize; this.protocolError = false; this.frameTooLarge = false; this.invalidCloseFrameLength = false; this.parseState = DECODE_HEADER; this.closeStatus = -1; } WebSocketFrame.prototype.addData = function(bufferList) { if (this.parseState === DECODE_HEADER) { if (bufferList.length >= 2) { bufferList.joinInto(this.frameHeader, 0, 0, 2); bufferList.advance(2); var firstByte = this.frameHeader[0]; var secondByte = this.frameHeader[1]; this.fin = Boolean(firstByte & 128); this.rsv1 = Boolean(firstByte & 64); this.rsv2 = Boolean(firstByte & 32); this.rsv3 = Boolean(firstByte & 16); this.mask = Boolean(secondByte & 128); this.opcode = firstByte & 15; this.length = secondByte & 127; if (this.opcode >= 8) { if (this.length > 125) { this.protocolError = true; this.dropReason = "Illegal control frame longer than 125 bytes."; return true; } if (!this.fin) { this.protocolError = true; this.dropReason = "Control frames must not be fragmented."; return true; } } if (this.length === 126) { this.parseState = WAITING_FOR_16_BIT_LENGTH; } else if (this.length === 127) { this.parseState = WAITING_FOR_64_BIT_LENGTH; } else { this.parseState = WAITING_FOR_MASK_KEY; } } } if (this.parseState === WAITING_FOR_16_BIT_LENGTH) { if (bufferList.length >= 2) { bufferList.joinInto(this.frameHeader, 2, 0, 2); bufferList.advance(2); this.length = this.frameHeader.readUInt16BE(2); this.parseState = WAITING_FOR_MASK_KEY; } } else if (this.parseState === WAITING_FOR_64_BIT_LENGTH) { if (bufferList.length >= 8) { bufferList.joinInto(this.frameHeader, 2, 0, 8); bufferList.advance(8); var lengthPair = [ this.frameHeader.readUInt32BE(2), this.frameHeader.readUInt32BE(2 + 4) ]; if (lengthPair[0] !== 0) { this.protocolError = true; this.dropReason = "Unsupported 64-bit length frame received"; return true; } this.length = lengthPair[1]; this.parseState = WAITING_FOR_MASK_KEY; } } if (this.parseState === WAITING_FOR_MASK_KEY) { if (this.mask) { if (bufferList.length >= 4) { bufferList.joinInto(this.maskBytes, 0, 0, 4); bufferList.advance(4); this.parseState = WAITING_FOR_PAYLOAD; } } else { this.parseState = WAITING_FOR_PAYLOAD; } } if (this.parseState === WAITING_FOR_PAYLOAD) { if (this.length > this.maxReceivedFrameSize) { this.frameTooLarge = true; this.dropReason = "Frame size of " + this.length.toString(10) + " bytes exceeds maximum accepted frame size"; return true; } if (this.length === 0) { this.binaryPayload = bufferAllocUnsafe(0); this.parseState = COMPLETE; return true; } if (bufferList.length >= this.length) { this.binaryPayload = bufferList.take(this.length); bufferList.advance(this.length); if (this.mask) { bufferUtil.unmask(this.binaryPayload, this.maskBytes); } if (this.opcode === 8) { if (this.length === 1) { this.binaryPayload = bufferAllocUnsafe(0); this.invalidCloseFrameLength = true; } if (this.length >= 2) { this.closeStatus = this.binaryPayload.readUInt16BE(0); this.binaryPayload = this.binaryPayload.slice(2); } } this.parseState = COMPLETE; return true; } } return false; }; WebSocketFrame.prototype.throwAwayPayload = function(bufferList) { if (bufferList.length >= this.length) { bufferList.advance(this.length); this.parseState = COMPLETE; return true; } return false; }; WebSocketFrame.prototype.toBuffer = function(nullMask) { var maskKey; var headerLength = 2; var data; var outputPos; var firstByte = 0; var secondByte = 0; if (this.fin) { firstByte |= 128; } if (this.rsv1) { firstByte |= 64; } if (this.rsv2) { firstByte |= 32; } if (this.rsv3) { firstByte |= 16; } if (this.mask) { secondByte |= 128; } firstByte |= this.opcode & 15; if (this.opcode === 8) { this.length = 2; if (this.binaryPayload) { this.length += this.binaryPayload.length; } data = bufferAllocUnsafe(this.length); data.writeUInt16BE(this.closeStatus, 0); if (this.length > 2) { this.binaryPayload.copy(data, 2); } } else if (this.binaryPayload) { data = this.binaryPayload; this.length = data.length; } else { this.length = 0; } if (this.length <= 125) { secondByte |= this.length & 127; } else if (this.length > 125 && this.length <= 65535) { secondByte |= 126; headerLength += 2; } else if (this.length > 65535) { secondByte |= 127; headerLength += 8; } var output = bufferAllocUnsafe(this.length + headerLength + (this.mask ? 4 : 0)); output[0] = firstByte; output[1] = secondByte; outputPos = 2; if (this.length > 125 && this.length <= 65535) { output.writeUInt16BE(this.length, outputPos); outputPos += 2; } else if (this.length > 65535) { output.writeUInt32BE(0, outputPos); output.writeUInt32BE(this.length, outputPos + 4); outputPos += 8; } if (this.mask) { maskKey = nullMask ? 0 : Math.random() * 4294967295 >>> 0; this.maskBytes.writeUInt32BE(maskKey, 0); this.maskBytes.copy(output, outputPos); outputPos += 4; if (data) { bufferUtil.mask(data, this.maskBytes, output, outputPos, this.length); } } else if (data) { data.copy(output, outputPos); } return output; }; WebSocketFrame.prototype.toString = function() { return "Opcode: " + this.opcode + ", fin: " + this.fin + ", length: " + this.length + ", hasPayload: " + Boolean(this.binaryPayload) + ", masked: " + this.mask; }; module2.exports = WebSocketFrame; } }); // node_modules/websocket/vendor/FastBufferList.js var require_FastBufferList = __commonJS({ "node_modules/websocket/vendor/FastBufferList.js"(exports2, module2) { init_define_import_meta_env(); var Buffer2 = require("buffer").Buffer; var EventEmitter = require("events").EventEmitter; var bufferAllocUnsafe = require_utils5().bufferAllocUnsafe; module2.exports = BufferList; module2.exports.BufferList = BufferList; function BufferList(opts) { if (!(this instanceof BufferList)) return new BufferList(opts); EventEmitter.call(this); var self2 = this; if (typeof opts == "undefined") opts = {}; self2.encoding = opts.encoding; var head = { next: null, buffer: null }; var last = { next: null, buffer: null }; var length = 0; self2.__defineGetter__("length", function() { return length; }); var offset = 0; self2.write = function(buf) { if (!head.buffer) { head.buffer = buf; last = head; } else { last.next = { next: null, buffer: buf }; last = last.next; } length += buf.length; self2.emit("write", buf); return true; }; self2.end = function(buf) { if (Buffer2.isBuffer(buf)) self2.write(buf); }; self2.push = function() { var args = [].concat.apply([], arguments); args.forEach(self2.write); return self2; }; self2.forEach = function(fn) { if (!head.buffer) return bufferAllocUnsafe(0); if (head.buffer.length - offset <= 0) return self2; var firstBuf = head.buffer.slice(offset); var b = { buffer: firstBuf, next: head.next }; while (b && b.buffer) { var r = fn(b.buffer); if (r) break; b = b.next; } return self2; }; self2.join = function(start, end) { if (!head.buffer) return bufferAllocUnsafe(0); if (start == void 0) start = 0; if (end == void 0) end = self2.length; var big = bufferAllocUnsafe(end - start); var ix = 0; self2.forEach(function(buffer) { if (start < ix + buffer.length && ix < end) { buffer.copy( big, Math.max(0, ix - start), Math.max(0, start - ix), Math.min(buffer.length, end - ix) ); } ix += buffer.length; if (ix > end) return true; }); return big; }; self2.joinInto = function(targetBuffer, targetStart, sourceStart, sourceEnd) { if (!head.buffer) return new bufferAllocUnsafe(0); if (sourceStart == void 0) sourceStart = 0; if (sourceEnd == void 0) sourceEnd = self2.length; var big = targetBuffer; if (big.length - targetStart < sourceEnd - sourceStart) { throw new Error("Insufficient space available in target Buffer."); } var ix = 0; self2.forEach(function(buffer) { if (sourceStart < ix + buffer.length && ix < sourceEnd) { buffer.copy( big, Math.max(targetStart, targetStart + ix - sourceStart), Math.max(0, sourceStart - ix), Math.min(buffer.length, sourceEnd - ix) ); } ix += buffer.length; if (ix > sourceEnd) return true; }); return big; }; self2.advance = function(n) { offset += n; length -= n; while (head.buffer && offset >= head.buffer.length) { offset -= head.buffer.length; head = head.next ? head.next : { buffer: null, next: null }; } if (head.buffer === null) last = { next: null, buffer: null }; self2.emit("advance", n); return self2; }; self2.take = function(n, encoding) { if (n == void 0) n = self2.length; else if (typeof n !== "number") { encoding = n; n = self2.length; } var b = head; if (!encoding) encoding = self2.encoding; if (encoding) { var acc = ""; self2.forEach(function(buffer) { if (n <= 0) return true; acc += buffer.toString( encoding, 0, Math.min(n, buffer.length) ); n -= buffer.length; }); return acc; } else { return self2.join(0, n); } }; self2.toString = function() { return self2.take("binary"); }; } require("util").inherits(BufferList, EventEmitter); } }); // node_modules/utf-8-validate/fallback.js var require_fallback2 = __commonJS({ "node_modules/utf-8-validate/fallback.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); function isValidUTF8(buf) { const len = buf.length; let i = 0; while (i < len) { if ((buf[i] & 128) === 0) { i++; } else if ((buf[i] & 224) === 192) { if (i + 1 === len || (buf[i + 1] & 192) !== 128 || (buf[i] & 254) === 192) { return false; } i += 2; } else if ((buf[i] & 240) === 224) { if (i + 2 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || buf[i] === 224 && (buf[i + 1] & 224) === 128 || // overlong buf[i] === 237 && (buf[i + 1] & 224) === 160) { return false; } i += 3; } else if ((buf[i] & 248) === 240) { if (i + 3 >= len || (buf[i + 1] & 192) !== 128 || (buf[i + 2] & 192) !== 128 || (buf[i + 3] & 192) !== 128 || buf[i] === 240 && (buf[i + 1] & 240) === 128 || // overlong buf[i] === 244 && buf[i + 1] > 143 || buf[i] > 244) { return false; } i += 4; } else { return false; } } return true; } module2.exports = isValidUTF8; } }); // node_modules/utf-8-validate/index.js var require_utf_8_validate = __commonJS({ "node_modules/utf-8-validate/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); try { module2.exports = require_node_gyp_build2()(__dirname); } catch (e) { module2.exports = require_fallback2(); } } }); // node_modules/websocket/lib/WebSocketConnection.js var require_WebSocketConnection = __commonJS({ "node_modules/websocket/lib/WebSocketConnection.js"(exports2, module2) { init_define_import_meta_env(); var util = require("util"); var utils = require_utils5(); var EventEmitter = require("events").EventEmitter; var WebSocketFrame = require_WebSocketFrame(); var BufferList = require_FastBufferList(); var isValidUTF8 = require_utf_8_validate(); var bufferAllocUnsafe = utils.bufferAllocUnsafe; var bufferFromString = utils.bufferFromString; var STATE_OPEN = "open"; var STATE_PEER_REQUESTED_CLOSE = "peer_requested_close"; var STATE_ENDING = "ending"; var STATE_CLOSED = "closed"; var setImmediateImpl = "setImmediate" in global ? global.setImmediate.bind(global) : process.nextTick.bind(process); var idCounter = 0; function WebSocketConnection(socket, extensions, protocol, maskOutgoingPackets, config) { this._debug = utils.BufferingLogger("websocket:connection", ++idCounter); this._debug("constructor"); if (this._debug.enabled) { instrumentSocketForDebugging(this, socket); } EventEmitter.call(this); this._pingListenerCount = 0; this.on("newListener", function(ev) { if (ev === "ping") { this._pingListenerCount++; } }).on("removeListener", function(ev) { if (ev === "ping") { this._pingListenerCount--; } }); this.config = config; this.socket = socket; this.protocol = protocol; this.extensions = extensions; this.remoteAddress = socket.remoteAddress; this.closeReasonCode = -1; this.closeDescription = null; this.closeEventEmitted = false; this.maskOutgoingPackets = maskOutgoingPackets; this.maskBytes = bufferAllocUnsafe(4); this.frameHeader = bufferAllocUnsafe(10); this.bufferList = new BufferList(); this.currentFrame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); this.fragmentationSize = 0; this.frameQueue = []; this.connected = true; this.state = STATE_OPEN; this.waitingForCloseResponse = false; this.receivedEnd = false; this.closeTimeout = this.config.closeTimeout; this.assembleFragments = this.config.assembleFragments; this.maxReceivedMessageSize = this.config.maxReceivedMessageSize; this.outputBufferFull = false; this.inputPaused = false; this.receivedDataHandler = this.processReceivedData.bind(this); this._closeTimerHandler = this.handleCloseTimer.bind(this); this.socket.setNoDelay(this.config.disableNagleAlgorithm); this.socket.setTimeout(0); if (this.config.keepalive && !this.config.useNativeKeepalive) { if (typeof this.config.keepaliveInterval !== "number") { throw new Error("keepaliveInterval must be specified and numeric if keepalive is true."); } this._keepaliveTimerHandler = this.handleKeepaliveTimer.bind(this); this.setKeepaliveTimer(); if (this.config.dropConnectionOnKeepaliveTimeout) { if (typeof this.config.keepaliveGracePeriod !== "number") { throw new Error("keepaliveGracePeriod must be specified and numeric if dropConnectionOnKeepaliveTimeout is true."); } this._gracePeriodTimerHandler = this.handleGracePeriodTimer.bind(this); } } else if (this.config.keepalive && this.config.useNativeKeepalive) { if (!("setKeepAlive" in this.socket)) { throw new Error("Unable to use native keepalive: unsupported by this version of Node."); } this.socket.setKeepAlive(true, this.config.keepaliveInterval); } this.socket.removeAllListeners("error"); } WebSocketConnection.CLOSE_REASON_NORMAL = 1e3; WebSocketConnection.CLOSE_REASON_GOING_AWAY = 1001; WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR = 1002; WebSocketConnection.CLOSE_REASON_UNPROCESSABLE_INPUT = 1003; WebSocketConnection.CLOSE_REASON_RESERVED = 1004; WebSocketConnection.CLOSE_REASON_NOT_PROVIDED = 1005; WebSocketConnection.CLOSE_REASON_ABNORMAL = 1006; WebSocketConnection.CLOSE_REASON_INVALID_DATA = 1007; WebSocketConnection.CLOSE_REASON_POLICY_VIOLATION = 1008; WebSocketConnection.CLOSE_REASON_MESSAGE_TOO_BIG = 1009; WebSocketConnection.CLOSE_REASON_EXTENSION_REQUIRED = 1010; WebSocketConnection.CLOSE_REASON_INTERNAL_SERVER_ERROR = 1011; WebSocketConnection.CLOSE_REASON_TLS_HANDSHAKE_FAILED = 1015; WebSocketConnection.CLOSE_DESCRIPTIONS = { 1e3: "Normal connection closure", 1001: "Remote peer is going away", 1002: "Protocol error", 1003: "Unprocessable input", 1004: "Reserved", 1005: "Reason not provided", 1006: "Abnormal closure, no further detail available", 1007: "Invalid data received", 1008: "Policy violation", 1009: "Message too big", 1010: "Extension requested by client is required", 1011: "Internal Server Error", 1015: "TLS Handshake Failed" }; function validateCloseReason(code) { if (code < 1e3) { return false; } if (code >= 1e3 && code <= 2999) { return [1e3, 1001, 1002, 1003, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015].indexOf(code) !== -1; } if (code >= 3e3 && code <= 3999) { return true; } if (code >= 4e3 && code <= 4999) { return true; } if (code >= 5e3) { return false; } } util.inherits(WebSocketConnection, EventEmitter); WebSocketConnection.prototype._addSocketEventListeners = function() { this.socket.on("error", this.handleSocketError.bind(this)); this.socket.on("end", this.handleSocketEnd.bind(this)); this.socket.on("close", this.handleSocketClose.bind(this)); this.socket.on("drain", this.handleSocketDrain.bind(this)); this.socket.on("pause", this.handleSocketPause.bind(this)); this.socket.on("resume", this.handleSocketResume.bind(this)); this.socket.on("data", this.handleSocketData.bind(this)); }; WebSocketConnection.prototype.setKeepaliveTimer = function() { this._debug("setKeepaliveTimer"); if (!this.config.keepalive || this.config.useNativeKeepalive) { return; } this.clearKeepaliveTimer(); this.clearGracePeriodTimer(); this._keepaliveTimeoutID = setTimeout(this._keepaliveTimerHandler, this.config.keepaliveInterval); }; WebSocketConnection.prototype.clearKeepaliveTimer = function() { if (this._keepaliveTimeoutID) { clearTimeout(this._keepaliveTimeoutID); } }; WebSocketConnection.prototype.handleKeepaliveTimer = function() { this._debug("handleKeepaliveTimer"); this._keepaliveTimeoutID = null; this.ping(); if (this.config.dropConnectionOnKeepaliveTimeout) { this.setGracePeriodTimer(); } else { this.setKeepaliveTimer(); } }; WebSocketConnection.prototype.setGracePeriodTimer = function() { this._debug("setGracePeriodTimer"); this.clearGracePeriodTimer(); this._gracePeriodTimeoutID = setTimeout(this._gracePeriodTimerHandler, this.config.keepaliveGracePeriod); }; WebSocketConnection.prototype.clearGracePeriodTimer = function() { if (this._gracePeriodTimeoutID) { clearTimeout(this._gracePeriodTimeoutID); } }; WebSocketConnection.prototype.handleGracePeriodTimer = function() { this._debug("handleGracePeriodTimer"); this._gracePeriodTimeoutID = null; this.drop(WebSocketConnection.CLOSE_REASON_ABNORMAL, "Peer not responding.", true); }; WebSocketConnection.prototype.handleSocketData = function(data) { this._debug("handleSocketData"); this.setKeepaliveTimer(); this.bufferList.write(data); this.processReceivedData(); }; WebSocketConnection.prototype.processReceivedData = function() { this._debug("processReceivedData"); if (!this.connected) { return; } if (this.inputPaused) { return; } var frame = this.currentFrame; if (!frame.addData(this.bufferList)) { this._debug("-- insufficient data for frame"); return; } var self2 = this; if (frame.protocolError) { this._debug("-- protocol error"); process.nextTick(function() { self2.drop(WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR, frame.dropReason); }); return; } else if (frame.frameTooLarge) { this._debug("-- frame too large"); process.nextTick(function() { self2.drop(WebSocketConnection.CLOSE_REASON_MESSAGE_TOO_BIG, frame.dropReason); }); return; } if (frame.rsv1 || frame.rsv2 || frame.rsv3) { this._debug("-- illegal rsv flag"); process.nextTick(function() { self2.drop( WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR, "Unsupported usage of rsv bits without negotiated extension." ); }); return; } if (!this.assembleFragments) { this._debug("-- emitting frame"); process.nextTick(function() { self2.emit("frame", frame); }); } process.nextTick(function() { self2.processFrame(frame); }); this.currentFrame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); if (this.bufferList.length > 0) { setImmediateImpl(this.receivedDataHandler); } }; WebSocketConnection.prototype.handleSocketError = function(error) { this._debug("handleSocketError: %j", error); if (this.state === STATE_CLOSED) { this._debug(" --- Socket 'error' after 'close'"); return; } this.closeReasonCode = WebSocketConnection.CLOSE_REASON_ABNORMAL; this.closeDescription = "Socket Error: " + error.syscall + " " + error.code; this.connected = false; this.state = STATE_CLOSED; this.fragmentationSize = 0; if (utils.eventEmitterListenerCount(this, "error") > 0) { this.emit("error", error); } this.socket.destroy(); this._debug.printOutput(); }; WebSocketConnection.prototype.handleSocketEnd = function() { this._debug("handleSocketEnd: received socket end. state = %s", this.state); this.receivedEnd = true; if (this.state === STATE_CLOSED) { this._debug(" --- Socket 'end' after 'close'"); return; } if (this.state !== STATE_PEER_REQUESTED_CLOSE && this.state !== STATE_ENDING) { this._debug(" --- UNEXPECTED socket end."); this.socket.end(); } }; WebSocketConnection.prototype.handleSocketClose = function(hadError) { this._debug("handleSocketClose: received socket close"); this.socketHadError = hadError; this.connected = false; this.state = STATE_CLOSED; if (this.closeReasonCode === -1) { this.closeReasonCode = WebSocketConnection.CLOSE_REASON_ABNORMAL; this.closeDescription = "Connection dropped by remote peer."; } this.clearCloseTimer(); this.clearKeepaliveTimer(); this.clearGracePeriodTimer(); if (!this.closeEventEmitted) { this.closeEventEmitted = true; this._debug("-- Emitting WebSocketConnection close event"); this.emit("close", this.closeReasonCode, this.closeDescription); } }; WebSocketConnection.prototype.handleSocketDrain = function() { this._debug("handleSocketDrain: socket drain event"); this.outputBufferFull = false; this.emit("drain"); }; WebSocketConnection.prototype.handleSocketPause = function() { this._debug("handleSocketPause: socket pause event"); this.inputPaused = true; this.emit("pause"); }; WebSocketConnection.prototype.handleSocketResume = function() { this._debug("handleSocketResume: socket resume event"); this.inputPaused = false; this.emit("resume"); this.processReceivedData(); }; WebSocketConnection.prototype.pause = function() { this._debug("pause: pause requested"); this.socket.pause(); }; WebSocketConnection.prototype.resume = function() { this._debug("resume: resume requested"); this.socket.resume(); }; WebSocketConnection.prototype.close = function(reasonCode, description) { if (this.connected) { this._debug("close: Initating clean WebSocket close sequence."); if ("number" !== typeof reasonCode) { reasonCode = WebSocketConnection.CLOSE_REASON_NORMAL; } if (!validateCloseReason(reasonCode)) { throw new Error("Close code " + reasonCode + " is not valid."); } if ("string" !== typeof description) { description = WebSocketConnection.CLOSE_DESCRIPTIONS[reasonCode]; } this.closeReasonCode = reasonCode; this.closeDescription = description; this.setCloseTimer(); this.sendCloseFrame(this.closeReasonCode, this.closeDescription); this.state = STATE_ENDING; this.connected = false; } }; WebSocketConnection.prototype.drop = function(reasonCode, description, skipCloseFrame) { this._debug("drop"); if (typeof reasonCode !== "number") { reasonCode = WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR; } if (typeof description !== "string") { description = WebSocketConnection.CLOSE_DESCRIPTIONS[reasonCode]; } this._debug( "Forcefully dropping connection. skipCloseFrame: %s, code: %d, description: %s", skipCloseFrame, reasonCode, description ); this.closeReasonCode = reasonCode; this.closeDescription = description; this.frameQueue = []; this.fragmentationSize = 0; if (!skipCloseFrame) { this.sendCloseFrame(reasonCode, description); } this.connected = false; this.state = STATE_CLOSED; this.clearCloseTimer(); this.clearKeepaliveTimer(); this.clearGracePeriodTimer(); if (!this.closeEventEmitted) { this.closeEventEmitted = true; this._debug("Emitting WebSocketConnection close event"); this.emit("close", this.closeReasonCode, this.closeDescription); } this._debug("Drop: destroying socket"); this.socket.destroy(); }; WebSocketConnection.prototype.setCloseTimer = function() { this._debug("setCloseTimer"); this.clearCloseTimer(); this._debug("Setting close timer"); this.waitingForCloseResponse = true; this.closeTimer = setTimeout(this._closeTimerHandler, this.closeTimeout); }; WebSocketConnection.prototype.clearCloseTimer = function() { this._debug("clearCloseTimer"); if (this.closeTimer) { this._debug("Clearing close timer"); clearTimeout(this.closeTimer); this.waitingForCloseResponse = false; this.closeTimer = null; } }; WebSocketConnection.prototype.handleCloseTimer = function() { this._debug("handleCloseTimer"); this.closeTimer = null; if (this.waitingForCloseResponse) { this._debug("Close response not received from client. Forcing socket end."); this.waitingForCloseResponse = false; this.state = STATE_CLOSED; this.socket.end(); } }; WebSocketConnection.prototype.processFrame = function(frame) { this._debug("processFrame"); this._debug(" -- frame: %s", frame); if (this.frameQueue.length !== 0 && (frame.opcode > 0 && frame.opcode < 8)) { this.drop( WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR, "Illegal frame opcode 0x" + frame.opcode.toString(16) + " received in middle of fragmented message." ); return; } switch (frame.opcode) { case 2: this._debug("-- Binary Frame"); if (this.assembleFragments) { if (frame.fin) { this._debug("---- Emitting 'message' event"); this.emit("message", { type: "binary", binaryData: frame.binaryPayload }); } else { this.frameQueue.push(frame); this.fragmentationSize = frame.length; } } break; case 1: this._debug("-- Text Frame"); if (this.assembleFragments) { if (frame.fin) { if (!isValidUTF8(frame.binaryPayload)) { this.drop( WebSocketConnection.CLOSE_REASON_INVALID_DATA, "Invalid UTF-8 Data Received" ); return; } this._debug("---- Emitting 'message' event"); this.emit("message", { type: "utf8", utf8Data: frame.binaryPayload.toString("utf8") }); } else { this.frameQueue.push(frame); this.fragmentationSize = frame.length; } } break; case 0: this._debug("-- Continuation Frame"); if (this.assembleFragments) { if (this.frameQueue.length === 0) { this.drop( WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR, "Unexpected Continuation Frame" ); return; } this.fragmentationSize += frame.length; if (this.fragmentationSize > this.maxReceivedMessageSize) { this.drop( WebSocketConnection.CLOSE_REASON_MESSAGE_TOO_BIG, "Maximum message size exceeded." ); return; } this.frameQueue.push(frame); if (frame.fin) { var bytesCopied = 0; var binaryPayload = bufferAllocUnsafe(this.fragmentationSize); var opcode = this.frameQueue[0].opcode; this.frameQueue.forEach(function(currentFrame) { currentFrame.binaryPayload.copy(binaryPayload, bytesCopied); bytesCopied += currentFrame.binaryPayload.length; }); this.frameQueue = []; this.fragmentationSize = 0; switch (opcode) { case 2: this.emit("message", { type: "binary", binaryData: binaryPayload }); break; case 1: if (!isValidUTF8(binaryPayload)) { this.drop( WebSocketConnection.CLOSE_REASON_INVALID_DATA, "Invalid UTF-8 Data Received" ); return; } this.emit("message", { type: "utf8", utf8Data: binaryPayload.toString("utf8") }); break; default: this.drop( WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR, "Unexpected first opcode in fragmentation sequence: 0x" + opcode.toString(16) ); return; } } } break; case 9: this._debug("-- Ping Frame"); if (this._pingListenerCount > 0) { var cancelled = false; var cancel = function() { cancelled = true; }; this.emit("ping", cancel, frame.binaryPayload); if (!cancelled) { this.pong(frame.binaryPayload); } } else { this.pong(frame.binaryPayload); } break; case 10: this._debug("-- Pong Frame"); this.emit("pong", frame.binaryPayload); break; case 8: this._debug("-- Close Frame"); if (this.waitingForCloseResponse) { this._debug("---- Got close response from peer. Completing closing handshake."); this.clearCloseTimer(); this.waitingForCloseResponse = false; this.state = STATE_CLOSED; this.socket.end(); return; } this._debug("---- Closing handshake initiated by peer."); this.state = STATE_PEER_REQUESTED_CLOSE; var respondCloseReasonCode; if (frame.invalidCloseFrameLength) { this.closeReasonCode = 1005; respondCloseReasonCode = WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR; } else if (frame.closeStatus === -1 || validateCloseReason(frame.closeStatus)) { this.closeReasonCode = frame.closeStatus; respondCloseReasonCode = WebSocketConnection.CLOSE_REASON_NORMAL; } else { this.closeReasonCode = frame.closeStatus; respondCloseReasonCode = WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR; } if (frame.binaryPayload.length > 1) { if (!isValidUTF8(frame.binaryPayload)) { this.drop( WebSocketConnection.CLOSE_REASON_INVALID_DATA, "Invalid UTF-8 Data Received" ); return; } this.closeDescription = frame.binaryPayload.toString("utf8"); } else { this.closeDescription = WebSocketConnection.CLOSE_DESCRIPTIONS[this.closeReasonCode]; } this._debug( "------ Remote peer %s - code: %d - %s - close frame payload length: %d", this.remoteAddress, this.closeReasonCode, this.closeDescription, frame.length ); this._debug("------ responding to remote peer's close request."); this.sendCloseFrame(respondCloseReasonCode, null); this.connected = false; break; default: this._debug("-- Unrecognized Opcode %d", frame.opcode); this.drop( WebSocketConnection.CLOSE_REASON_PROTOCOL_ERROR, "Unrecognized Opcode: 0x" + frame.opcode.toString(16) ); break; } }; WebSocketConnection.prototype.send = function(data, cb) { this._debug("send"); if (Buffer.isBuffer(data)) { this.sendBytes(data, cb); } else if (typeof data["toString"] === "function") { this.sendUTF(data, cb); } else { throw new Error("Data provided must either be a Node Buffer or implement toString()"); } }; WebSocketConnection.prototype.sendUTF = function(data, cb) { data = bufferFromString(data.toString(), "utf8"); this._debug("sendUTF: %d bytes", data.length); var frame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); frame.opcode = 1; frame.binaryPayload = data; this.fragmentAndSend(frame, cb); }; WebSocketConnection.prototype.sendBytes = function(data, cb) { this._debug("sendBytes"); if (!Buffer.isBuffer(data)) { throw new Error("You must pass a Node Buffer object to WebSocketConnection.prototype.sendBytes()"); } var frame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); frame.opcode = 2; frame.binaryPayload = data; this.fragmentAndSend(frame, cb); }; WebSocketConnection.prototype.ping = function(data) { this._debug("ping"); var frame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); frame.opcode = 9; frame.fin = true; if (data) { if (!Buffer.isBuffer(data)) { data = bufferFromString(data.toString(), "utf8"); } if (data.length > 125) { this._debug("WebSocket: Data for ping is longer than 125 bytes. Truncating."); data = data.slice(0, 124); } frame.binaryPayload = data; } this.sendFrame(frame); }; WebSocketConnection.prototype.pong = function(binaryPayload) { this._debug("pong"); var frame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); frame.opcode = 10; if (Buffer.isBuffer(binaryPayload) && binaryPayload.length > 125) { this._debug("WebSocket: Data for pong is longer than 125 bytes. Truncating."); binaryPayload = binaryPayload.slice(0, 124); } frame.binaryPayload = binaryPayload; frame.fin = true; this.sendFrame(frame); }; WebSocketConnection.prototype.fragmentAndSend = function(frame, cb) { this._debug("fragmentAndSend"); if (frame.opcode > 7) { throw new Error("You cannot fragment control frames."); } var threshold = this.config.fragmentationThreshold; var length = frame.binaryPayload.length; if (!this.config.fragmentOutgoingMessages || frame.binaryPayload && length <= threshold) { frame.fin = true; this.sendFrame(frame, cb); return; } var numFragments = Math.ceil(length / threshold); var sentFragments = 0; var sentCallback = function fragmentSentCallback(err) { if (err) { if (typeof cb === "function") { cb(err); cb = null; } return; } ++sentFragments; if (sentFragments === numFragments && typeof cb === "function") { cb(); } }; for (var i = 1; i <= numFragments; i++) { var currentFrame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); currentFrame.opcode = i === 1 ? frame.opcode : 0; currentFrame.fin = i === numFragments; var currentLength = i === numFragments ? length - threshold * (i - 1) : threshold; var sliceStart = threshold * (i - 1); currentFrame.binaryPayload = frame.binaryPayload.slice(sliceStart, sliceStart + currentLength); this.sendFrame(currentFrame, sentCallback); } }; WebSocketConnection.prototype.sendCloseFrame = function(reasonCode, description, cb) { if (typeof reasonCode !== "number") { reasonCode = WebSocketConnection.CLOSE_REASON_NORMAL; } this._debug("sendCloseFrame state: %s, reasonCode: %d, description: %s", this.state, reasonCode, description); if (this.state !== STATE_OPEN && this.state !== STATE_PEER_REQUESTED_CLOSE) { return; } var frame = new WebSocketFrame(this.maskBytes, this.frameHeader, this.config); frame.fin = true; frame.opcode = 8; frame.closeStatus = reasonCode; if (typeof description === "string") { frame.binaryPayload = bufferFromString(description, "utf8"); } this.sendFrame(frame, cb); this.socket.end(); }; WebSocketConnection.prototype.sendFrame = function(frame, cb) { this._debug("sendFrame"); frame.mask = this.maskOutgoingPackets; var flushed = this.socket.write(frame.toBuffer(), cb); this.outputBufferFull = !flushed; return flushed; }; module2.exports = WebSocketConnection; function instrumentSocketForDebugging(connection, socket) { if (!connection._debug.enabled) { return; } var originalSocketEmit = socket.emit; socket.emit = function(event) { connection._debug("||| Socket Event '%s'", event); originalSocketEmit.apply(this, arguments); }; for (var key in socket) { if ("function" !== typeof socket[key]) { continue; } if (["emit"].indexOf(key) !== -1) { continue; } (function(key2) { var original = socket[key2]; if (key2 === "on") { socket[key2] = function proxyMethod__EventEmitter__On() { connection._debug("||| Socket method called: %s (%s)", key2, arguments[0]); return original.apply(this, arguments); }; return; } socket[key2] = function proxyMethod() { connection._debug("||| Socket method called: %s", key2); return original.apply(this, arguments); }; })(key); } } } }); // node_modules/websocket/lib/WebSocketRequest.js var require_WebSocketRequest = __commonJS({ "node_modules/websocket/lib/WebSocketRequest.js"(exports2, module2) { init_define_import_meta_env(); var crypto4 = require("crypto"); var util = require("util"); var url = require("url"); var EventEmitter = require("events").EventEmitter; var WebSocketConnection = require_WebSocketConnection(); var headerValueSplitRegExp = /,\s*/; var headerParamSplitRegExp = /;\s*/; var headerSanitizeRegExp = /[\r\n]/g; var xForwardedForSeparatorRegExp = /,\s*/; var separators = [ "(", ")", "<", ">", "@", ",", ";", ":", "\\", '"', "/", "[", "]", "?", "=", "{", "}", " ", String.fromCharCode(9) ]; var controlChars = [ String.fromCharCode(127) /* DEL */ ]; for (i = 0; i < 31; i++) { controlChars.push(String.fromCharCode(i)); } var i; var cookieNameValidateRegEx = /([\x00-\x20\x22\x28\x29\x2c\x2f\x3a-\x3f\x40\x5b-\x5e\x7b\x7d\x7f])/; var cookieValueValidateRegEx = /[^\x21\x23-\x2b\x2d-\x3a\x3c-\x5b\x5d-\x7e]/; var cookieValueDQuoteValidateRegEx = /^"[^"]*"$/; var controlCharsAndSemicolonRegEx = /[\x00-\x20\x3b]/g; var cookieSeparatorRegEx = /[;,] */; var httpStatusDescriptions = { 100: "Continue", 101: "Switching Protocols", 200: "OK", 201: "Created", 203: "Non-Authoritative Information", 204: "No Content", 205: "Reset Content", 206: "Partial Content", 300: "Multiple Choices", 301: "Moved Permanently", 302: "Found", 303: "See Other", 304: "Not Modified", 305: "Use Proxy", 307: "Temporary Redirect", 400: "Bad Request", 401: "Unauthorized", 402: "Payment Required", 403: "Forbidden", 404: "Not Found", 406: "Not Acceptable", 407: "Proxy Authorization Required", 408: "Request Timeout", 409: "Conflict", 410: "Gone", 411: "Length Required", 412: "Precondition Failed", 413: "Request Entity Too Long", 414: "Request-URI Too Long", 415: "Unsupported Media Type", 416: "Requested Range Not Satisfiable", 417: "Expectation Failed", 426: "Upgrade Required", 500: "Internal Server Error", 501: "Not Implemented", 502: "Bad Gateway", 503: "Service Unavailable", 504: "Gateway Timeout", 505: "HTTP Version Not Supported" }; function WebSocketRequest(socket, httpRequest, serverConfig) { EventEmitter.call(this); this.socket = socket; this.httpRequest = httpRequest; this.resource = httpRequest.url; this.remoteAddress = socket.remoteAddress; this.remoteAddresses = [this.remoteAddress]; this.serverConfig = serverConfig; this._socketIsClosing = false; this._socketCloseHandler = this._handleSocketCloseBeforeAccept.bind(this); this.socket.on("end", this._socketCloseHandler); this.socket.on("close", this._socketCloseHandler); this._resolved = false; } util.inherits(WebSocketRequest, EventEmitter); WebSocketRequest.prototype.readHandshake = function() { var self2 = this; var request = this.httpRequest; this.resourceURL = url.parse(this.resource, true); this.host = request.headers["host"]; if (!this.host) { throw new Error("Client must provide a Host header."); } this.key = request.headers["sec-websocket-key"]; if (!this.key) { throw new Error("Client must provide a value for Sec-WebSocket-Key."); } this.webSocketVersion = parseInt(request.headers["sec-websocket-version"], 10); if (!this.webSocketVersion || isNaN(this.webSocketVersion)) { throw new Error("Client must provide a value for Sec-WebSocket-Version."); } switch (this.webSocketVersion) { case 8: case 13: break; default: var e = new Error("Unsupported websocket client version: " + this.webSocketVersion + "Only versions 8 and 13 are supported."); e.httpCode = 426; e.headers = { "Sec-WebSocket-Version": "13" }; throw e; } if (this.webSocketVersion === 13) { this.origin = request.headers["origin"]; } else if (this.webSocketVersion === 8) { this.origin = request.headers["sec-websocket-origin"]; } var protocolString = request.headers["sec-websocket-protocol"]; this.protocolFullCaseMap = {}; this.requestedProtocols = []; if (protocolString) { var requestedProtocolsFullCase = protocolString.split(headerValueSplitRegExp); requestedProtocolsFullCase.forEach(function(protocol) { var lcProtocol = protocol.toLocaleLowerCase(); self2.requestedProtocols.push(lcProtocol); self2.protocolFullCaseMap[lcProtocol] = protocol; }); } if (!this.serverConfig.ignoreXForwardedFor && request.headers["x-forwarded-for"]) { var immediatePeerIP = this.remoteAddress; this.remoteAddresses = request.headers["x-forwarded-for"].split(xForwardedForSeparatorRegExp); this.remoteAddresses.push(immediatePeerIP); this.remoteAddress = this.remoteAddresses[0]; } if (this.serverConfig.parseExtensions) { var extensionsString = request.headers["sec-websocket-extensions"]; this.requestedExtensions = this.parseExtensions(extensionsString); } else { this.requestedExtensions = []; } if (this.serverConfig.parseCookies) { var cookieString = request.headers["cookie"]; this.cookies = this.parseCookies(cookieString); } else { this.cookies = []; } }; WebSocketRequest.prototype.parseExtensions = function(extensionsString) { if (!extensionsString || extensionsString.length === 0) { return []; } var extensions = extensionsString.toLocaleLowerCase().split(headerValueSplitRegExp); extensions.forEach(function(extension, index2, array) { var params = extension.split(headerParamSplitRegExp); var extensionName = params[0]; var extensionParams = params.slice(1); extensionParams.forEach(function(rawParam, index3, array2) { var arr = rawParam.split("="); var obj2 = { name: arr[0], value: arr[1] }; array2.splice(index3, 1, obj2); }); var obj = { name: extensionName, params: extensionParams }; array.splice(index2, 1, obj); }); return extensions; }; WebSocketRequest.prototype.parseCookies = function(str) { if (!str || typeof str !== "string") { return []; } var cookies = []; var pairs = str.split(cookieSeparatorRegEx); pairs.forEach(function(pair) { var eq_idx = pair.indexOf("="); if (eq_idx === -1) { cookies.push({ name: pair, value: null }); return; } var key = pair.substr(0, eq_idx).trim(); var val = pair.substr(++eq_idx, pair.length).trim(); if ('"' === val[0]) { val = val.slice(1, -1); } cookies.push({ name: key, value: decodeURIComponent(val) }); }); return cookies; }; WebSocketRequest.prototype.accept = function(acceptedProtocol, allowedOrigin, cookies) { this._verifyResolution(); var protocolFullCase; if (acceptedProtocol) { protocolFullCase = this.protocolFullCaseMap[acceptedProtocol.toLocaleLowerCase()]; if (typeof protocolFullCase === "undefined") { protocolFullCase = acceptedProtocol; } } else { protocolFullCase = acceptedProtocol; } this.protocolFullCaseMap = null; var sha1 = crypto4.createHash("sha1"); sha1.update(this.key + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); var acceptKey = sha1.digest("base64"); var response = "HTTP/1.1 101 Switching Protocols\r\nUpgrade: websocket\r\nConnection: Upgrade\r\nSec-WebSocket-Accept: " + acceptKey + "\r\n"; if (protocolFullCase) { for (var i2 = 0; i2 < protocolFullCase.length; i2++) { var charCode = protocolFullCase.charCodeAt(i2); var character = protocolFullCase.charAt(i2); if (charCode < 33 || charCode > 126 || separators.indexOf(character) !== -1) { this.reject(500); throw new Error('Illegal character "' + String.fromCharCode(character) + '" in subprotocol.'); } } if (this.requestedProtocols.indexOf(acceptedProtocol) === -1) { this.reject(500); throw new Error("Specified protocol was not requested by the client."); } protocolFullCase = protocolFullCase.replace(headerSanitizeRegExp, ""); response += "Sec-WebSocket-Protocol: " + protocolFullCase + "\r\n"; } this.requestedProtocols = null; if (allowedOrigin) { allowedOrigin = allowedOrigin.replace(headerSanitizeRegExp, ""); if (this.webSocketVersion === 13) { response += "Origin: " + allowedOrigin + "\r\n"; } else if (this.webSocketVersion === 8) { response += "Sec-WebSocket-Origin: " + allowedOrigin + "\r\n"; } } if (cookies) { if (!Array.isArray(cookies)) { this.reject(500); throw new Error('Value supplied for "cookies" argument must be an array.'); } var seenCookies = {}; cookies.forEach(function(cookie) { if (!cookie.name || !cookie.value) { this.reject(500); throw new Error('Each cookie to set must at least provide a "name" and "value"'); } cookie.name = cookie.name.replace(controlCharsAndSemicolonRegEx, ""); cookie.value = cookie.value.replace(controlCharsAndSemicolonRegEx, ""); if (seenCookies[cookie.name]) { this.reject(500); throw new Error("You may not specify the same cookie name twice."); } seenCookies[cookie.name] = true; var invalidChar = cookie.name.match(cookieNameValidateRegEx); if (invalidChar) { this.reject(500); throw new Error("Illegal character " + invalidChar[0] + " in cookie name"); } if (cookie.value.match(cookieValueDQuoteValidateRegEx)) { invalidChar = cookie.value.slice(1, -1).match(cookieValueValidateRegEx); } else { invalidChar = cookie.value.match(cookieValueValidateRegEx); } if (invalidChar) { this.reject(500); throw new Error("Illegal character " + invalidChar[0] + " in cookie value"); } var cookieParts = [cookie.name + "=" + cookie.value]; if (cookie.path) { invalidChar = cookie.path.match(controlCharsAndSemicolonRegEx); if (invalidChar) { this.reject(500); throw new Error("Illegal character " + invalidChar[0] + " in cookie path"); } cookieParts.push("Path=" + cookie.path); } if (cookie.domain) { if (typeof cookie.domain !== "string") { this.reject(500); throw new Error("Domain must be specified and must be a string."); } invalidChar = cookie.domain.match(controlCharsAndSemicolonRegEx); if (invalidChar) { this.reject(500); throw new Error("Illegal character " + invalidChar[0] + " in cookie domain"); } cookieParts.push("Domain=" + cookie.domain.toLowerCase()); } if (cookie.expires) { if (!(cookie.expires instanceof Date)) { this.reject(500); throw new Error('Value supplied for cookie "expires" must be a vaild date object'); } cookieParts.push("Expires=" + cookie.expires.toGMTString()); } if (cookie.maxage) { var maxage = cookie.maxage; if (typeof maxage === "string") { maxage = parseInt(maxage, 10); } if (isNaN(maxage) || maxage <= 0) { this.reject(500); throw new Error('Value supplied for cookie "maxage" must be a non-zero number'); } maxage = Math.round(maxage); cookieParts.push("Max-Age=" + maxage.toString(10)); } if (cookie.secure) { if (typeof cookie.secure !== "boolean") { this.reject(500); throw new Error('Value supplied for cookie "secure" must be of type boolean'); } cookieParts.push("Secure"); } if (cookie.httponly) { if (typeof cookie.httponly !== "boolean") { this.reject(500); throw new Error('Value supplied for cookie "httponly" must be of type boolean'); } cookieParts.push("HttpOnly"); } response += "Set-Cookie: " + cookieParts.join(";") + "\r\n"; }.bind(this)); } this._resolved = true; this.emit("requestResolved", this); response += "\r\n"; var connection = new WebSocketConnection(this.socket, [], acceptedProtocol, false, this.serverConfig); connection.webSocketVersion = this.webSocketVersion; connection.remoteAddress = this.remoteAddress; connection.remoteAddresses = this.remoteAddresses; var self2 = this; if (this._socketIsClosing) { cleanupFailedConnection(connection); } else { this.socket.write(response, "ascii", function(error) { if (error) { cleanupFailedConnection(connection); return; } self2._removeSocketCloseListeners(); connection._addSocketEventListeners(); }); } this.emit("requestAccepted", connection); return connection; }; WebSocketRequest.prototype.reject = function(status, reason, extraHeaders) { this._verifyResolution(); this._resolved = true; this.emit("requestResolved", this); if (typeof status !== "number") { status = 403; } var response = "HTTP/1.1 " + status + " " + httpStatusDescriptions[status] + "\r\nConnection: close\r\n"; if (reason) { reason = reason.replace(headerSanitizeRegExp, ""); response += "X-WebSocket-Reject-Reason: " + reason + "\r\n"; } if (extraHeaders) { for (var key in extraHeaders) { var sanitizedValue = extraHeaders[key].toString().replace(headerSanitizeRegExp, ""); var sanitizedKey = key.replace(headerSanitizeRegExp, ""); response += sanitizedKey + ": " + sanitizedValue + "\r\n"; } } response += "\r\n"; this.socket.end(response, "ascii"); this.emit("requestRejected", this); }; WebSocketRequest.prototype._handleSocketCloseBeforeAccept = function() { this._socketIsClosing = true; this._removeSocketCloseListeners(); }; WebSocketRequest.prototype._removeSocketCloseListeners = function() { this.socket.removeListener("end", this._socketCloseHandler); this.socket.removeListener("close", this._socketCloseHandler); }; WebSocketRequest.prototype._verifyResolution = function() { if (this._resolved) { throw new Error("WebSocketRequest may only be accepted or rejected one time."); } }; function cleanupFailedConnection(connection) { process.nextTick(function() { connection.drop(1006, "TCP connection lost before handshake completed.", true); }); } module2.exports = WebSocketRequest; } }); // node_modules/websocket/lib/WebSocketServer.js var require_WebSocketServer = __commonJS({ "node_modules/websocket/lib/WebSocketServer.js"(exports2, module2) { init_define_import_meta_env(); var extend = require_utils5().extend; var utils = require_utils5(); var util = require("util"); var debug = require_src2()("websocket:server"); var EventEmitter = require("events").EventEmitter; var WebSocketRequest = require_WebSocketRequest(); var WebSocketServer = function WebSocketServer2(config) { EventEmitter.call(this); this._handlers = { upgrade: this.handleUpgrade.bind(this), requestAccepted: this.handleRequestAccepted.bind(this), requestResolved: this.handleRequestResolved.bind(this) }; this.connections = []; this.pendingRequests = []; if (config) { this.mount(config); } }; util.inherits(WebSocketServer, EventEmitter); WebSocketServer.prototype.mount = function(config) { this.config = { // The http server instance to attach to. Required. httpServer: null, // 64KiB max frame size. maxReceivedFrameSize: 65536, // 1MiB max message size, only applicable if // assembleFragments is true maxReceivedMessageSize: 1048576, // Outgoing messages larger than fragmentationThreshold will be // split into multiple fragments. fragmentOutgoingMessages: true, // Outgoing frames are fragmented if they exceed this threshold. // Default is 16KiB fragmentationThreshold: 16384, // If true, the server will automatically send a ping to all // clients every 'keepaliveInterval' milliseconds. The timer is // reset on any received data from the client. keepalive: true, // The interval to send keepalive pings to connected clients if the // connection is idle. Any received data will reset the counter. keepaliveInterval: 2e4, // If true, the server will consider any connection that has not // received any data within the amount of time specified by // 'keepaliveGracePeriod' after a keepalive ping has been sent to // be dead, and will drop the connection. // Ignored if keepalive is false. dropConnectionOnKeepaliveTimeout: true, // The amount of time to wait after sending a keepalive ping before // closing the connection if the connected peer does not respond. // Ignored if keepalive is false. keepaliveGracePeriod: 1e4, // Whether to use native TCP keep-alive instead of WebSockets ping // and pong packets. Native TCP keep-alive sends smaller packets // on the wire and so uses bandwidth more efficiently. This may // be more important when talking to mobile devices. // If this value is set to true, then these values will be ignored: // keepaliveGracePeriod // dropConnectionOnKeepaliveTimeout useNativeKeepalive: false, // If true, fragmented messages will be automatically assembled // and the full message will be emitted via a 'message' event. // If false, each frame will be emitted via a 'frame' event and // the application will be responsible for aggregating multiple // fragmented frames. Single-frame messages will emit a 'message' // event in addition to the 'frame' event. // Most users will want to leave this set to 'true' assembleFragments: true, // If this is true, websocket connections will be accepted // regardless of the path and protocol specified by the client. // The protocol accepted will be the first that was requested // by the client. Clients from any origin will be accepted. // This should only be used in the simplest of cases. You should // probably leave this set to 'false' and inspect the request // object to make sure it's acceptable before accepting it. autoAcceptConnections: false, // Whether or not the X-Forwarded-For header should be respected. // It's important to set this to 'true' when accepting connections // from untrusted clients, as a malicious client could spoof its // IP address by simply setting this header. It's meant to be added // by a trusted proxy or other intermediary within your own // infrastructure. // See: http://en.wikipedia.org/wiki/X-Forwarded-For ignoreXForwardedFor: false, // If this is true, 'cookie' headers are parsed and exposed as WebSocketRequest.cookies parseCookies: true, // If this is true, 'sec-websocket-extensions' headers are parsed and exposed as WebSocketRequest.requestedExtensions parseExtensions: true, // The Nagle Algorithm makes more efficient use of network resources // by introducing a small delay before sending small packets so that // multiple messages can be batched together before going onto the // wire. This however comes at the cost of latency, so the default // is to disable it. If you don't need low latency and are streaming // lots of small messages, you can change this to 'false' disableNagleAlgorithm: true, // The number of milliseconds to wait after sending a close frame // for an acknowledgement to come back before giving up and just // closing the socket. closeTimeout: 5e3 }; extend(this.config, config); if (this.config.httpServer) { if (!Array.isArray(this.config.httpServer)) { this.config.httpServer = [this.config.httpServer]; } var upgradeHandler = this._handlers.upgrade; this.config.httpServer.forEach(function(httpServer) { httpServer.on("upgrade", upgradeHandler); }); } else { throw new Error("You must specify an httpServer on which to mount the WebSocket server."); } }; WebSocketServer.prototype.unmount = function() { var upgradeHandler = this._handlers.upgrade; this.config.httpServer.forEach(function(httpServer) { httpServer.removeListener("upgrade", upgradeHandler); }); }; WebSocketServer.prototype.closeAllConnections = function() { this.connections.forEach(function(connection) { connection.close(); }); this.pendingRequests.forEach(function(request) { process.nextTick(function() { request.reject(503); }); }); }; WebSocketServer.prototype.broadcast = function(data) { if (Buffer.isBuffer(data)) { this.broadcastBytes(data); } else if (typeof data.toString === "function") { this.broadcastUTF(data); } }; WebSocketServer.prototype.broadcastUTF = function(utfData) { this.connections.forEach(function(connection) { connection.sendUTF(utfData); }); }; WebSocketServer.prototype.broadcastBytes = function(binaryData) { this.connections.forEach(function(connection) { connection.sendBytes(binaryData); }); }; WebSocketServer.prototype.shutDown = function() { this.unmount(); this.closeAllConnections(); }; WebSocketServer.prototype.handleUpgrade = function(request, socket) { var self2 = this; var wsRequest = new WebSocketRequest(socket, request, this.config); try { wsRequest.readHandshake(); } catch (e) { wsRequest.reject( e.httpCode ? e.httpCode : 400, e.message, e.headers ); debug("Invalid handshake: %s", e.message); this.emit("upgradeError", e); return; } this.pendingRequests.push(wsRequest); wsRequest.once("requestAccepted", this._handlers.requestAccepted); wsRequest.once("requestResolved", this._handlers.requestResolved); socket.once("close", function() { self2._handlers.requestResolved(wsRequest); }); if (!this.config.autoAcceptConnections && utils.eventEmitterListenerCount(this, "request") > 0) { this.emit("request", wsRequest); } else if (this.config.autoAcceptConnections) { wsRequest.accept(wsRequest.requestedProtocols[0], wsRequest.origin); } else { wsRequest.reject(404, "No handler is configured to accept the connection."); } }; WebSocketServer.prototype.handleRequestAccepted = function(connection) { var self2 = this; connection.once("close", function(closeReason, description) { self2.handleConnectionClose(connection, closeReason, description); }); this.connections.push(connection); this.emit("connect", connection); }; WebSocketServer.prototype.handleConnectionClose = function(connection, closeReason, description) { var index2 = this.connections.indexOf(connection); if (index2 !== -1) { this.connections.splice(index2, 1); } this.emit("close", connection, closeReason, description); }; WebSocketServer.prototype.handleRequestResolved = function(request) { var index2 = this.pendingRequests.indexOf(request); if (index2 !== -1) { this.pendingRequests.splice(index2, 1); } }; module2.exports = WebSocketServer; } }); // node_modules/websocket/lib/WebSocketClient.js var require_WebSocketClient = __commonJS({ "node_modules/websocket/lib/WebSocketClient.js"(exports2, module2) { init_define_import_meta_env(); var utils = require_utils5(); var extend = utils.extend; var util = require("util"); var EventEmitter = require("events").EventEmitter; var http = require("http"); var https = require("https"); var url = require("url"); var crypto4 = require("crypto"); var WebSocketConnection = require_WebSocketConnection(); var bufferAllocUnsafe = utils.bufferAllocUnsafe; var protocolSeparators = [ "(", ")", "<", ">", "@", ",", ";", ":", "\\", '"', "/", "[", "]", "?", "=", "{", "}", " ", String.fromCharCode(9) ]; var excludedTlsOptions = ["hostname", "port", "method", "path", "headers"]; function WebSocketClient(config) { EventEmitter.call(this); this.config = { // 1MiB max frame size. maxReceivedFrameSize: 1048576, // 8MiB max message size, only applicable if // assembleFragments is true maxReceivedMessageSize: 8388608, // Outgoing messages larger than fragmentationThreshold will be // split into multiple fragments. fragmentOutgoingMessages: true, // Outgoing frames are fragmented if they exceed this threshold. // Default is 16KiB fragmentationThreshold: 16384, // Which version of the protocol to use for this session. This // option will be removed once the protocol is finalized by the IETF // It is only available to ease the transition through the // intermediate draft protocol versions. // At present, it only affects the name of the Origin header. webSocketVersion: 13, // If true, fragmented messages will be automatically assembled // and the full message will be emitted via a 'message' event. // If false, each frame will be emitted via a 'frame' event and // the application will be responsible for aggregating multiple // fragmented frames. Single-frame messages will emit a 'message' // event in addition to the 'frame' event. // Most users will want to leave this set to 'true' assembleFragments: true, // The Nagle Algorithm makes more efficient use of network resources // by introducing a small delay before sending small packets so that // multiple messages can be batched together before going onto the // wire. This however comes at the cost of latency, so the default // is to disable it. If you don't need low latency and are streaming // lots of small messages, you can change this to 'false' disableNagleAlgorithm: true, // The number of milliseconds to wait after sending a close frame // for an acknowledgement to come back before giving up and just // closing the socket. closeTimeout: 5e3, // Options to pass to https.connect if connecting via TLS tlsOptions: {} }; if (config) { var tlsOptions; if (config.tlsOptions) { tlsOptions = config.tlsOptions; delete config.tlsOptions; } else { tlsOptions = {}; } extend(this.config, config); extend(this.config.tlsOptions, tlsOptions); } this._req = null; switch (this.config.webSocketVersion) { case 8: case 13: break; default: throw new Error("Requested webSocketVersion is not supported. Allowed values are 8 and 13."); } } util.inherits(WebSocketClient, EventEmitter); WebSocketClient.prototype.connect = function(requestUrl, protocols, origin, headers, extraRequestOptions) { var self2 = this; if (typeof protocols === "string") { if (protocols.length > 0) { protocols = [protocols]; } else { protocols = []; } } if (!(protocols instanceof Array)) { protocols = []; } this.protocols = protocols; this.origin = origin; if (typeof requestUrl === "string") { this.url = url.parse(requestUrl); } else { this.url = requestUrl; } if (!this.url.protocol) { throw new Error("You must specify a full WebSocket URL, including protocol."); } if (!this.url.host) { throw new Error("You must specify a full WebSocket URL, including hostname. Relative URLs are not supported."); } this.secure = this.url.protocol === "wss:"; this.protocols.forEach(function(protocol) { for (var i2 = 0; i2 < protocol.length; i2++) { var charCode = protocol.charCodeAt(i2); var character = protocol.charAt(i2); if (charCode < 33 || charCode > 126 || protocolSeparators.indexOf(character) !== -1) { throw new Error('Protocol list contains invalid character "' + String.fromCharCode(charCode) + '"'); } } }); var defaultPorts = { "ws:": "80", "wss:": "443" }; if (!this.url.port) { this.url.port = defaultPorts[this.url.protocol]; } var nonce = bufferAllocUnsafe(16); for (var i = 0; i < 16; i++) { nonce[i] = Math.round(Math.random() * 255); } this.base64nonce = nonce.toString("base64"); var hostHeaderValue = this.url.hostname; if (this.url.protocol === "ws:" && this.url.port !== "80" || this.url.protocol === "wss:" && this.url.port !== "443") { hostHeaderValue += ":" + this.url.port; } var reqHeaders = {}; if (this.secure && this.config.tlsOptions.hasOwnProperty("headers")) { extend(reqHeaders, this.config.tlsOptions.headers); } if (headers) { extend(reqHeaders, headers); } extend(reqHeaders, { "Upgrade": "websocket", "Connection": "Upgrade", "Sec-WebSocket-Version": this.config.webSocketVersion.toString(10), "Sec-WebSocket-Key": this.base64nonce, "Host": reqHeaders.Host || hostHeaderValue }); if (this.protocols.length > 0) { reqHeaders["Sec-WebSocket-Protocol"] = this.protocols.join(", "); } if (this.origin) { if (this.config.webSocketVersion === 13) { reqHeaders["Origin"] = this.origin; } else if (this.config.webSocketVersion === 8) { reqHeaders["Sec-WebSocket-Origin"] = this.origin; } } var pathAndQuery; if (this.url.pathname) { pathAndQuery = this.url.path; } else if (this.url.path) { pathAndQuery = "/" + this.url.path; } else { pathAndQuery = "/"; } function handleRequestError(error) { self2._req = null; self2.emit("connectFailed", error); } var requestOptions = { agent: false }; if (extraRequestOptions) { extend(requestOptions, extraRequestOptions); } extend(requestOptions, { hostname: this.url.hostname, port: this.url.port, method: "GET", path: pathAndQuery, headers: reqHeaders }); if (this.secure) { var tlsOptions = this.config.tlsOptions; for (var key in tlsOptions) { if (tlsOptions.hasOwnProperty(key) && excludedTlsOptions.indexOf(key) === -1) { requestOptions[key] = tlsOptions[key]; } } } var req = this._req = (this.secure ? https : http).request(requestOptions); req.on("upgrade", function handleRequestUpgrade(response, socket, head) { self2._req = null; req.removeListener("error", handleRequestError); self2.socket = socket; self2.response = response; self2.firstDataChunk = head; self2.validateHandshake(); }); req.on("error", handleRequestError); req.on("response", function(response) { self2._req = null; if (utils.eventEmitterListenerCount(self2, "httpResponse") > 0) { self2.emit("httpResponse", response, self2); if (response.socket) { response.socket.end(); } } else { var headerDumpParts = []; for (var headerName in response.headers) { headerDumpParts.push(headerName + ": " + response.headers[headerName]); } self2.failHandshake( "Server responded with a non-101 status: " + response.statusCode + " " + response.statusMessage + "\nResponse Headers Follow:\n" + headerDumpParts.join("\n") + "\n" ); } }); req.end(); }; WebSocketClient.prototype.validateHandshake = function() { var headers = this.response.headers; if (this.protocols.length > 0) { this.protocol = headers["sec-websocket-protocol"]; if (this.protocol) { if (this.protocols.indexOf(this.protocol) === -1) { this.failHandshake("Server did not respond with a requested protocol."); return; } } else { this.failHandshake("Expected a Sec-WebSocket-Protocol header."); return; } } if (!(headers["connection"] && headers["connection"].toLocaleLowerCase() === "upgrade")) { this.failHandshake("Expected a Connection: Upgrade header from the server"); return; } if (!(headers["upgrade"] && headers["upgrade"].toLocaleLowerCase() === "websocket")) { this.failHandshake("Expected an Upgrade: websocket header from the server"); return; } var sha1 = crypto4.createHash("sha1"); sha1.update(this.base64nonce + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11"); var expectedKey = sha1.digest("base64"); if (!headers["sec-websocket-accept"]) { this.failHandshake("Expected Sec-WebSocket-Accept header from server"); return; } if (headers["sec-websocket-accept"] !== expectedKey) { this.failHandshake("Sec-WebSocket-Accept header from server didn't match expected value of " + expectedKey); return; } this.succeedHandshake(); }; WebSocketClient.prototype.failHandshake = function(errorDescription) { if (this.socket && this.socket.writable) { this.socket.end(); } this.emit("connectFailed", new Error(errorDescription)); }; WebSocketClient.prototype.succeedHandshake = function() { var connection = new WebSocketConnection(this.socket, [], this.protocol, true, this.config); connection.webSocketVersion = this.config.webSocketVersion; connection._addSocketEventListeners(); this.emit("connect", connection); if (this.firstDataChunk.length > 0) { connection.handleSocketData(this.firstDataChunk); } this.firstDataChunk = null; }; WebSocketClient.prototype.abort = function() { if (this._req) { this._req.abort(); } }; module2.exports = WebSocketClient; } }); // node_modules/websocket/lib/WebSocketRouterRequest.js var require_WebSocketRouterRequest = __commonJS({ "node_modules/websocket/lib/WebSocketRouterRequest.js"(exports2, module2) { init_define_import_meta_env(); var util = require("util"); var EventEmitter = require("events").EventEmitter; function WebSocketRouterRequest(webSocketRequest, resolvedProtocol) { EventEmitter.call(this); this.webSocketRequest = webSocketRequest; if (resolvedProtocol === "____no_protocol____") { this.protocol = null; } else { this.protocol = resolvedProtocol; } this.origin = webSocketRequest.origin; this.resource = webSocketRequest.resource; this.resourceURL = webSocketRequest.resourceURL; this.httpRequest = webSocketRequest.httpRequest; this.remoteAddress = webSocketRequest.remoteAddress; this.webSocketVersion = webSocketRequest.webSocketVersion; this.requestedExtensions = webSocketRequest.requestedExtensions; this.cookies = webSocketRequest.cookies; } util.inherits(WebSocketRouterRequest, EventEmitter); WebSocketRouterRequest.prototype.accept = function(origin, cookies) { var connection = this.webSocketRequest.accept(this.protocol, origin, cookies); this.emit("requestAccepted", connection); return connection; }; WebSocketRouterRequest.prototype.reject = function(status, reason, extraHeaders) { this.webSocketRequest.reject(status, reason, extraHeaders); this.emit("requestRejected", this); }; module2.exports = WebSocketRouterRequest; } }); // node_modules/websocket/lib/WebSocketRouter.js var require_WebSocketRouter = __commonJS({ "node_modules/websocket/lib/WebSocketRouter.js"(exports2, module2) { init_define_import_meta_env(); var extend = require_utils5().extend; var util = require("util"); var EventEmitter = require("events").EventEmitter; var WebSocketRouterRequest = require_WebSocketRouterRequest(); function WebSocketRouter(config) { EventEmitter.call(this); this.config = { // The WebSocketServer instance to attach to. server: null }; if (config) { extend(this.config, config); } this.handlers = []; this._requestHandler = this.handleRequest.bind(this); if (this.config.server) { this.attachServer(this.config.server); } } util.inherits(WebSocketRouter, EventEmitter); WebSocketRouter.prototype.attachServer = function(server) { if (server) { this.server = server; this.server.on("request", this._requestHandler); } else { throw new Error("You must specify a WebSocketServer instance to attach to."); } }; WebSocketRouter.prototype.detachServer = function() { if (this.server) { this.server.removeListener("request", this._requestHandler); this.server = null; } else { throw new Error("Cannot detach from server: not attached."); } }; WebSocketRouter.prototype.mount = function(path2, protocol, callback) { if (!path2) { throw new Error("You must specify a path for this handler."); } if (!protocol) { protocol = "____no_protocol____"; } if (!callback) { throw new Error("You must specify a callback for this handler."); } path2 = this.pathToRegExp(path2); if (!(path2 instanceof RegExp)) { throw new Error("Path must be specified as either a string or a RegExp."); } var pathString = path2.toString(); protocol = protocol.toLocaleLowerCase(); if (this.findHandlerIndex(pathString, protocol) !== -1) { throw new Error("You may only mount one handler per path/protocol combination."); } this.handlers.push({ "path": path2, "pathString": pathString, "protocol": protocol, "callback": callback }); }; WebSocketRouter.prototype.unmount = function(path2, protocol) { var index2 = this.findHandlerIndex(this.pathToRegExp(path2).toString(), protocol); if (index2 !== -1) { this.handlers.splice(index2, 1); } else { throw new Error("Unable to find a route matching the specified path and protocol."); } }; WebSocketRouter.prototype.findHandlerIndex = function(pathString, protocol) { protocol = protocol.toLocaleLowerCase(); for (var i = 0, len = this.handlers.length; i < len; i++) { var handler = this.handlers[i]; if (handler.pathString === pathString && handler.protocol === protocol) { return i; } } return -1; }; WebSocketRouter.prototype.pathToRegExp = function(path2) { if (typeof path2 === "string") { if (path2 === "*") { path2 = /^.*$/; } else { path2 = path2.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); path2 = new RegExp("^" + path2 + "$"); } } return path2; }; WebSocketRouter.prototype.handleRequest = function(request) { var requestedProtocols = request.requestedProtocols; if (requestedProtocols.length === 0) { requestedProtocols = ["____no_protocol____"]; } for (var i = 0; i < requestedProtocols.length; i++) { var requestedProtocol = requestedProtocols[i].toLocaleLowerCase(); for (var j = 0, len = this.handlers.length; j < len; j++) { var handler = this.handlers[j]; if (handler.path.test(request.resourceURL.pathname)) { if (requestedProtocol === handler.protocol || handler.protocol === "*") { var routerRequest = new WebSocketRouterRequest(request, requestedProtocol); handler.callback(routerRequest); return; } } } } request.reject(404, "No handler is available for the given request."); }; module2.exports = WebSocketRouter; } }); // node_modules/is-typedarray/index.js var require_is_typedarray = __commonJS({ "node_modules/is-typedarray/index.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = isTypedArray; isTypedArray.strict = isStrictTypedArray; isTypedArray.loose = isLooseTypedArray; var toString = Object.prototype.toString; var names = { "[object Int8Array]": true, "[object Int16Array]": true, "[object Int32Array]": true, "[object Uint8Array]": true, "[object Uint8ClampedArray]": true, "[object Uint16Array]": true, "[object Uint32Array]": true, "[object Float32Array]": true, "[object Float64Array]": true }; function isTypedArray(arr) { return isStrictTypedArray(arr) || isLooseTypedArray(arr); } function isStrictTypedArray(arr) { return arr instanceof Int8Array || arr instanceof Int16Array || arr instanceof Int32Array || arr instanceof Uint8Array || arr instanceof Uint8ClampedArray || arr instanceof Uint16Array || arr instanceof Uint32Array || arr instanceof Float32Array || arr instanceof Float64Array; } function isLooseTypedArray(arr) { return names[toString.call(arr)]; } } }); // node_modules/typedarray-to-buffer/index.js var require_typedarray_to_buffer = __commonJS({ "node_modules/typedarray-to-buffer/index.js"(exports2, module2) { init_define_import_meta_env(); var isTypedArray = require_is_typedarray().strict; module2.exports = function typedarrayToBuffer(arr) { if (isTypedArray(arr)) { var buf = Buffer.from(arr.buffer); if (arr.byteLength !== arr.buffer.byteLength) { buf = buf.slice(arr.byteOffset, arr.byteOffset + arr.byteLength); } return buf; } else { return Buffer.from(arr); } }; } }); // node_modules/yaeti/lib/EventTarget.js var require_EventTarget = __commonJS({ "node_modules/yaeti/lib/EventTarget.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = _EventTarget; function _EventTarget() { if (typeof this.addEventListener === "function") { return; } this._listeners = {}; this.addEventListener = _addEventListener; this.removeEventListener = _removeEventListener; this.dispatchEvent = _dispatchEvent; } Object.defineProperties(_EventTarget.prototype, { listeners: { get: function() { return this._listeners; } } }); function _addEventListener(type, newListener) { var listenersType, i, listener; if (!type || !newListener) { return; } listenersType = this._listeners[type]; if (listenersType === void 0) { this._listeners[type] = listenersType = []; } for (i = 0; !!(listener = listenersType[i]); i++) { if (listener === newListener) { return; } } listenersType.push(newListener); } function _removeEventListener(type, oldListener) { var listenersType, i, listener; if (!type || !oldListener) { return; } listenersType = this._listeners[type]; if (listenersType === void 0) { return; } for (i = 0; !!(listener = listenersType[i]); i++) { if (listener === oldListener) { listenersType.splice(i, 1); break; } } if (listenersType.length === 0) { delete this._listeners[type]; } } function _dispatchEvent(event) { var type, listenersType, dummyListener, stopImmediatePropagation = false, i, listener; if (!event || typeof event.type !== "string") { throw new Error("`event` must have a valid `type` property"); } if (event._yaeti) { event.target = this; event.cancelable = true; } try { event.stopImmediatePropagation = function() { stopImmediatePropagation = true; }; } catch (error) { } type = event.type; listenersType = this._listeners[type] || []; dummyListener = this["on" + type]; if (typeof dummyListener === "function") { dummyListener.call(this, event); } for (i = 0; !!(listener = listenersType[i]); i++) { if (stopImmediatePropagation) { break; } listener.call(this, event); } return !event.defaultPrevented; } } }); // node_modules/yaeti/lib/Event.js var require_Event = __commonJS({ "node_modules/yaeti/lib/Event.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = _Event; function _Event(type) { this.type = type; this.isTrusted = false; this._yaeti = true; } } }); // node_modules/yaeti/index.js var require_yaeti = __commonJS({ "node_modules/yaeti/index.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = { EventTarget: require_EventTarget(), Event: require_Event() }; } }); // node_modules/websocket/lib/W3CWebSocket.js var require_W3CWebSocket = __commonJS({ "node_modules/websocket/lib/W3CWebSocket.js"(exports2, module2) { init_define_import_meta_env(); var WebSocketClient = require_WebSocketClient(); var toBuffer = require_typedarray_to_buffer(); var yaeti = require_yaeti(); var CONNECTING = 0; var OPEN = 1; var CLOSING = 2; var CLOSED = 3; module2.exports = W3CWebSocket; function W3CWebSocket(url, protocols, origin, headers, requestOptions, clientConfig) { yaeti.EventTarget.call(this); clientConfig = clientConfig || {}; clientConfig.assembleFragments = true; var self2 = this; this._url = url; this._readyState = CONNECTING; this._protocol = void 0; this._extensions = ""; this._bufferedAmount = 0; this._binaryType = "arraybuffer"; this._connection = void 0; this._client = new WebSocketClient(clientConfig); this._client.on("connect", function(connection) { onConnect.call(self2, connection); }); this._client.on("connectFailed", function() { onConnectFailed.call(self2); }); this._client.connect(url, protocols, origin, headers, requestOptions); } Object.defineProperties(W3CWebSocket.prototype, { url: { get: function() { return this._url; } }, readyState: { get: function() { return this._readyState; } }, protocol: { get: function() { return this._protocol; } }, extensions: { get: function() { return this._extensions; } }, bufferedAmount: { get: function() { return this._bufferedAmount; } } }); Object.defineProperties(W3CWebSocket.prototype, { binaryType: { get: function() { return this._binaryType; }, set: function(type) { if (type !== "arraybuffer") { throw new SyntaxError('just "arraybuffer" type allowed for "binaryType" attribute'); } this._binaryType = type; } } }); [["CONNECTING", CONNECTING], ["OPEN", OPEN], ["CLOSING", CLOSING], ["CLOSED", CLOSED]].forEach(function(property) { Object.defineProperty(W3CWebSocket.prototype, property[0], { get: function() { return property[1]; } }); }); [["CONNECTING", CONNECTING], ["OPEN", OPEN], ["CLOSING", CLOSING], ["CLOSED", CLOSED]].forEach(function(property) { Object.defineProperty(W3CWebSocket, property[0], { get: function() { return property[1]; } }); }); W3CWebSocket.prototype.send = function(data) { if (this._readyState !== OPEN) { throw new Error("cannot call send() while not connected"); } if (typeof data === "string" || data instanceof String) { this._connection.sendUTF(data); } else { if (data instanceof Buffer) { this._connection.sendBytes(data); } else if (data.byteLength || data.byteLength === 0) { data = toBuffer(data); this._connection.sendBytes(data); } else { throw new Error("unknown binary data:", data); } } }; W3CWebSocket.prototype.close = function(code, reason) { switch (this._readyState) { case CONNECTING: onConnectFailed.call(this); this._client.on("connect", function(connection) { if (code) { connection.close(code, reason); } else { connection.close(); } }); break; case OPEN: this._readyState = CLOSING; if (code) { this._connection.close(code, reason); } else { this._connection.close(); } break; case CLOSING: case CLOSED: break; } }; function createCloseEvent(code, reason) { var event = new yaeti.Event("close"); event.code = code; event.reason = reason; event.wasClean = typeof code === "undefined" || code === 1e3; return event; } function createMessageEvent(data) { var event = new yaeti.Event("message"); event.data = data; return event; } function onConnect(connection) { var self2 = this; this._readyState = OPEN; this._connection = connection; this._protocol = connection.protocol; this._extensions = connection.extensions; this._connection.on("close", function(code, reason) { onClose.call(self2, code, reason); }); this._connection.on("message", function(msg) { onMessage.call(self2, msg); }); this.dispatchEvent(new yaeti.Event("open")); } function onConnectFailed() { destroy.call(this); this._readyState = CLOSED; try { this.dispatchEvent(new yaeti.Event("error")); } finally { this.dispatchEvent(createCloseEvent(1006, "connection failed")); } } function onClose(code, reason) { destroy.call(this); this._readyState = CLOSED; this.dispatchEvent(createCloseEvent(code, reason || "")); } function onMessage(message) { if (message.utf8Data) { this.dispatchEvent(createMessageEvent(message.utf8Data)); } else if (message.binaryData) { if (this.binaryType === "arraybuffer") { var buffer = message.binaryData; var arraybuffer = new ArrayBuffer(buffer.length); var view = new Uint8Array(arraybuffer); for (var i = 0, len = buffer.length; i < len; ++i) { view[i] = buffer[i]; } this.dispatchEvent(createMessageEvent(arraybuffer)); } } } function destroy() { this._client.removeAllListeners(); if (this._connection) { this._connection.removeAllListeners(); } } } }); // node_modules/websocket/lib/Deprecation.js var require_Deprecation = __commonJS({ "node_modules/websocket/lib/Deprecation.js"(exports2, module2) { init_define_import_meta_env(); var Deprecation = { disableWarnings: false, deprecationWarningMap: {}, warn: function(deprecationName) { if (!this.disableWarnings && this.deprecationWarningMap[deprecationName]) { console.warn("DEPRECATION WARNING: " + this.deprecationWarningMap[deprecationName]); this.deprecationWarningMap[deprecationName] = false; } } }; module2.exports = Deprecation; } }); // node_modules/websocket/package.json var require_package = __commonJS({ "node_modules/websocket/package.json"(exports2, module2) { module2.exports = { name: "websocket", description: "Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.", keywords: [ "websocket", "websockets", "socket", "networking", "comet", "push", "RFC-6455", "realtime", "server", "client" ], author: "Brian McKelvey <theturtle32@gmail.com> (https://github.com/theturtle32)", contributors: [ "I\xF1aki Baz Castillo <ibc@aliax.net> (http://dev.sipdoc.net)" ], version: "1.0.35", repository: { type: "git", url: "https://github.com/theturtle32/WebSocket-Node.git" }, homepage: "https://github.com/theturtle32/WebSocket-Node", engines: { node: ">=4.0.0" }, dependencies: { bufferutil: "^4.0.1", debug: "^2.2.0", "es5-ext": "^0.10.63", "typedarray-to-buffer": "^3.1.5", "utf-8-validate": "^5.0.2", yaeti: "^0.0.6" }, devDependencies: { "buffer-equal": "^1.0.0", gulp: "^4.0.2", "gulp-jshint": "^2.0.4", "jshint-stylish": "^2.2.1", jshint: "^2.0.0", tape: "^4.9.1" }, config: { verbose: false }, scripts: { test: "tape test/unit/*.js", gulp: "gulp" }, main: "index", directories: { lib: "./lib" }, browser: "lib/browser.js", license: "Apache-2.0" }; } }); // node_modules/websocket/lib/version.js var require_version = __commonJS({ "node_modules/websocket/lib/version.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = require_package().version; } }); // node_modules/websocket/lib/websocket.js var require_websocket = __commonJS({ "node_modules/websocket/lib/websocket.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = { "server": require_WebSocketServer(), "client": require_WebSocketClient(), "router": require_WebSocketRouter(), "frame": require_WebSocketFrame(), "request": require_WebSocketRequest(), "connection": require_WebSocketConnection(), "w3cwebsocket": require_W3CWebSocket(), "deprecation": require_Deprecation(), "version": require_version() }; } }); // node_modules/websocket/index.js var require_websocket2 = __commonJS({ "node_modules/websocket/index.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = require_websocket(); } }); // node_modules/tslib/tslib.es6.mjs var tslib_es6_exports = {}; __export(tslib_es6_exports, { __addDisposableResource: () => __addDisposableResource, __assign: () => __assign, __asyncDelegator: () => __asyncDelegator, __asyncGenerator: () => __asyncGenerator, __asyncValues: () => __asyncValues, __await: () => __await, __awaiter: () => __awaiter, __classPrivateFieldGet: () => __classPrivateFieldGet, __classPrivateFieldIn: () => __classPrivateFieldIn, __classPrivateFieldSet: () => __classPrivateFieldSet, __createBinding: () => __createBinding, __decorate: () => __decorate, __disposeResources: () => __disposeResources, __esDecorate: () => __esDecorate, __exportStar: () => __exportStar, __extends: () => __extends, __generator: () => __generator, __importDefault: () => __importDefault, __importStar: () => __importStar, __makeTemplateObject: () => __makeTemplateObject, __metadata: () => __metadata, __param: () => __param, __propKey: () => __propKey, __read: () => __read, __rest: () => __rest, __rewriteRelativeImportExtension: () => __rewriteRelativeImportExtension, __runInitializers: () => __runInitializers, __setFunctionName: () => __setFunctionName, __spread: () => __spread, __spreadArray: () => __spreadArray, __spreadArrays: () => __spreadArrays, __values: () => __values2, default: () => tslib_es6_default }); function __extends(d, b) { if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } function __rest(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; } function __decorate(decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 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; return c > 3 && r && Object.defineProperty(target, key, r), r; } function __param(paramIndex, decorator) { return function(target, key) { decorator(target, key, paramIndex); }; } function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) { function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; } var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value"; var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null; var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {}); var _, done = false; for (var i = decorators.length - 1; i >= 0; i--) { var context2 = {}; for (var p in contextIn) context2[p] = p === "access" ? {} : contextIn[p]; for (var p in contextIn.access) context2.access[p] = contextIn.access[p]; context2.addInitializer = function(f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); }; var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context2); if (kind === "accessor") { if (result === void 0) continue; if (result === null || typeof result !== "object") throw new TypeError("Object expected"); if (_ = accept(result.get)) descriptor.get = _; if (_ = accept(result.set)) descriptor.set = _; if (_ = accept(result.init)) initializers.unshift(_); } else if (_ = accept(result)) { if (kind === "field") initializers.unshift(_); else descriptor[key] = _; } } if (target) Object.defineProperty(target, contextIn.name, descriptor); done = true; } function __runInitializers(thisArg, initializers, value) { var useValue = arguments.length > 2; for (var i = 0; i < initializers.length; i++) { value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg); } return useValue ? value : void 0; } function __propKey(x) { return typeof x === "symbol" ? x : "".concat(x); } function __setFunctionName(f, name, prefix) { if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); } function __metadata(metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); } function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { resolve(value); }); } return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); } function __generator(thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype); return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function(v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (g && (g = 0, op[0] && (_ = 0)), _) try { 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; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } } function __exportStar(m, o) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p); } function __values2(o) { var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; if (m) return m.call(o); if (o && typeof o.length === "number") return { next: function() { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); } function __read(o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; } function __spread() { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; } function __spreadArrays() { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; } function __spreadArray(to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); } function __await(v) { return this instanceof __await ? (this.v = v, this) : new __await(v); } function __asyncGenerator(thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function() { return this; }, i; function awaitReturn(f) { return function(v) { return Promise.resolve(v).then(f, reject); }; } function verb(n, f) { if (g[n]) { i[n] = function(v) { return new Promise(function(a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } } function __asyncDelegator(o) { var i, p; return i = {}, verb("next"), verb("throw", function(e) { throw e; }), verb("return"), i[Symbol.iterator] = function() { return this; }, i; 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; } } function __asyncValues(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; return m ? m.call(o) : (o = typeof __values2 === "function" ? __values2(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function() { return this; }, i); 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); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve({ value: v2, done: d }); }, reject); } } function __makeTemplateObject(cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; } function __importStar(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); } __setModuleDefault(result, mod); return result; } function __importDefault(mod) { return mod && mod.__esModule ? mod : { default: mod }; } function __classPrivateFieldGet(receiver, state2, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); if (typeof state2 === "function" ? receiver !== state2 || !f : !state2.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state2.get(receiver); } function __classPrivateFieldSet(receiver, state2, value, kind, f) { if (kind === "m") throw new TypeError("Private method is not writable"); if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter"); if (typeof state2 === "function" ? receiver !== state2 || !f : !state2.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return kind === "a" ? f.call(receiver, value) : f ? f.value = value : state2.set(receiver, value), value; } function __classPrivateFieldIn(state2, receiver) { if (receiver === null || typeof receiver !== "object" && typeof receiver !== "function") throw new TypeError("Cannot use 'in' operator on non-object"); return typeof state2 === "function" ? receiver === state2 : state2.has(receiver); } function __addDisposableResource(env2, value, async) { if (value !== null && value !== void 0) { if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected."); var dispose, inner; if (async) { if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined."); dispose = value[Symbol.asyncDispose]; } if (dispose === void 0) { if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined."); dispose = value[Symbol.dispose]; if (async) inner = dispose; } if (typeof dispose !== "function") throw new TypeError("Object not disposable."); if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } }; env2.stack.push({ value, dispose, async }); } else if (async) { env2.stack.push({ async: true }); } return value; } function __disposeResources(env2) { function fail(e) { env2.error = env2.hasError ? new _SuppressedError(e, env2.error, "An error was suppressed during disposal.") : e; env2.hasError = true; } var r, s = 0; function next() { while (r = env2.stack.pop()) { try { if (!r.async && s === 1) return s = 0, env2.stack.push(r), Promise.resolve().then(next); if (r.dispose) { var result = r.dispose.call(r.value); if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); }); } else s |= 1; } catch (e) { fail(e); } } if (s === 1) return env2.hasError ? Promise.reject(env2.error) : Promise.resolve(); if (env2.hasError) throw env2.error; } return next(); } function __rewriteRelativeImportExtension(path2, preserveJsx) { if (typeof path2 === "string" && /^\.\.?\//.test(path2)) { return path2.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function(m, tsx, d, ext, cm) { return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : d + ext + "." + cm.toLowerCase() + "js"; }); } return path2; } var extendStatics, __assign, __createBinding, __setModuleDefault, ownKeys, _SuppressedError, tslib_es6_default; var init_tslib_es6 = __esm({ "node_modules/tslib/tslib.es6.mjs"() { init_define_import_meta_env(); extendStatics = function(d, b) { extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(d2, b2) { d2.__proto__ = b2; } || function(d2, b2) { for (var p in b2) if (Object.prototype.hasOwnProperty.call(b2, p)) d2[p] = b2[p]; }; return extendStatics(d, b); }; __assign = function() { __assign = Object.assign || function __assign2(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; __createBinding = Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; }); __setModuleDefault = Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }; ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function(o2) { var ar = []; for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) { var e = new Error(message); return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; }; tslib_es6_default = { __extends, __assign, __rest, __decorate, __param, __esDecorate, __runInitializers, __propKey, __setFunctionName, __metadata, __awaiter, __generator, __createBinding, __exportStar, __values: __values2, __read, __spread, __spreadArrays, __spreadArray, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault, __classPrivateFieldGet, __classPrivateFieldSet, __classPrivateFieldIn, __addDisposableResource, __disposeResources, __rewriteRelativeImportExtension }; } }); // node_modules/async-mutex/lib/errors.js var require_errors2 = __commonJS({ "node_modules/async-mutex/lib/errors.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.E_CANCELED = exports2.E_ALREADY_LOCKED = exports2.E_TIMEOUT = void 0; exports2.E_TIMEOUT = new Error("timeout while waiting for mutex to become available"); exports2.E_ALREADY_LOCKED = new Error("mutex already locked"); exports2.E_CANCELED = new Error("request for lock canceled"); } }); // node_modules/async-mutex/lib/Semaphore.js var require_Semaphore = __commonJS({ "node_modules/async-mutex/lib/Semaphore.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var errors_1 = require_errors2(); var Semaphore = ( /** @class */ (function() { function Semaphore2(_maxConcurrency, _cancelError) { if (_cancelError === void 0) { _cancelError = errors_1.E_CANCELED; } this._maxConcurrency = _maxConcurrency; this._cancelError = _cancelError; this._queue = []; this._waiters = []; if (_maxConcurrency <= 0) { throw new Error("semaphore must be initialized to a positive value"); } this._value = _maxConcurrency; } Semaphore2.prototype.acquire = function() { var _this = this; var locked = this.isLocked(); var ticketPromise = new Promise(function(resolve, reject) { return _this._queue.push({ resolve, reject }); }); if (!locked) this._dispatch(); return ticketPromise; }; Semaphore2.prototype.runExclusive = function(callback) { return (0, tslib_1.__awaiter)(this, void 0, void 0, function() { var _a, value, release; return (0, tslib_1.__generator)(this, function(_b) { switch (_b.label) { case 0: return [4, this.acquire()]; case 1: _a = _b.sent(), value = _a[0], release = _a[1]; _b.label = 2; case 2: _b.trys.push([2, , 4, 5]); return [4, callback(value)]; case 3: return [2, _b.sent()]; case 4: release(); return [ 7 /*endfinally*/ ]; case 5: return [ 2 /*return*/ ]; } }); }); }; Semaphore2.prototype.waitForUnlock = function() { return (0, tslib_1.__awaiter)(this, void 0, void 0, function() { var waitPromise; var _this = this; return (0, tslib_1.__generator)(this, function(_a) { if (!this.isLocked()) { return [2, Promise.resolve()]; } waitPromise = new Promise(function(resolve) { return _this._waiters.push({ resolve }); }); return [2, waitPromise]; }); }); }; Semaphore2.prototype.isLocked = function() { return this._value <= 0; }; Semaphore2.prototype.release = function() { if (this._maxConcurrency > 1) { throw new Error("this method is unavailable on semaphores with concurrency > 1; use the scoped release returned by acquire instead"); } if (this._currentReleaser) { var releaser = this._currentReleaser; this._currentReleaser = void 0; releaser(); } }; Semaphore2.prototype.cancel = function() { var _this = this; this._queue.forEach(function(ticket) { return ticket.reject(_this._cancelError); }); this._queue = []; }; Semaphore2.prototype._dispatch = function() { var _this = this; var nextTicket = this._queue.shift(); if (!nextTicket) return; var released = false; this._currentReleaser = function() { if (released) return; released = true; _this._value++; _this._resolveWaiters(); _this._dispatch(); }; nextTicket.resolve([this._value--, this._currentReleaser]); }; Semaphore2.prototype._resolveWaiters = function() { this._waiters.forEach(function(waiter) { return waiter.resolve(); }); this._waiters = []; }; return Semaphore2; })() ); exports2.default = Semaphore; } }); // node_modules/async-mutex/lib/Mutex.js var require_Mutex = __commonJS({ "node_modules/async-mutex/lib/Mutex.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var Semaphore_1 = require_Semaphore(); var Mutex = ( /** @class */ (function() { function Mutex2(cancelError) { this._semaphore = new Semaphore_1.default(1, cancelError); } Mutex2.prototype.acquire = function() { return (0, tslib_1.__awaiter)(this, void 0, void 0, function() { var _a, releaser; return (0, tslib_1.__generator)(this, function(_b) { switch (_b.label) { case 0: return [4, this._semaphore.acquire()]; case 1: _a = _b.sent(), releaser = _a[1]; return [2, releaser]; } }); }); }; Mutex2.prototype.runExclusive = function(callback) { return this._semaphore.runExclusive(function() { return callback(); }); }; Mutex2.prototype.isLocked = function() { return this._semaphore.isLocked(); }; Mutex2.prototype.waitForUnlock = function() { return this._semaphore.waitForUnlock(); }; Mutex2.prototype.release = function() { this._semaphore.release(); }; Mutex2.prototype.cancel = function() { return this._semaphore.cancel(); }; return Mutex2; })() ); exports2.default = Mutex; } }); // node_modules/async-mutex/lib/withTimeout.js var require_withTimeout = __commonJS({ "node_modules/async-mutex/lib/withTimeout.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.withTimeout = void 0; var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var errors_1 = require_errors2(); function withTimeout(sync, timeout, timeoutError) { var _this = this; if (timeoutError === void 0) { timeoutError = errors_1.E_TIMEOUT; } return { acquire: function() { return new Promise(function(resolve, reject) { return (0, tslib_1.__awaiter)(_this, void 0, void 0, function() { var isTimeout, handle2, ticket, release, e_1; return (0, tslib_1.__generator)(this, function(_a) { switch (_a.label) { case 0: isTimeout = false; handle2 = setTimeout(function() { isTimeout = true; reject(timeoutError); }, timeout); _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); return [4, sync.acquire()]; case 2: ticket = _a.sent(); if (isTimeout) { release = Array.isArray(ticket) ? ticket[1] : ticket; release(); } else { clearTimeout(handle2); resolve(ticket); } return [3, 4]; case 3: e_1 = _a.sent(); if (!isTimeout) { clearTimeout(handle2); reject(e_1); } return [3, 4]; case 4: return [ 2 /*return*/ ]; } }); }); }); }, runExclusive: function(callback) { return (0, tslib_1.__awaiter)(this, void 0, void 0, function() { var release, ticket; return (0, tslib_1.__generator)(this, function(_a) { switch (_a.label) { case 0: release = function() { return void 0; }; _a.label = 1; case 1: _a.trys.push([1, , 7, 8]); return [4, this.acquire()]; case 2: ticket = _a.sent(); if (!Array.isArray(ticket)) return [3, 4]; release = ticket[1]; return [4, callback(ticket[0])]; case 3: return [2, _a.sent()]; case 4: release = ticket; return [4, callback()]; case 5: return [2, _a.sent()]; case 6: return [3, 8]; case 7: release(); return [ 7 /*endfinally*/ ]; case 8: return [ 2 /*return*/ ]; } }); }); }, /** @deprecated Deprecated in 0.3.0, will be removed in 0.4.0. Use runExclusive instead. */ release: function() { sync.release(); }, cancel: function() { return sync.cancel(); }, waitForUnlock: function() { return sync.waitForUnlock(); }, isLocked: function() { return sync.isLocked(); } }; } exports2.withTimeout = withTimeout; } }); // node_modules/async-mutex/lib/tryAcquire.js var require_tryAcquire = __commonJS({ "node_modules/async-mutex/lib/tryAcquire.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.tryAcquire = void 0; var errors_1 = require_errors2(); var withTimeout_1 = require_withTimeout(); function tryAcquire(sync, alreadyAcquiredError) { if (alreadyAcquiredError === void 0) { alreadyAcquiredError = errors_1.E_ALREADY_LOCKED; } return (0, withTimeout_1.withTimeout)(sync, 0, alreadyAcquiredError); } exports2.tryAcquire = tryAcquire; } }); // node_modules/async-mutex/lib/index.js var require_lib16 = __commonJS({ "node_modules/async-mutex/lib/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.tryAcquire = exports2.withTimeout = exports2.Semaphore = exports2.Mutex = void 0; var tslib_1 = (init_tslib_es6(), __toCommonJS(tslib_es6_exports)); var Mutex_1 = require_Mutex(); Object.defineProperty(exports2, "Mutex", { enumerable: true, get: function() { return Mutex_1.default; } }); var Semaphore_1 = require_Semaphore(); Object.defineProperty(exports2, "Semaphore", { enumerable: true, get: function() { return Semaphore_1.default; } }); var withTimeout_1 = require_withTimeout(); Object.defineProperty(exports2, "withTimeout", { enumerable: true, get: function() { return withTimeout_1.withTimeout; } }); var tryAcquire_1 = require_tryAcquire(); Object.defineProperty(exports2, "tryAcquire", { enumerable: true, get: function() { return tryAcquire_1.tryAcquire; } }); (0, tslib_1.__exportStar)(require_errors2(), exports2); } }); // node_modules/telegram/extensions/PromisedWebSockets.js var require_PromisedWebSockets = __commonJS({ "node_modules/telegram/extensions/PromisedWebSockets.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.PromisedWebSockets = void 0; var websocket_1 = require_websocket2(); var async_mutex_1 = require_lib16(); var platform_1 = require_platform(); var mutex = new async_mutex_1.Mutex(); var closeError = new Error("WebSocket was closed"); var PromisedWebSockets = class { constructor() { this.client = void 0; this.stream = Buffer.alloc(0); this.closed = true; } async readExactly(number) { let readData = Buffer.alloc(0); while (true) { const thisTime = await this.read(number); readData = Buffer.concat([readData, thisTime]); number = number - thisTime.length; if (!number) { return readData; } } } async read(number) { if (this.closed) { throw closeError; } await this.canRead; if (this.closed) { throw closeError; } const toReturn = this.stream.slice(0, number); this.stream = this.stream.slice(number); if (this.stream.length === 0) { this.canRead = new Promise((resolve) => { this.resolveRead = resolve; }); } return toReturn; } async readAll() { if (this.closed || !await this.canRead) { throw closeError; } const toReturn = this.stream; this.stream = Buffer.alloc(0); this.canRead = new Promise((resolve) => { this.resolveRead = resolve; }); return toReturn; } getWebSocketLink(ip, port, testServers) { if (port === 443) { return `wss://${ip}:${port}/apiws${testServers ? "_test" : ""}`; } else { return `ws://${ip}:${port}/apiws${testServers ? "_test" : ""}`; } } async connect(port, ip, testServers = false) { this.stream = Buffer.alloc(0); this.canRead = new Promise((resolve) => { this.resolveRead = resolve; }); this.closed = false; this.website = this.getWebSocketLink(ip, port, testServers); this.client = new websocket_1.w3cwebsocket(this.website, "binary"); return new Promise((resolve, reject) => { if (this.client) { this.client.onopen = () => { this.receive(); resolve(this); }; this.client.onerror = (error) => { reject(error); }; this.client.onclose = () => { if (this.resolveRead) { this.resolveRead(false); } this.closed = true; }; if (platform_1.isBrowser) { window.addEventListener("offline", async () => { await this.close(); if (this.resolveRead) { this.resolveRead(false); } }); } } }); } write(data) { if (this.closed) { throw closeError; } if (this.client) { this.client.send(data); } } async close() { if (this.client) { await this.client.close(); } this.closed = true; } async receive() { if (this.client) { this.client.onmessage = async (message) => { const release = await mutex.acquire(); try { let data; data = Buffer.from(await new Response(message.data).arrayBuffer()); this.stream = Buffer.concat([this.stream, data]); if (this.resolveRead) { this.resolveRead(true); } } finally { release(); } }; } } toString() { return "PromisedWebSocket"; } }; exports2.PromisedWebSockets = PromisedWebSockets; } }); // node_modules/telegram/extensions/net.js var require_net = __commonJS({ "node_modules/telegram/extensions/net.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); __exportStar2(require("net"), exports2); } }); // node_modules/smart-buffer/build/utils.js var require_utils6 = __commonJS({ "node_modules/smart-buffer/build/utils.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); var buffer_1 = require("buffer"); var ERRORS2 = { INVALID_ENCODING: "Invalid encoding provided. Please specify a valid encoding the internal Node.js Buffer supports.", INVALID_SMARTBUFFER_SIZE: "Invalid size provided. Size must be a valid integer greater than zero.", INVALID_SMARTBUFFER_BUFFER: "Invalid Buffer provided in SmartBufferOptions.", INVALID_SMARTBUFFER_OBJECT: "Invalid SmartBufferOptions object supplied to SmartBuffer constructor or factory methods.", INVALID_OFFSET: "An invalid offset value was provided.", INVALID_OFFSET_NON_NUMBER: "An invalid offset value was provided. A numeric value is required.", INVALID_LENGTH: "An invalid length value was provided.", INVALID_LENGTH_NON_NUMBER: "An invalid length value was provived. A numeric value is required.", INVALID_TARGET_OFFSET: "Target offset is beyond the bounds of the internal SmartBuffer data.", INVALID_TARGET_LENGTH: "Specified length value moves cursor beyong the bounds of the internal SmartBuffer data.", INVALID_READ_BEYOND_BOUNDS: "Attempted to read beyond the bounds of the managed data.", INVALID_WRITE_BEYOND_BOUNDS: "Attempted to write beyond the bounds of the managed data." }; exports2.ERRORS = ERRORS2; function checkEncoding(encoding) { if (!buffer_1.Buffer.isEncoding(encoding)) { throw new Error(ERRORS2.INVALID_ENCODING); } } exports2.checkEncoding = checkEncoding; function isFiniteInteger(value) { return typeof value === "number" && isFinite(value) && isInteger(value); } exports2.isFiniteInteger = isFiniteInteger; function checkOffsetOrLengthValue(value, offset) { if (typeof value === "number") { if (!isFiniteInteger(value) || value < 0) { throw new Error(offset ? ERRORS2.INVALID_OFFSET : ERRORS2.INVALID_LENGTH); } } else { throw new Error(offset ? ERRORS2.INVALID_OFFSET_NON_NUMBER : ERRORS2.INVALID_LENGTH_NON_NUMBER); } } function checkLengthValue(length) { checkOffsetOrLengthValue(length, false); } exports2.checkLengthValue = checkLengthValue; function checkOffsetValue(offset) { checkOffsetOrLengthValue(offset, true); } exports2.checkOffsetValue = checkOffsetValue; function checkTargetOffset(offset, buff) { if (offset < 0 || offset > buff.length) { throw new Error(ERRORS2.INVALID_TARGET_OFFSET); } } exports2.checkTargetOffset = checkTargetOffset; function isInteger(value) { return typeof value === "number" && isFinite(value) && Math.floor(value) === value; } function bigIntAndBufferInt64Check(bufferMethod) { if (typeof BigInt === "undefined") { throw new Error("Platform does not support JS BigInt type."); } if (typeof buffer_1.Buffer.prototype[bufferMethod] === "undefined") { throw new Error(`Platform does not support Buffer.prototype.${bufferMethod}.`); } } exports2.bigIntAndBufferInt64Check = bigIntAndBufferInt64Check; } }); // node_modules/smart-buffer/build/smartbuffer.js var require_smartbuffer = __commonJS({ "node_modules/smart-buffer/build/smartbuffer.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); var utils_1 = require_utils6(); var DEFAULT_SMARTBUFFER_SIZE = 4096; var DEFAULT_SMARTBUFFER_ENCODING = "utf8"; var SmartBuffer = class _SmartBuffer { /** * Creates a new SmartBuffer instance. * * @param options { SmartBufferOptions } The SmartBufferOptions to apply to this instance. */ constructor(options) { this.length = 0; this._encoding = DEFAULT_SMARTBUFFER_ENCODING; this._writeOffset = 0; this._readOffset = 0; if (_SmartBuffer.isSmartBufferOptions(options)) { if (options.encoding) { utils_1.checkEncoding(options.encoding); this._encoding = options.encoding; } if (options.size) { if (utils_1.isFiniteInteger(options.size) && options.size > 0) { this._buff = Buffer.allocUnsafe(options.size); } else { throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_SIZE); } } else if (options.buff) { if (Buffer.isBuffer(options.buff)) { this._buff = options.buff; this.length = options.buff.length; } else { throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_BUFFER); } } else { this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); } } else { if (typeof options !== "undefined") { throw new Error(utils_1.ERRORS.INVALID_SMARTBUFFER_OBJECT); } this._buff = Buffer.allocUnsafe(DEFAULT_SMARTBUFFER_SIZE); } } /** * Creates a new SmartBuffer instance with the provided internal Buffer size and optional encoding. * * @param size { Number } The size of the internal Buffer. * @param encoding { String } The BufferEncoding to use for strings. * * @return { SmartBuffer } */ static fromSize(size, encoding) { return new this({ size, encoding }); } /** * Creates a new SmartBuffer instance with the provided Buffer and optional encoding. * * @param buffer { Buffer } The Buffer to use as the internal Buffer value. * @param encoding { String } The BufferEncoding to use for strings. * * @return { SmartBuffer } */ static fromBuffer(buff, encoding) { return new this({ buff, encoding }); } /** * Creates a new SmartBuffer instance with the provided SmartBufferOptions options. * * @param options { SmartBufferOptions } The options to use when creating the SmartBuffer instance. */ static fromOptions(options) { return new this(options); } /** * Type checking function that determines if an object is a SmartBufferOptions object. */ static isSmartBufferOptions(options) { const castOptions = options; return castOptions && (castOptions.encoding !== void 0 || castOptions.size !== void 0 || castOptions.buff !== void 0); } // Signed integers /** * Reads an Int8 value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readInt8(offset) { return this._readNumberValue(Buffer.prototype.readInt8, 1, offset); } /** * Reads an Int16BE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readInt16BE(offset) { return this._readNumberValue(Buffer.prototype.readInt16BE, 2, offset); } /** * Reads an Int16LE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readInt16LE(offset) { return this._readNumberValue(Buffer.prototype.readInt16LE, 2, offset); } /** * Reads an Int32BE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readInt32BE(offset) { return this._readNumberValue(Buffer.prototype.readInt32BE, 4, offset); } /** * Reads an Int32LE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readInt32LE(offset) { return this._readNumberValue(Buffer.prototype.readInt32LE, 4, offset); } /** * Reads a BigInt64BE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { BigInt } */ readBigInt64BE(offset) { utils_1.bigIntAndBufferInt64Check("readBigInt64BE"); return this._readNumberValue(Buffer.prototype.readBigInt64BE, 8, offset); } /** * Reads a BigInt64LE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { BigInt } */ readBigInt64LE(offset) { utils_1.bigIntAndBufferInt64Check("readBigInt64LE"); return this._readNumberValue(Buffer.prototype.readBigInt64LE, 8, offset); } /** * Writes an Int8 value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeInt8(value, offset) { this._writeNumberValue(Buffer.prototype.writeInt8, 1, value, offset); return this; } /** * Inserts an Int8 value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertInt8(value, offset) { return this._insertNumberValue(Buffer.prototype.writeInt8, 1, value, offset); } /** * Writes an Int16BE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeInt16BE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); } /** * Inserts an Int16BE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertInt16BE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeInt16BE, 2, value, offset); } /** * Writes an Int16LE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeInt16LE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); } /** * Inserts an Int16LE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertInt16LE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeInt16LE, 2, value, offset); } /** * Writes an Int32BE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeInt32BE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); } /** * Inserts an Int32BE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertInt32BE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeInt32BE, 4, value, offset); } /** * Writes an Int32LE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeInt32LE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); } /** * Inserts an Int32LE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertInt32LE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeInt32LE, 4, value, offset); } /** * Writes a BigInt64BE value to the current write position (or at optional offset). * * @param value { BigInt } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeBigInt64BE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigInt64BE"); return this._writeNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); } /** * Inserts a BigInt64BE value at the given offset value. * * @param value { BigInt } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertBigInt64BE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigInt64BE"); return this._insertNumberValue(Buffer.prototype.writeBigInt64BE, 8, value, offset); } /** * Writes a BigInt64LE value to the current write position (or at optional offset). * * @param value { BigInt } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeBigInt64LE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigInt64LE"); return this._writeNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); } /** * Inserts a Int64LE value at the given offset value. * * @param value { BigInt } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertBigInt64LE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigInt64LE"); return this._insertNumberValue(Buffer.prototype.writeBigInt64LE, 8, value, offset); } // Unsigned Integers /** * Reads an UInt8 value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readUInt8(offset) { return this._readNumberValue(Buffer.prototype.readUInt8, 1, offset); } /** * Reads an UInt16BE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readUInt16BE(offset) { return this._readNumberValue(Buffer.prototype.readUInt16BE, 2, offset); } /** * Reads an UInt16LE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readUInt16LE(offset) { return this._readNumberValue(Buffer.prototype.readUInt16LE, 2, offset); } /** * Reads an UInt32BE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readUInt32BE(offset) { return this._readNumberValue(Buffer.prototype.readUInt32BE, 4, offset); } /** * Reads an UInt32LE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readUInt32LE(offset) { return this._readNumberValue(Buffer.prototype.readUInt32LE, 4, offset); } /** * Reads a BigUInt64BE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { BigInt } */ readBigUInt64BE(offset) { utils_1.bigIntAndBufferInt64Check("readBigUInt64BE"); return this._readNumberValue(Buffer.prototype.readBigUInt64BE, 8, offset); } /** * Reads a BigUInt64LE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { BigInt } */ readBigUInt64LE(offset) { utils_1.bigIntAndBufferInt64Check("readBigUInt64LE"); return this._readNumberValue(Buffer.prototype.readBigUInt64LE, 8, offset); } /** * Writes an UInt8 value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeUInt8(value, offset) { return this._writeNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); } /** * Inserts an UInt8 value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertUInt8(value, offset) { return this._insertNumberValue(Buffer.prototype.writeUInt8, 1, value, offset); } /** * Writes an UInt16BE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeUInt16BE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); } /** * Inserts an UInt16BE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertUInt16BE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeUInt16BE, 2, value, offset); } /** * Writes an UInt16LE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeUInt16LE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); } /** * Inserts an UInt16LE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertUInt16LE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeUInt16LE, 2, value, offset); } /** * Writes an UInt32BE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeUInt32BE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); } /** * Inserts an UInt32BE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertUInt32BE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeUInt32BE, 4, value, offset); } /** * Writes an UInt32LE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeUInt32LE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); } /** * Inserts an UInt32LE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertUInt32LE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeUInt32LE, 4, value, offset); } /** * Writes a BigUInt64BE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeBigUInt64BE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigUInt64BE"); return this._writeNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); } /** * Inserts a BigUInt64BE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertBigUInt64BE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigUInt64BE"); return this._insertNumberValue(Buffer.prototype.writeBigUInt64BE, 8, value, offset); } /** * Writes a BigUInt64LE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeBigUInt64LE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigUInt64LE"); return this._writeNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); } /** * Inserts a BigUInt64LE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertBigUInt64LE(value, offset) { utils_1.bigIntAndBufferInt64Check("writeBigUInt64LE"); return this._insertNumberValue(Buffer.prototype.writeBigUInt64LE, 8, value, offset); } // Floating Point /** * Reads an FloatBE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readFloatBE(offset) { return this._readNumberValue(Buffer.prototype.readFloatBE, 4, offset); } /** * Reads an FloatLE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readFloatLE(offset) { return this._readNumberValue(Buffer.prototype.readFloatLE, 4, offset); } /** * Writes a FloatBE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeFloatBE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); } /** * Inserts a FloatBE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertFloatBE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeFloatBE, 4, value, offset); } /** * Writes a FloatLE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeFloatLE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); } /** * Inserts a FloatLE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertFloatLE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeFloatLE, 4, value, offset); } // Double Floating Point /** * Reads an DoublEBE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readDoubleBE(offset) { return this._readNumberValue(Buffer.prototype.readDoubleBE, 8, offset); } /** * Reads an DoubleLE value from the current read position or an optionally provided offset. * * @param offset { Number } The offset to read data from (optional) * @return { Number } */ readDoubleLE(offset) { return this._readNumberValue(Buffer.prototype.readDoubleLE, 8, offset); } /** * Writes a DoubleBE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeDoubleBE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); } /** * Inserts a DoubleBE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertDoubleBE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeDoubleBE, 8, value, offset); } /** * Writes a DoubleLE value to the current write position (or at optional offset). * * @param value { Number } The value to write. * @param offset { Number } The offset to write the value at. * * @return this */ writeDoubleLE(value, offset) { return this._writeNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); } /** * Inserts a DoubleLE value at the given offset value. * * @param value { Number } The value to insert. * @param offset { Number } The offset to insert the value at. * * @return this */ insertDoubleLE(value, offset) { return this._insertNumberValue(Buffer.prototype.writeDoubleLE, 8, value, offset); } // Strings /** * Reads a String from the current read position. * * @param arg1 { Number | String } The number of bytes to read as a String, or the BufferEncoding to use for * the string (Defaults to instance level encoding). * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). * * @return { String } */ readString(arg1, encoding) { let lengthVal; if (typeof arg1 === "number") { utils_1.checkLengthValue(arg1); lengthVal = Math.min(arg1, this.length - this._readOffset); } else { encoding = arg1; lengthVal = this.length - this._readOffset; } if (typeof encoding !== "undefined") { utils_1.checkEncoding(encoding); } const value = this._buff.slice(this._readOffset, this._readOffset + lengthVal).toString(encoding || this._encoding); this._readOffset += lengthVal; return value; } /** * Inserts a String * * @param value { String } The String value to insert. * @param offset { Number } The offset to insert the string at. * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). * * @return this */ insertString(value, offset, encoding) { utils_1.checkOffsetValue(offset); return this._handleString(value, true, offset, encoding); } /** * Writes a String * * @param value { String } The String value to write. * @param arg2 { Number | String } The offset to write the string at, or the BufferEncoding to use. * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). * * @return this */ writeString(value, arg2, encoding) { return this._handleString(value, false, arg2, encoding); } /** * Reads a null-terminated String from the current read position. * * @param encoding { String } The BufferEncoding to use for the string (Defaults to instance level encoding). * * @return { String } */ readStringNT(encoding) { if (typeof encoding !== "undefined") { utils_1.checkEncoding(encoding); } let nullPos = this.length; for (let i = this._readOffset; i < this.length; i++) { if (this._buff[i] === 0) { nullPos = i; break; } } const value = this._buff.slice(this._readOffset, nullPos); this._readOffset = nullPos + 1; return value.toString(encoding || this._encoding); } /** * Inserts a null-terminated String. * * @param value { String } The String value to write. * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). * * @return this */ insertStringNT(value, offset, encoding) { utils_1.checkOffsetValue(offset); this.insertString(value, offset, encoding); this.insertUInt8(0, offset + value.length); return this; } /** * Writes a null-terminated String. * * @param value { String } The String value to write. * @param arg2 { Number | String } The offset to write the string to, or the BufferEncoding to use. * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). * * @return this */ writeStringNT(value, arg2, encoding) { this.writeString(value, arg2, encoding); this.writeUInt8(0, typeof arg2 === "number" ? arg2 + value.length : this.writeOffset); return this; } // Buffers /** * Reads a Buffer from the internal read position. * * @param length { Number } The length of data to read as a Buffer. * * @return { Buffer } */ readBuffer(length) { if (typeof length !== "undefined") { utils_1.checkLengthValue(length); } const lengthVal = typeof length === "number" ? length : this.length; const endPoint = Math.min(this.length, this._readOffset + lengthVal); const value = this._buff.slice(this._readOffset, endPoint); this._readOffset = endPoint; return value; } /** * Writes a Buffer to the current write position. * * @param value { Buffer } The Buffer to write. * @param offset { Number } The offset to write the Buffer to. * * @return this */ insertBuffer(value, offset) { utils_1.checkOffsetValue(offset); return this._handleBuffer(value, true, offset); } /** * Writes a Buffer to the current write position. * * @param value { Buffer } The Buffer to write. * @param offset { Number } The offset to write the Buffer to. * * @return this */ writeBuffer(value, offset) { return this._handleBuffer(value, false, offset); } /** * Reads a null-terminated Buffer from the current read poisiton. * * @return { Buffer } */ readBufferNT() { let nullPos = this.length; for (let i = this._readOffset; i < this.length; i++) { if (this._buff[i] === 0) { nullPos = i; break; } } const value = this._buff.slice(this._readOffset, nullPos); this._readOffset = nullPos + 1; return value; } /** * Inserts a null-terminated Buffer. * * @param value { Buffer } The Buffer to write. * @param offset { Number } The offset to write the Buffer to. * * @return this */ insertBufferNT(value, offset) { utils_1.checkOffsetValue(offset); this.insertBuffer(value, offset); this.insertUInt8(0, offset + value.length); return this; } /** * Writes a null-terminated Buffer. * * @param value { Buffer } The Buffer to write. * @param offset { Number } The offset to write the Buffer to. * * @return this */ writeBufferNT(value, offset) { if (typeof offset !== "undefined") { utils_1.checkOffsetValue(offset); } this.writeBuffer(value, offset); this.writeUInt8(0, typeof offset === "number" ? offset + value.length : this._writeOffset); return this; } /** * Clears the SmartBuffer instance to its original empty state. */ clear() { this._writeOffset = 0; this._readOffset = 0; this.length = 0; return this; } /** * Gets the remaining data left to be read from the SmartBuffer instance. * * @return { Number } */ remaining() { return this.length - this._readOffset; } /** * Gets the current read offset value of the SmartBuffer instance. * * @return { Number } */ get readOffset() { return this._readOffset; } /** * Sets the read offset value of the SmartBuffer instance. * * @param offset { Number } - The offset value to set. */ set readOffset(offset) { utils_1.checkOffsetValue(offset); utils_1.checkTargetOffset(offset, this); this._readOffset = offset; } /** * Gets the current write offset value of the SmartBuffer instance. * * @return { Number } */ get writeOffset() { return this._writeOffset; } /** * Sets the write offset value of the SmartBuffer instance. * * @param offset { Number } - The offset value to set. */ set writeOffset(offset) { utils_1.checkOffsetValue(offset); utils_1.checkTargetOffset(offset, this); this._writeOffset = offset; } /** * Gets the currently set string encoding of the SmartBuffer instance. * * @return { BufferEncoding } The string Buffer encoding currently set. */ get encoding() { return this._encoding; } /** * Sets the string encoding of the SmartBuffer instance. * * @param encoding { BufferEncoding } The string Buffer encoding to set. */ set encoding(encoding) { utils_1.checkEncoding(encoding); this._encoding = encoding; } /** * Gets the underlying internal Buffer. (This includes unmanaged data in the Buffer) * * @return { Buffer } The Buffer value. */ get internalBuffer() { return this._buff; } /** * Gets the value of the internal managed Buffer (Includes managed data only) * * @param { Buffer } */ toBuffer() { return this._buff.slice(0, this.length); } /** * Gets the String value of the internal managed Buffer * * @param encoding { String } The BufferEncoding to display the Buffer as (defaults to instance level encoding). */ toString(encoding) { const encodingVal = typeof encoding === "string" ? encoding : this._encoding; utils_1.checkEncoding(encodingVal); return this._buff.toString(encodingVal, 0, this.length); } /** * Destroys the SmartBuffer instance. */ destroy() { this.clear(); return this; } /** * Handles inserting and writing strings. * * @param value { String } The String value to insert. * @param isInsert { Boolean } True if inserting a string, false if writing. * @param arg2 { Number | String } The offset to insert the string at, or the BufferEncoding to use. * @param encoding { String } The BufferEncoding to use for writing strings (defaults to instance encoding). */ _handleString(value, isInsert, arg3, encoding) { let offsetVal = this._writeOffset; let encodingVal = this._encoding; if (typeof arg3 === "number") { offsetVal = arg3; } else if (typeof arg3 === "string") { utils_1.checkEncoding(arg3); encodingVal = arg3; } if (typeof encoding === "string") { utils_1.checkEncoding(encoding); encodingVal = encoding; } const byteLength = Buffer.byteLength(value, encodingVal); if (isInsert) { this.ensureInsertable(byteLength, offsetVal); } else { this._ensureWriteable(byteLength, offsetVal); } this._buff.write(value, offsetVal, byteLength, encodingVal); if (isInsert) { this._writeOffset += byteLength; } else { if (typeof arg3 === "number") { this._writeOffset = Math.max(this._writeOffset, offsetVal + byteLength); } else { this._writeOffset += byteLength; } } return this; } /** * Handles writing or insert of a Buffer. * * @param value { Buffer } The Buffer to write. * @param offset { Number } The offset to write the Buffer to. */ _handleBuffer(value, isInsert, offset) { const offsetVal = typeof offset === "number" ? offset : this._writeOffset; if (isInsert) { this.ensureInsertable(value.length, offsetVal); } else { this._ensureWriteable(value.length, offsetVal); } value.copy(this._buff, offsetVal); if (isInsert) { this._writeOffset += value.length; } else { if (typeof offset === "number") { this._writeOffset = Math.max(this._writeOffset, offsetVal + value.length); } else { this._writeOffset += value.length; } } return this; } /** * Ensures that the internal Buffer is large enough to read data. * * @param length { Number } The length of the data that needs to be read. * @param offset { Number } The offset of the data that needs to be read. */ ensureReadable(length, offset) { let offsetVal = this._readOffset; if (typeof offset !== "undefined") { utils_1.checkOffsetValue(offset); offsetVal = offset; } if (offsetVal < 0 || offsetVal + length > this.length) { throw new Error(utils_1.ERRORS.INVALID_READ_BEYOND_BOUNDS); } } /** * Ensures that the internal Buffer is large enough to insert data. * * @param dataLength { Number } The length of the data that needs to be written. * @param offset { Number } The offset of the data to be written. */ ensureInsertable(dataLength, offset) { utils_1.checkOffsetValue(offset); this._ensureCapacity(this.length + dataLength); if (offset < this.length) { this._buff.copy(this._buff, offset + dataLength, offset, this._buff.length); } if (offset + dataLength > this.length) { this.length = offset + dataLength; } else { this.length += dataLength; } } /** * Ensures that the internal Buffer is large enough to write data. * * @param dataLength { Number } The length of the data that needs to be written. * @param offset { Number } The offset of the data to be written (defaults to writeOffset). */ _ensureWriteable(dataLength, offset) { const offsetVal = typeof offset === "number" ? offset : this._writeOffset; this._ensureCapacity(offsetVal + dataLength); if (offsetVal + dataLength > this.length) { this.length = offsetVal + dataLength; } } /** * Ensures that the internal Buffer is large enough to write at least the given amount of data. * * @param minLength { Number } The minimum length of the data needs to be written. */ _ensureCapacity(minLength) { const oldLength = this._buff.length; if (minLength > oldLength) { let data = this._buff; let newLength = oldLength * 3 / 2 + 1; if (newLength < minLength) { newLength = minLength; } this._buff = Buffer.allocUnsafe(newLength); data.copy(this._buff, 0, 0, oldLength); } } /** * Reads a numeric number value using the provided function. * * @typeparam T { number | bigint } The type of the value to be read * * @param func { Function(offset: number) => number } The function to read data on the internal Buffer with. * @param byteSize { Number } The number of bytes read. * @param offset { Number } The offset to read from (optional). When this is not provided, the managed readOffset is used instead. * * @returns { T } the number value */ _readNumberValue(func, byteSize, offset) { this.ensureReadable(byteSize, offset); const value = func.call(this._buff, typeof offset === "number" ? offset : this._readOffset); if (typeof offset === "undefined") { this._readOffset += byteSize; } return value; } /** * Inserts a numeric number value based on the given offset and value. * * @typeparam T { number | bigint } The type of the value to be written * * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. * @param byteSize { Number } The number of bytes written. * @param value { T } The number value to write. * @param offset { Number } the offset to write the number at (REQUIRED). * * @returns SmartBuffer this buffer */ _insertNumberValue(func, byteSize, value, offset) { utils_1.checkOffsetValue(offset); this.ensureInsertable(byteSize, offset); func.call(this._buff, value, offset); this._writeOffset += byteSize; return this; } /** * Writes a numeric number value based on the given offset and value. * * @typeparam T { number | bigint } The type of the value to be written * * @param func { Function(offset: T, offset?) => number} The function to write data on the internal Buffer with. * @param byteSize { Number } The number of bytes written. * @param value { T } The number value to write. * @param offset { Number } the offset to write the number at (REQUIRED). * * @returns SmartBuffer this buffer */ _writeNumberValue(func, byteSize, value, offset) { if (typeof offset === "number") { if (offset < 0) { throw new Error(utils_1.ERRORS.INVALID_WRITE_BEYOND_BOUNDS); } utils_1.checkOffsetValue(offset); } const offsetVal = typeof offset === "number" ? offset : this._writeOffset; this._ensureWriteable(byteSize, offsetVal); func.call(this._buff, value, offsetVal); if (typeof offset === "number") { this._writeOffset = Math.max(this._writeOffset, offsetVal + byteSize); } else { this._writeOffset += byteSize; } return this; } }; exports2.SmartBuffer = SmartBuffer; } }); // node_modules/socks/build/common/constants.js var require_constants3 = __commonJS({ "node_modules/socks/build/common/constants.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SOCKS5_NO_ACCEPTABLE_AUTH = exports2.SOCKS5_CUSTOM_AUTH_END = exports2.SOCKS5_CUSTOM_AUTH_START = exports2.SOCKS_INCOMING_PACKET_SIZES = exports2.SocksClientState = exports2.Socks5Response = exports2.Socks5HostType = exports2.Socks5Auth = exports2.Socks4Response = exports2.SocksCommand = exports2.ERRORS = exports2.DEFAULT_TIMEOUT = void 0; var DEFAULT_TIMEOUT = 3e4; exports2.DEFAULT_TIMEOUT = DEFAULT_TIMEOUT; var ERRORS2 = { InvalidSocksCommand: "An invalid SOCKS command was provided. Valid options are connect, bind, and associate.", InvalidSocksCommandForOperation: "An invalid SOCKS command was provided. Only a subset of commands are supported for this operation.", InvalidSocksCommandChain: "An invalid SOCKS command was provided. Chaining currently only supports the connect command.", InvalidSocksClientOptionsDestination: "An invalid destination host was provided.", InvalidSocksClientOptionsExistingSocket: "An invalid existing socket was provided. This should be an instance of stream.Duplex.", InvalidSocksClientOptionsProxy: "Invalid SOCKS proxy details were provided.", InvalidSocksClientOptionsTimeout: "An invalid timeout value was provided. Please enter a value above 0 (in ms).", InvalidSocksClientOptionsProxiesLength: "At least two socks proxies must be provided for chaining.", InvalidSocksClientOptionsCustomAuthRange: "Custom auth must be a value between 0x80 and 0xFE.", InvalidSocksClientOptionsCustomAuthOptions: "When a custom_auth_method is provided, custom_auth_request_handler, custom_auth_response_size, and custom_auth_response_handler must also be provided and valid.", NegotiationError: "Negotiation error", SocketClosed: "Socket closed", ProxyConnectionTimedOut: "Proxy connection timed out", InternalError: "SocksClient internal error (this should not happen)", InvalidSocks4HandshakeResponse: "Received invalid Socks4 handshake response", Socks4ProxyRejectedConnection: "Socks4 Proxy rejected connection", InvalidSocks4IncomingConnectionResponse: "Socks4 invalid incoming connection response", Socks4ProxyRejectedIncomingBoundConnection: "Socks4 Proxy rejected incoming bound connection", InvalidSocks5InitialHandshakeResponse: "Received invalid Socks5 initial handshake response", InvalidSocks5IntiailHandshakeSocksVersion: "Received invalid Socks5 initial handshake (invalid socks version)", InvalidSocks5InitialHandshakeNoAcceptedAuthType: "Received invalid Socks5 initial handshake (no accepted authentication type)", InvalidSocks5InitialHandshakeUnknownAuthType: "Received invalid Socks5 initial handshake (unknown authentication type)", Socks5AuthenticationFailed: "Socks5 Authentication failed", InvalidSocks5FinalHandshake: "Received invalid Socks5 final handshake response", InvalidSocks5FinalHandshakeRejected: "Socks5 proxy rejected connection", InvalidSocks5IncomingConnectionResponse: "Received invalid Socks5 incoming connection response", Socks5ProxyRejectedIncomingBoundConnection: "Socks5 Proxy rejected incoming bound connection" }; exports2.ERRORS = ERRORS2; var SOCKS_INCOMING_PACKET_SIZES = { Socks5InitialHandshakeResponse: 2, Socks5UserPassAuthenticationResponse: 2, // Command response + incoming connection (bind) Socks5ResponseHeader: 5, // We need at least 5 to read the hostname length, then we wait for the address+port information. Socks5ResponseIPv4: 10, // 4 header + 4 ip + 2 port Socks5ResponseIPv6: 22, // 4 header + 16 ip + 2 port Socks5ResponseHostname: (hostNameLength) => hostNameLength + 7, // 4 header + 1 host length + host + 2 port // Command response + incoming connection (bind) Socks4Response: 8 // 2 header + 2 port + 4 ip }; exports2.SOCKS_INCOMING_PACKET_SIZES = SOCKS_INCOMING_PACKET_SIZES; var SocksCommand; (function(SocksCommand2) { SocksCommand2[SocksCommand2["connect"] = 1] = "connect"; SocksCommand2[SocksCommand2["bind"] = 2] = "bind"; SocksCommand2[SocksCommand2["associate"] = 3] = "associate"; })(SocksCommand || (exports2.SocksCommand = SocksCommand = {})); var Socks4Response; (function(Socks4Response2) { Socks4Response2[Socks4Response2["Granted"] = 90] = "Granted"; Socks4Response2[Socks4Response2["Failed"] = 91] = "Failed"; Socks4Response2[Socks4Response2["Rejected"] = 92] = "Rejected"; Socks4Response2[Socks4Response2["RejectedIdent"] = 93] = "RejectedIdent"; })(Socks4Response || (exports2.Socks4Response = Socks4Response = {})); var Socks5Auth; (function(Socks5Auth2) { Socks5Auth2[Socks5Auth2["NoAuth"] = 0] = "NoAuth"; Socks5Auth2[Socks5Auth2["GSSApi"] = 1] = "GSSApi"; Socks5Auth2[Socks5Auth2["UserPass"] = 2] = "UserPass"; })(Socks5Auth || (exports2.Socks5Auth = Socks5Auth = {})); var SOCKS5_CUSTOM_AUTH_START = 128; exports2.SOCKS5_CUSTOM_AUTH_START = SOCKS5_CUSTOM_AUTH_START; var SOCKS5_CUSTOM_AUTH_END = 254; exports2.SOCKS5_CUSTOM_AUTH_END = SOCKS5_CUSTOM_AUTH_END; var SOCKS5_NO_ACCEPTABLE_AUTH = 255; exports2.SOCKS5_NO_ACCEPTABLE_AUTH = SOCKS5_NO_ACCEPTABLE_AUTH; var Socks5Response; (function(Socks5Response2) { Socks5Response2[Socks5Response2["Granted"] = 0] = "Granted"; Socks5Response2[Socks5Response2["Failure"] = 1] = "Failure"; Socks5Response2[Socks5Response2["NotAllowed"] = 2] = "NotAllowed"; Socks5Response2[Socks5Response2["NetworkUnreachable"] = 3] = "NetworkUnreachable"; Socks5Response2[Socks5Response2["HostUnreachable"] = 4] = "HostUnreachable"; Socks5Response2[Socks5Response2["ConnectionRefused"] = 5] = "ConnectionRefused"; Socks5Response2[Socks5Response2["TTLExpired"] = 6] = "TTLExpired"; Socks5Response2[Socks5Response2["CommandNotSupported"] = 7] = "CommandNotSupported"; Socks5Response2[Socks5Response2["AddressNotSupported"] = 8] = "AddressNotSupported"; })(Socks5Response || (exports2.Socks5Response = Socks5Response = {})); var Socks5HostType; (function(Socks5HostType2) { Socks5HostType2[Socks5HostType2["IPv4"] = 1] = "IPv4"; Socks5HostType2[Socks5HostType2["Hostname"] = 3] = "Hostname"; Socks5HostType2[Socks5HostType2["IPv6"] = 4] = "IPv6"; })(Socks5HostType || (exports2.Socks5HostType = Socks5HostType = {})); var SocksClientState; (function(SocksClientState2) { SocksClientState2[SocksClientState2["Created"] = 0] = "Created"; SocksClientState2[SocksClientState2["Connecting"] = 1] = "Connecting"; SocksClientState2[SocksClientState2["Connected"] = 2] = "Connected"; SocksClientState2[SocksClientState2["SentInitialHandshake"] = 3] = "SentInitialHandshake"; SocksClientState2[SocksClientState2["ReceivedInitialHandshakeResponse"] = 4] = "ReceivedInitialHandshakeResponse"; SocksClientState2[SocksClientState2["SentAuthentication"] = 5] = "SentAuthentication"; SocksClientState2[SocksClientState2["ReceivedAuthenticationResponse"] = 6] = "ReceivedAuthenticationResponse"; SocksClientState2[SocksClientState2["SentFinalHandshake"] = 7] = "SentFinalHandshake"; SocksClientState2[SocksClientState2["ReceivedFinalResponse"] = 8] = "ReceivedFinalResponse"; SocksClientState2[SocksClientState2["BoundWaitingForConnection"] = 9] = "BoundWaitingForConnection"; SocksClientState2[SocksClientState2["Established"] = 10] = "Established"; SocksClientState2[SocksClientState2["Disconnected"] = 11] = "Disconnected"; SocksClientState2[SocksClientState2["Error"] = 99] = "Error"; })(SocksClientState || (exports2.SocksClientState = SocksClientState = {})); } }); // node_modules/socks/build/common/util.js var require_util = __commonJS({ "node_modules/socks/build/common/util.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SocksClientError = void 0; exports2.shuffleArray = shuffleArray; var SocksClientError = class extends Error { constructor(message, options) { super(message); this.options = options; } }; exports2.SocksClientError = SocksClientError; function shuffleArray(array) { for (let i = array.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [array[i], array[j]] = [array[j], array[i]]; } } } }); // node_modules/ip-address/dist/address-error.js var require_address_error = __commonJS({ "node_modules/ip-address/dist/address-error.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.AddressError = void 0; var AddressError = class extends Error { constructor(message, parseMessage) { super(message); this.name = "AddressError"; this.parseMessage = parseMessage; } }; exports2.AddressError = AddressError; } }); // node_modules/ip-address/dist/common.js var require_common2 = __commonJS({ "node_modules/ip-address/dist/common.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.isInSubnet = isInSubnet; exports2.isHostInSubnet = isHostInSubnet; exports2.isGloballyReachable = isGloballyReachable; exports2.offsetBigInt = offsetBigInt; exports2.isCorrect = isCorrect; exports2.prefixLengthFromMask = prefixLengthFromMask; exports2.assertByteArray = assertByteArray; exports2.numberToPaddedHex = numberToPaddedHex; exports2.stringToPaddedHex = stringToPaddedHex; exports2.testBit = testBit; var address_error_1 = require_address_error(); function isInSubnet(address) { if (this.subnetMask < address.subnetMask) { return false; } return isHostInSubnet.call(this, address); } function isHostInSubnet(address) { if (this.binaryZeroPad().length !== address.binaryZeroPad().length) { return false; } return this.mask(address.subnetMask) === address.mask(); } function isGloballyReachable(entries) { let best = null; for (let i = 0; i < entries.length; i++) { const entry = entries[i]; if (entry.reachable !== null && isHostInSubnet.call(this, entry.subnet) && (best === null || entry.subnet.subnetMask > best.subnet.subnetMask)) { best = entry; } } return best === null ? true : best.reachable; } function offsetBigInt(value, n, bits, family) { if (typeof n === "number" && !Number.isSafeInteger(n)) { throw new address_error_1.AddressError(`${family} offset must be an integer`); } if (typeof n !== "number" && typeof n !== "bigint") { throw new address_error_1.AddressError(`${family} offset must be an integer`); } const result = value + BigInt(n); if (result < BigInt(0) || result > (BigInt(1) << BigInt(bits)) - BigInt(1)) { throw new address_error_1.AddressError(`${family} offset leaves the address space`); } return result; } function isCorrect(defaultBits) { return function isCorrectForm() { if (this.addressMinusSuffix !== this.correctForm()) { return false; } if (this.subnetMask === defaultBits && !this.parsedSubnet) { return true; } return this.parsedSubnet === String(this.subnetMask); }; } function prefixLengthFromMask(value, totalBits) { const binary = value.toString(2).padStart(totalBits, "0"); if (binary.length > totalBits) { throw new address_error_1.AddressError("Invalid subnet mask."); } const firstZero = binary.indexOf("0"); if (firstZero === -1) { return totalBits; } if (binary.slice(firstZero).includes("1")) { throw new address_error_1.AddressError("Invalid subnet mask."); } return firstZero; } function assertByteArray(bytes, byteCount, family, minimum) { if (bytes.length !== byteCount) { throw new address_error_1.AddressError(`${family} addresses require exactly ${byteCount} bytes`); } for (let i = 0; i < bytes.length; i++) { if (!Number.isInteger(bytes[i]) || bytes[i] < minimum || bytes[i] > 255) { throw new address_error_1.AddressError(`All bytes must be integers between ${minimum} and 255`); } } } function numberToPaddedHex(number) { return number.toString(16).padStart(2, "0"); } function stringToPaddedHex(numberString) { return numberToPaddedHex(parseInt(numberString, 10)); } function testBit(binaryValue, position) { const { length } = binaryValue; if (position >= length) { return false; } const positionInString = length - position - 1; return binaryValue.substring(positionInString, positionInString + 1) === "1"; } } }); // node_modules/ip-address/dist/v4/constants.js var require_constants4 = __commonJS({ "node_modules/ip-address/dist/v4/constants.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SPECIAL_PURPOSE = exports2.RE_SUBNET_STRING = exports2.RE_ADDRESS = exports2.GROUPS = exports2.BITS = void 0; exports2.BITS = 32; exports2.GROUPS = 4; exports2.RE_ADDRESS = /^(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$/g; exports2.RE_SUBNET_STRING = /\/\d{1,2}$/; exports2.SPECIAL_PURPOSE = [ ["0.0.0.0/8", "This network", false], ["0.0.0.0/32", "This host on this network", false], ["10.0.0.0/8", "Private-Use", false], ["100.64.0.0/10", "Shared Address Space", false], ["127.0.0.0/8", "Loopback", false], ["169.254.0.0/16", "Link Local", false], ["172.16.0.0/12", "Private-Use", false], ["192.0.0.0/24", "IETF Protocol Assignments", false], ["192.0.0.0/29", "IPv4 Service Continuity Prefix", false], ["192.0.0.8/32", "IPv4 dummy address", false], ["192.0.0.9/32", "Port Control Protocol Anycast", true], ["192.0.0.10/32", "Traversal Using Relays around NAT Anycast", true], ["192.0.0.170/32", "NAT64/DNS64 Discovery", false], ["192.0.0.171/32", "NAT64/DNS64 Discovery", false], ["192.0.2.0/24", "Documentation (TEST-NET-1)", false], ["192.31.196.0/24", "AS112-v4", true], ["192.52.193.0/24", "AMT", true], ["192.88.99.0/24", "Deprecated (6to4 Relay Anycast)", null], ["192.88.99.2/32", "6a44-relay anycast address", false], ["192.168.0.0/16", "Private-Use", false], ["192.175.48.0/24", "Direct Delegation AS112 Service", true], ["198.18.0.0/15", "Benchmarking", false], ["198.51.100.0/24", "Documentation (TEST-NET-2)", false], ["203.0.113.0/24", "Documentation (TEST-NET-3)", false], ["240.0.0.0/4", "Reserved", false], ["255.255.255.255/32", "Limited Broadcast", false] ]; } }); // node_modules/ip-address/dist/ipv4.js var require_ipv4 = __commonJS({ "node_modules/ip-address/dist/ipv4.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Address4 = void 0; var common = __importStar2(require_common2()); var constants = __importStar2(require_constants4()); var address_error_1 = require_address_error(); var isCorrect4 = common.isCorrect(constants.BITS); var Address4 = class _Address4 { constructor(address) { this.addressMinusSuffix = ""; this.groups = constants.GROUPS; this.parsedAddress = []; this.parsedSubnet = ""; this.subnet = "/32"; this.subnetMask = 32; this.v4 = true; this.isCorrect = isCorrect4; this.isInSubnet = common.isInSubnet; this.isHostInSubnet = common.isHostInSubnet; this.address = address; const subnet = constants.RE_SUBNET_STRING.exec(address); if (subnet) { this.parsedSubnet = subnet[0].replace("/", ""); this.subnetMask = parseInt(this.parsedSubnet, 10); this.subnet = `/${this.subnetMask}`; if (this.subnetMask < 0 || this.subnetMask > constants.BITS) { throw new address_error_1.AddressError("Invalid subnet mask."); } address = address.replace(constants.RE_SUBNET_STRING, ""); } const longest = constants.GROUPS * 4 - 1; if (address.length > longest) { throw new address_error_1.AddressError(`IPv4 addresses are at most ${longest} characters.`); } this.addressMinusSuffix = address; this.parsedAddress = this.parse(address); } /** * Returns true if the given string is a valid IPv4 address (with optional * CIDR subnet), false otherwise. Host bits in the subnet portion are * allowed (e.g. `192.168.1.5/24` is valid); for strict network-address * validation compare `correctForm()` to `startAddress().correctForm()`, * or use `networkForm()`. */ static isValid(address) { try { new _Address4(address); return true; } catch { return false; } } /** * Parses an IPv4 address string into its four octet groups and stores the * result on `this.parsedAddress`. Called automatically by the constructor; * you typically don't need to call it directly. Throws `AddressError` if * the input is not a valid IPv4 address. */ parse(address) { const groups = address.split("."); if (groups.some((group) => /^0\d/.test(group))) { throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes."); } if (!address.match(constants.RE_ADDRESS)) { throw new address_error_1.AddressError("Invalid IPv4 address."); } return groups; } /** * Returns the address in correct form: octets joined with `.` and any * leading zeros stripped (e.g. `192.168.1.1`). For IPv4 this matches the * canonical dotted-decimal representation. */ correctForm() { return this.parsedAddress.map((part) => parseInt(part, 10)).join("."); } /** * Construct an `Address4` from an address and a dotted-decimal subnet * mask given as separate strings (e.g. as returned by Node's * `os.networkInterfaces()`). Throws `AddressError` if the mask is * non-contiguous (e.g. `255.0.255.0`). * @example * var address = Address4.fromAddressAndMask('192.168.1.1', '255.255.255.0'); * address.subnetMask; // 24 */ static fromAddressAndMask(address, mask) { const bits = common.prefixLengthFromMask(new _Address4(mask).bigInt(), constants.BITS); return new _Address4(`${address}/${bits}`); } /** * Construct an `Address4` from an address and a Cisco-style wildcard mask * given as separate strings (e.g. `0.0.0.255` for a `/24`). The wildcard * mask is the bitwise inverse of the subnet mask. Throws `AddressError` * if the mask is non-contiguous (e.g. `0.255.0.255`). * @example * var address = Address4.fromAddressAndWildcardMask('10.0.0.1', '0.0.0.255'); * address.subnetMask; // 24 */ static fromAddressAndWildcardMask(address, wildcardMask) { const wildcard = new _Address4(wildcardMask).bigInt(); const allOnes = (BigInt(1) << BigInt(constants.BITS)) - BigInt(1); const mask = wildcard ^ allOnes; const bits = common.prefixLengthFromMask(mask, constants.BITS); return new _Address4(`${address}/${bits}`); } /** * Construct an `Address4` from a wildcard pattern with trailing `*` * octets. The number of trailing wildcards determines the prefix * length: each `*` represents 8 bits. * * Only trailing whole-octet wildcards are supported. Partial-octet * wildcards (e.g. `192.168.0.1*`) and interior wildcards (e.g. * `192.*.0.1`) throw `AddressError`. * @example * Address4.fromWildcard('192.168.0.*').subnet; // '/24' * Address4.fromWildcard('192.168.*.*').subnet; // '/16' * Address4.fromWildcard('*.*.*.*').subnet; // '/0' */ static fromWildcard(input) { const groups = input.split("."); if (groups.length !== constants.GROUPS) { throw new address_error_1.AddressError("Wildcard pattern must have 4 octets"); } let firstWildcard = -1; for (let i = 0; i < groups.length; i++) { if (groups[i] === "*") { if (firstWildcard === -1) { firstWildcard = i; } } else if (firstWildcard !== -1) { throw new address_error_1.AddressError("Wildcard `*` must only appear in trailing octets (e.g. `192.168.0.*`)"); } } const trailing = firstWildcard === -1 ? 0 : groups.length - firstWildcard; const replaced = groups.map((g) => g === "*" ? "0" : g); const subnetBits = constants.BITS - trailing * 8; return new _Address4(`${replaced.join(".")}/${subnetBits}`); } /** * Converts a hex string to an IPv4 address object. Accepts 8 hex digits * with optional `:` separators (e.g. `'7f000001'` or `'7f:00:00:01'`). * Throws `AddressError` for any other length or for non-hex characters. * @param {string} hex - a hex string to convert * @returns {Address4} */ static fromHex(hex) { const stripped = hex.replace(/:/g, ""); if (!/^[0-9a-fA-F]{8}$/.test(stripped)) { throw new address_error_1.AddressError("IPv4 hex must be exactly 8 hex digits"); } const groups = []; for (let i = 0; i < 8; i += 2) { groups.push(parseInt(stripped.slice(i, i + 2), 16)); } return new _Address4(groups.join(".")); } /** * Converts an integer into a IPv4 address object. The integer must be a * non-negative safe integer in the range `[0, 2**32 - 1]`; otherwise * `AddressError` is thrown. * @param {integer} integer - a number to convert * @returns {Address4} */ static fromInteger(integer) { if (!Number.isInteger(integer) || integer < 0 || integer > 4294967295) { throw new address_error_1.AddressError("IPv4 integer must be in the range 0 to 2**32 - 1"); } return _Address4.fromHex(integer.toString(16).padStart(8, "0")); } /** * Return an address from in-addr.arpa form: the four octets reversed, with * or without the `.in-addr.arpa` suffix and root dot, in any case. Throws * `AddressError` unless the reversed labels form a valid IPv4 address, so * `fromArpa(x.reverseForm())` round-trips {@link reverseForm}. * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address * @returns {Adress4} * @example * var address = Address4.fromArpa('42.2.0.192.in-addr.arpa.') * address.correctForm(); // '192.0.2.42' */ static fromArpa(arpaFormAddress) { const longest = constants.GROUPS * 4 - 1 + "/32".length + ".in-addr.arpa.".length; if (arpaFormAddress.length > longest) { throw new address_error_1.AddressError(`in-addr.arpa names are at most ${longest} characters.`); } const leader = arpaFormAddress.replace(/(\.in-addr\.arpa)?\.?$/i, ""); const address = leader.split(".").reverse().join("."); return new _Address4(address); } /** * Converts an IPv4 address object to a hex string * @returns {String} */ toHex() { return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(":"); } /** * Converts an IPv4 address object to an array of bytes. * * To get a Node.js `Buffer`, wrap the result: `Buffer.from(address.toArray())`. * @returns {Array} */ toArray() { return this.parsedAddress.map((part) => parseInt(part, 10)); } /** * Converts an IPv4 address object to an IPv6 address group * @returns {String} */ toGroup6() { const output = []; let i; for (i = 0; i < constants.GROUPS; i += 2) { output.push(`${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(this.parsedAddress[i + 1])}`); } return output.join(":"); } /** * Returns the address as a `bigint` * @returns {bigint} */ bigInt() { return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join("")}`); } /** * Helper function getting start address. * @returns {bigint} */ _startAddress() { return BigInt(`0b${this.mask() + "0".repeat(constants.BITS - this.subnetMask)}`); } /** * The first address in the range given by this address' subnet. * Often referred to as the Network Address. * @returns {Address4} */ startAddress() { return _Address4.fromBigInt(this._startAddress()); } /** * The first host address in the range given by this address's subnet ie * the first address after the Network Address * @returns {Address4} */ startAddressExclusive() { const adjust = BigInt("1"); return _Address4.fromBigInt(this._startAddress() + adjust); } /** * Returns the address `n` addresses after this one (or before, when `n` is * negative), keeping this address's subnet mask. Throws `AddressError` when * the result would fall outside the IPv4 address space or `n` is not an * integer. * @param {number | bigint} n * @returns {Address4} * @example * new Address4('10.0.0.0/24').offset(1).correctForm(); // '10.0.0.1' */ offset(n) { return _Address4.fromBigInt(common.offsetBigInt(this.bigInt(), n, constants.BITS, "IPv4")).withSubnetMask(this.subnetMask); } /** * Returns the network that follows this address's network: the address after * {@link endAddress}, with the same subnet mask. Throws `AddressError` when * this network is the last one in the address space. * @returns {Address4} * @example * new Address4('10.0.0.0/24').nextNetwork().networkForm(); // '10.0.1.0/24' */ nextNetwork() { return _Address4.fromBigInt(common.offsetBigInt(this._endAddress(), 1, constants.BITS, "IPv4")).withSubnetMask(this.subnetMask); } withSubnetMask(subnetMask) { return new _Address4(`${this.correctForm()}/${subnetMask}`); } /** * Helper function getting end address. * @returns {bigint} */ _endAddress() { return BigInt(`0b${this.mask() + "1".repeat(constants.BITS - this.subnetMask)}`); } /** * The last address in the range given by this address' subnet * Often referred to as the Broadcast * @returns {Address4} */ endAddress() { return _Address4.fromBigInt(this._endAddress()); } /** * The last host address in the range given by this address's subnet ie * the last address prior to the Broadcast Address * @returns {Address4} */ endAddressExclusive() { const adjust = BigInt("1"); return _Address4.fromBigInt(this._endAddress() - adjust); } /** * The dotted-decimal form of the subnet mask, e.g. `255.255.240.0` for * a `/20`. Returns an `Address4`; call `.correctForm()` for the string. * @returns {Address4} */ subnetMaskAddress() { return _Address4.fromBigInt(BigInt(`0b${"1".repeat(this.subnetMask)}${"0".repeat(constants.BITS - this.subnetMask)}`)); } /** * The Cisco-style wildcard mask, e.g. `0.0.0.255` for a `/24`. This is * the bitwise inverse of `subnetMaskAddress()`. Returns an `Address4`; * call `.correctForm()` for the string. * @returns {Address4} */ wildcardMask() { return _Address4.fromBigInt(BigInt(`0b${"0".repeat(this.subnetMask)}${"1".repeat(constants.BITS - this.subnetMask)}`)); } /** * The network address in CIDR string form, e.g. `192.168.1.0/24` for * `192.168.1.5/24`. For an address with no explicit subnet the prefix is * `/32`, e.g. `networkForm()` on `192.168.1.5` returns `192.168.1.5/32`. * @returns {string} */ networkForm() { return `${this.startAddress().correctForm()}/${this.subnetMask}`; } /** * Converts a BigInt to a v4 address object. The value must be in the * range `[0, 2**32 - 1]`; otherwise `AddressError` is thrown. * @param {bigint} bigInt - a BigInt to convert * @returns {Address4} */ static fromBigInt(bigInt2) { if (bigInt2 < BigInt(0) || bigInt2 > BigInt(4294967295)) { throw new address_error_1.AddressError("IPv4 BigInt must be in the range 0 to 2**32 - 1"); } return _Address4.fromHex(bigInt2.toString(16).padStart(8, "0")); } /** * Convert a byte array to an Address4 object. Throws `AddressError` unless * given exactly 4 integers from 0 to 255. Signed bytes are rejected, so * this differs from `Address6.fromByteArray`, which folds them; the two * contracts converge on this stricter form in the next major version. * * To convert from a Node.js `Buffer`, spread it: `Address4.fromByteArray([...buf])`. * @param {Array<number>} bytes - an array of 4 bytes (0-255) * @returns {Address4} */ static fromByteArray(bytes) { common.assertByteArray(bytes, 4, "IPv4", 0); return this.fromUnsignedByteArray(bytes); } /** * Convert an unsigned byte array to an Address4 object. Throws * `AddressError` unless given exactly 4 bytes, and rejects values outside * 0 to 255 when parsing the resulting address. * * To convert from a Node.js `Buffer`, spread it: * `Address4.fromUnsignedByteArray([...buf])`. * @param {Array<number>} bytes - an array of 4 unsigned bytes (0-255) * @returns {Address4} */ static fromUnsignedByteArray(bytes) { if (bytes.length !== 4) { throw new address_error_1.AddressError("IPv4 addresses require exactly 4 bytes"); } const address = bytes.join("."); return new _Address4(address); } /** * Returns the first n bits of the address, defaulting to the * subnet mask * @returns {String} */ mask(mask) { if (mask === void 0) { mask = this.subnetMask; } return this.getBitsBase2(0, mask); } /** * Returns the bits in the given range as a base-2 string * @returns {string} */ getBitsBase2(start, end) { return this.binaryZeroPad().slice(start, end); } /** * Return the reversed in-addr.arpa form of the address, e.g. * `42.2.0.192.in-addr.arpa.` for `192.0.2.42`. * @param {Object} options * @param {boolean} options.omitSuffix - omit the "in-addr.arpa" suffix * @returns {String} */ reverseForm(options) { if (!options) { options = {}; } const reversed = this.correctForm().split(".").reverse().join("."); if (options.omitSuffix) { return reversed; } return `${reversed}.in-addr.arpa.`; } /** * Returns true if the given address is a multicast address * @returns {boolean} */ isMulticast() { return this.isHostInSubnet(MULTICAST_V4); } /** * Returns true if the address is in one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private address ranges (`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`). * @returns {boolean} */ isPrivate() { return PRIVATE_V4.some((subnet) => this.isHostInSubnet(subnet)); } /** * Returns true if the address is in the loopback range `127.0.0.0/8` ([RFC 1122](https://datatracker.ietf.org/doc/html/rfc1122)). * @returns {boolean} */ isLoopback() { return this.isHostInSubnet(LOOPBACK_V4); } /** * Returns true if the address is in the link-local range `169.254.0.0/16` ([RFC 3927](https://datatracker.ietf.org/doc/html/rfc3927)). * @returns {boolean} */ isLinkLocal() { return this.isHostInSubnet(LINK_LOCAL_V4); } /** * Returns true if the address is the unspecified address `0.0.0.0`. * @returns {boolean} */ isUnspecified() { return this.isHostInSubnet(UNSPECIFIED_V4); } /** * Returns true if the address is the limited broadcast address `255.255.255.255` ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)). * @returns {boolean} */ isBroadcast() { return this.isHostInSubnet(BROADCAST_V4); } /** * Returns true if the address is in the carrier-grade NAT range `100.64.0.0/10` ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)). * @returns {boolean} */ isCGNAT() { return this.isHostInSubnet(CGNAT_V4); } /** * Returns true if the address is in one of the documentation ranges * `192.0.2.0/24`, `198.51.100.0/24`, or `203.0.113.0/24` ([RFC 5737](https://datatracker.ietf.org/doc/html/rfc5737)). * @returns {boolean} */ isDocumentation() { return DOCUMENTATION_V4.some((subnet) => this.isHostInSubnet(subnet)); } /** * Returns true if the address is in the benchmarking range `198.18.0.0/15` ([RFC 2544](https://datatracker.ietf.org/doc/html/rfc2544)). * @returns {boolean} */ isBenchmarking() { return this.isHostInSubnet(BENCHMARKING_V4); } /** * Returns true if the address is in the reserved range `240.0.0.0/4` ([RFC 1112](https://datatracker.ietf.org/doc/html/rfc1112)), * which includes the limited broadcast address. * @returns {boolean} */ isReserved() { return this.isHostInSubnet(RESERVED_V4); } /** * Returns true if the address is globally reachable: not multicast, and not * in any block the [IANA IPv4 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv4-special-registry/) * marks as not globally reachable. That covers everything the individual * classifiers name (private, loopback, link-local, CGNAT, unspecified, * broadcast, documentation, benchmarking, reserved) and the blocks they do * not, such as `0.0.0.0/8` and the IETF protocol assignments in * `192.0.0.0/24`. This is the single predicate to use where a request must * not reach an internal or special-purpose destination; see SECURITY.md. * @returns {boolean} */ isGlobal() { return !this.isMulticast() && common.isGloballyReachable.call(this, SPECIAL_PURPOSE_V4); } /** * Returns a zero-padded base-2 string representation of the address * @returns {string} */ binaryZeroPad() { if (this._binaryZeroPad === void 0) { this._binaryZeroPad = this.bigInt().toString(2).padStart(constants.BITS, "0"); } return this._binaryZeroPad; } /** * Groups an IPv4 address for inclusion at the end of an IPv6 address. * * Returns an HTML fragment: each half of the address is wrapped in a * `<span>` carrying the group classes an address-inspector UI hovers on. * The address content is HTML-escaped; anything you concatenate around it * is your responsibility. * @returns {String} */ groupForV6() { const segments = this.parsedAddress; return this.correctForm().replace(constants.RE_ADDRESS, `<span class="hover-group group-v4 group-6">${segments.slice(0, 2).join(".")}</span>.<span class="hover-group group-v4 group-7">${segments.slice(2, 4).join(".")}</span>`); } }; exports2.Address4 = Address4; var MULTICAST_V4 = new Address4("224.0.0.0/4"); var PRIVATE_V4 = [ new Address4("10.0.0.0/8"), new Address4("172.16.0.0/12"), new Address4("192.168.0.0/16") ]; var LOOPBACK_V4 = new Address4("127.0.0.0/8"); var LINK_LOCAL_V4 = new Address4("169.254.0.0/16"); var UNSPECIFIED_V4 = new Address4("0.0.0.0/32"); var BROADCAST_V4 = new Address4("255.255.255.255/32"); var CGNAT_V4 = new Address4("100.64.0.0/10"); var DOCUMENTATION_V4 = [ new Address4("192.0.2.0/24"), new Address4("198.51.100.0/24"), new Address4("203.0.113.0/24") ]; var BENCHMARKING_V4 = new Address4("198.18.0.0/15"); var RESERVED_V4 = new Address4("240.0.0.0/4"); var SPECIAL_PURPOSE_V4 = constants.SPECIAL_PURPOSE.map(([cidr, , reachable]) => ({ subnet: new Address4(cidr), reachable })); } }); // node_modules/ip-address/dist/v6/constants.js var require_constants5 = __commonJS({ "node_modules/ip-address/dist/v6/constants.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SPECIAL_PURPOSE = exports2.RE_URL_WITH_PORT = exports2.RE_URL = exports2.RE_ZONE_STRING = exports2.RE_SUBNET_STRING = exports2.RE_BAD_ADDRESS = exports2.RE_BAD_CHARACTERS = exports2.TYPES = exports2.SCOPES = exports2.GROUPS = exports2.BITS = void 0; exports2.BITS = 128; exports2.GROUPS = 8; exports2.SCOPES = { 0: "Reserved", 1: "Interface local", 2: "Link local", 4: "Admin local", 5: "Site local", 8: "Organization local", 14: "Global", 15: "Reserved" }; exports2.TYPES = { "ff01::1/128": "Multicast (All nodes on this interface)", "ff01::2/128": "Multicast (All routers on this interface)", "ff02::1/128": "Multicast (All nodes on this link)", "ff02::2/128": "Multicast (All routers on this link)", "ff05::2/128": "Multicast (All routers in this site)", "ff02::5/128": "Multicast (OSPFv3 AllSPF routers)", "ff02::6/128": "Multicast (OSPFv3 AllDR routers)", "ff02::9/128": "Multicast (RIP routers)", "ff02::a/128": "Multicast (EIGRP routers)", "ff02::d/128": "Multicast (PIM routers)", "ff02::16/128": "Multicast (MLDv2 reports)", "ff01::fb/128": "Multicast (mDNSv6)", "ff02::fb/128": "Multicast (mDNSv6)", "ff05::fb/128": "Multicast (mDNSv6)", "ff02::1:2/128": "Multicast (All DHCP servers and relay agents on this link)", "ff05::1:2/128": "Multicast (All DHCP servers and relay agents in this site)", "ff02::1:3/128": "Multicast (All DHCP servers on this link)", "ff05::1:3/128": "Multicast (All DHCP servers in this site)", "::/128": "Unspecified", "::1/128": "Loopback", "::ffff:0:0/96": "IPv4-mapped", "ff00::/8": "Multicast", "fe80::/10": "Link-local unicast", "fc00::/7": "Unique local", "2001::/32": "Teredo", "2001:2::/48": "Benchmarking", "2002::/16": "6to4", "2001:db8::/32": "Documentation", "3fff::/20": "Documentation", "100::/64": "Discard-only", "fec0::/10": "Site-local unicast (deprecated)", "::/96": "IPv4-compatible (deprecated)", "64:ff9b::/96": "NAT64 (well-known)", "64:ff9b:1::/48": "NAT64 (local-use)" }; exports2.RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi; exports2.RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\/$)/gi; exports2.RE_SUBNET_STRING = /\/\d{1,3}(?=%|$)/; exports2.RE_ZONE_STRING = /%.*$/; exports2.RE_URL = /^(?:\[([0-9a-f:.]+)\]|([0-9a-f:.]+))(?:[/?#].*)?$/i; exports2.RE_URL_WITH_PORT = /^\[([0-9a-f:.]+)\]:([0-9]{1,5})(?:[/?#].*)?$/i; exports2.SPECIAL_PURPOSE = [ ["::1/128", "Loopback Address", false], ["::/128", "Unspecified Address", false], ["::ffff:0:0/96", "IPv4-mapped Address", false], ["64:ff9b::/96", "IPv4-IPv6 Translat.", true], ["64:ff9b:1::/48", "IPv4-IPv6 Translat.", false], ["100::/64", "Discard-Only Address Block", false], ["100:0:0:1::/64", "Dummy IPv6 Prefix", false], ["2001::/23", "IETF Protocol Assignments", false], ["2001::/32", "TEREDO", false], ["2001:1::1/128", "Port Control Protocol Anycast", true], ["2001:1::2/128", "Traversal Using Relays around NAT Anycast", true], ["2001:1::3/128", "DNS-SD Service Registration Protocol Anycast", true], ["2001:2::/48", "Benchmarking", false], ["2001:3::/32", "AMT", true], ["2001:4:112::/48", "AS112-v6", true], ["2001:10::/28", "Deprecated (previously ORCHID)", null], ["2001:20::/28", "ORCHIDv2", true], ["2001:30::/28", "Drone Remote ID Protocol Entity Tags (DETs) Prefix", true], ["2001:db8::/32", "Documentation", false], ["2002::/16", "6to4", false], ["2620:4f:8000::/48", "Direct Delegation AS112 Service", true], ["3fff::/20", "Documentation", false], ["5f00::/16", "Segment Routing (SRv6) SIDs", false], ["fc00::/7", "Unique-Local", false], ["fe80::/10", "Link-Local Unicast", false] ]; } }); // node_modules/ip-address/dist/v6/helpers.js var require_helpers3 = __commonJS({ "node_modules/ip-address/dist/v6/helpers.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.escapeHtml = escapeHtml; exports2.spanAllZeroes = spanAllZeroes; exports2.spanAll = spanAll; exports2.spanLeadingZeroes = spanLeadingZeroes; exports2.simpleGroup = simpleGroup; function escapeHtml(s) { return s.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'"); } function spanAllZeroes(s) { return escapeHtml(s).replace(/(0+)/g, '<span class="zero">$1</span>'); } function spanAll(s, offset = 0) { const letters = s.split(""); return letters.map((n, i) => `<span class="digit value-${escapeHtml(n)} position-${i + offset}">${spanAllZeroes(n)}</span>`).join(""); } function spanLeadingZeroesSimple(group) { return escapeHtml(group).replace(/^(0+)/, '<span class="zero">$1</span>'); } function spanLeadingZeroes(address) { const groups = address.split(":"); return groups.map((g) => spanLeadingZeroesSimple(g)).join(":"); } function simpleGroup(addressString, offset = 0) { const groups = addressString.split(":"); return groups.map((g, i) => { if (/group-v4/.test(g)) { return g; } return `<span class="hover-group group-${i + offset}">${spanLeadingZeroesSimple(g)}</span>`; }); } } }); // node_modules/ip-address/dist/v6/regular-expressions.js var require_regular_expressions = __commonJS({ "node_modules/ip-address/dist/v6/regular-expressions.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ADDRESS_BOUNDARY = void 0; exports2.groupPossibilities = groupPossibilities; exports2.padGroup = padGroup; exports2.simpleRegularExpression = simpleRegularExpression; exports2.possibleElisions = possibleElisions; var v6 = __importStar2(require_constants5()); function groupPossibilities(possibilities) { return `(${possibilities.join("|")})`; } function padGroup(group) { if (group.length < 4) { return `0{0,${4 - group.length}}${group}`; } return group; } exports2.ADDRESS_BOUNDARY = "[^A-Fa-f0-9:]"; function simpleRegularExpression(groups) { const zeroIndexes = []; groups.forEach((group, i) => { const groupInteger = parseInt(group, 16); if (groupInteger === 0) { zeroIndexes.push(i); } }); const possibilities = zeroIndexes.map((zeroIndex) => groups.map((group, i) => { if (i === zeroIndex) { const elision = i === 0 || i === v6.GROUPS - 1 ? ":" : ""; return groupPossibilities([padGroup(group), elision]); } return padGroup(group); }).join(":")); possibilities.push(groups.map(padGroup).join(":")); return groupPossibilities(possibilities); } function possibleElisions(elidedGroups, moreLeft, moreRight) { const left = moreLeft ? "" : ":"; const right = moreRight ? "" : ":"; const possibilities = []; if (!moreLeft && !moreRight) { possibilities.push("::"); } if (moreLeft && moreRight) { possibilities.push(""); } if (moreRight && !moreLeft || !moreRight && moreLeft) { possibilities.push(":"); } possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`); possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`); possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`); for (let groups = 1; groups < elidedGroups - 1; groups++) { for (let position = 1; position < elidedGroups - groups; position++) { possibilities.push(`(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`); } } return groupPossibilities(possibilities); } } }); // node_modules/ip-address/dist/ipv6.js var require_ipv6 = __commonJS({ "node_modules/ip-address/dist/ipv6.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Address6 = void 0; var common = __importStar2(require_common2()); var constants4 = __importStar2(require_constants4()); var constants6 = __importStar2(require_constants5()); var helpers = __importStar2(require_helpers3()); var ipv4_1 = require_ipv4(); var regular_expressions_1 = require_regular_expressions(); var address_error_1 = require_address_error(); var common_1 = require_common2(); var isCorrect6 = common.isCorrect(constants6.BITS); function assert(condition) { if (!condition) { throw new Error("Assertion failed."); } } function addCommas(number) { const r = /(\d+)(\d{3})/; while (r.test(number)) { number = number.replace(r, "$1,$2"); } return number; } function spanLeadingZeroes4(n) { n = n.replace(/^(0{1,})([1-9]+)$/, '<span class="parse-error">$1</span>$2'); n = n.replace(/^(0{1,})(0)$/, '<span class="parse-error">$1</span>$2'); return n; } function compact(address, slice) { const s1 = []; const s2 = []; let i; for (i = 0; i < address.length; i++) { if (i < slice[0]) { s1.push(address[i]); } else if (i > slice[1]) { s2.push(address[i]); } } return s1.concat(["compact"]).concat(s2); } function paddedHex(octet) { return parseInt(octet, 16).toString(16).padStart(4, "0"); } function unsignByte(b) { return b & 255; } var Address6 = class _Address6 { constructor(address, optionalGroups) { this.addressMinusSuffix = ""; this.parsedSubnet = ""; this.subnet = "/128"; this.subnetMask = 128; this.v4 = false; this.zone = ""; this.isInSubnet = common.isInSubnet; this.isHostInSubnet = common.isHostInSubnet; this.isCorrect = isCorrect6; if (optionalGroups === void 0) { this.groups = constants6.GROUPS; } else { this.groups = optionalGroups; } this.address = address; const subnet = constants6.RE_SUBNET_STRING.exec(address); if (subnet) { this.parsedSubnet = subnet[0].replace("/", ""); this.subnetMask = parseInt(this.parsedSubnet, 10); this.subnet = `/${this.subnetMask}`; if (Number.isNaN(this.subnetMask) || this.subnetMask < 0 || this.subnetMask > constants6.BITS) { throw new address_error_1.AddressError("Invalid subnet mask."); } address = address.replace(constants6.RE_SUBNET_STRING, ""); } if (/\//.test(address)) { throw new address_error_1.AddressError("Invalid subnet mask."); } const zoneStart = address.indexOf("%"); if (zoneStart !== -1 && /^.*$/.test(address.slice(zoneStart))) { this.zone = address.slice(zoneStart); address = address.slice(0, zoneStart); } const longest = this.groups * 5 + 5; if (address.length > longest) { throw new address_error_1.AddressError(`IPv6 addresses are at most ${longest} characters.`); } this.addressMinusSuffix = address; this.parsedAddress = this.parse(this.addressMinusSuffix); } /** * Returns true if the given string is a valid IPv6 address (with optional * CIDR subnet and zone identifier), false otherwise. Host bits in the * subnet portion are allowed (e.g. `2001:db8::1/32` is valid); for strict * network-address validation compare `correctForm()` to * `startAddress().correctForm()`, or use `networkForm()`. */ static isValid(address) { try { new _Address6(address); return true; } catch { return false; } } /** * Convert a BigInt to a v6 address object. The value must be in the * range `[0, 2**128 - 1]`; otherwise `AddressError` is thrown. * @param {bigint} bigInt - a BigInt to convert * @returns {Address6} * @example * var bigInt = BigInt('1000000000000'); * var address = Address6.fromBigInt(bigInt); * address.correctForm(); // '::e8:d4a5:1000' */ static fromBigInt(bigInt2) { if (bigInt2 < BigInt(0) || bigInt2 > (BigInt(1) << BigInt(constants6.BITS)) - BigInt(1)) { throw new address_error_1.AddressError("IPv6 BigInt must be in the range 0 to 2**128 - 1"); } const hex = bigInt2.toString(16).padStart(32, "0"); const groups = []; for (let i = 0; i < constants6.GROUPS; i++) { groups.push(hex.slice(i * 4, (i + 1) * 4)); } return new _Address6(groups.join(":")); } /** * Parse a URL (with optional bracketed host and port) into an address and * port. Returns either `{ address, port }` on success or * `{ error, address: null, port: null }` if the URL could not be parsed. * Ports are returned as numbers (or `null` if absent or out of range). * @example * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/'); * addressAndPort.address.correctForm(); // 'ffff::' * addressAndPort.port; // 8080 */ static fromURL(url) { var _a; let host; let port = null; let result; let error; const stripped = url.replace(/^[a-z][a-z0-9+.-]*:\/\//i, ""); if (stripped.indexOf("[") !== -1 && stripped.indexOf("]:") !== -1) { error = "failed to parse address with port"; result = constants6.RE_URL_WITH_PORT.exec(stripped); if (result === null) { return { error, address: null, port: null }; } host = result[1]; port = result[2]; } else { error = "failed to parse address from URL"; result = constants6.RE_URL.exec(stripped); if (result === null) { return { error, address: null, port: null }; } host = (_a = result[1]) !== null && _a !== void 0 ? _a : result[2]; } if (port) { port = parseInt(port, 10); if (port < 0 || port > 65535) { port = null; } } else { port = null; } let address; try { address = new _Address6(host); } catch { return { error, address: null, port: null }; } return { address, port }; } /** * Construct an `Address6` from an address and a hex subnet mask given as * separate strings (e.g. as returned by Node's `os.networkInterfaces()`). * Throws `AddressError` if the mask is non-contiguous (e.g. * `ffff::ffff`). * @example * var address = Address6.fromAddressAndMask('fe80::1', 'ffff:ffff:ffff:ffff::'); * address.subnetMask; // 64 */ static fromAddressAndMask(address, mask) { const bits = common.prefixLengthFromMask(new _Address6(mask).bigInt(), constants6.BITS); return new _Address6(`${address}/${bits}`); } /** * Construct an `Address6` from an address and a Cisco-style wildcard mask * given as separate strings (e.g. `::ffff:ffff:ffff:ffff` for a `/64`). * The wildcard mask is the bitwise inverse of the subnet mask. Throws * `AddressError` if the mask is non-contiguous. * @example * var address = Address6.fromAddressAndWildcardMask('fe80::1', '::ffff:ffff:ffff:ffff'); * address.subnetMask; // 64 */ static fromAddressAndWildcardMask(address, wildcardMask) { const wildcard = new _Address6(wildcardMask).bigInt(); const allOnes = (BigInt(1) << BigInt(constants6.BITS)) - BigInt(1); const mask = wildcard ^ allOnes; const bits = common.prefixLengthFromMask(mask, constants6.BITS); return new _Address6(`${address}/${bits}`); } /** * Construct an `Address6` from a wildcard pattern with trailing `*` * groups. The number of trailing wildcards determines the prefix * length: each `*` represents 16 bits. `::` is expanded to zero groups * (not wildcards) before evaluating trailing wildcards. * * Only trailing whole-group wildcards are supported. Partial-group * wildcards (e.g. `2001:db8::0*`) and interior wildcards (e.g. * `*::1`) throw `AddressError`. * @example * Address6.fromWildcard('2001:db8:*:*:*:*:*:*').subnet; // '/32' * Address6.fromWildcard('2001:db8::*').subnet; // '/112' * Address6.fromWildcard('*:*:*:*:*:*:*:*').subnet; // '/0' */ static fromWildcard(input) { if (input.includes("%") || input.includes("/")) { throw new address_error_1.AddressError("Wildcard pattern must not include a zone or CIDR suffix"); } const halves = input.split("::"); if (halves.length > 2) { throw new address_error_1.AddressError("Wildcard pattern cannot contain more than one '::'"); } let groups; if (halves.length === 2) { const left = halves[0] === "" ? [] : halves[0].split(":"); const right = halves[1] === "" ? [] : halves[1].split(":"); const remaining = constants6.GROUPS - left.length - right.length; if (remaining < 1) { throw new address_error_1.AddressError("Wildcard pattern with '::' has too many groups"); } groups = [...left, ...new Array(remaining).fill("0"), ...right]; } else { groups = input.split(":"); } if (groups.length !== constants6.GROUPS) { throw new address_error_1.AddressError("Wildcard pattern must have 8 groups"); } let firstWildcard = -1; for (let i = 0; i < groups.length; i++) { if (groups[i] === "*") { if (firstWildcard === -1) { firstWildcard = i; } } else if (firstWildcard !== -1) { throw new address_error_1.AddressError("Wildcard `*` must only appear in trailing groups (e.g. `2001:db8:*:*:*:*:*:*`)"); } } const trailing = firstWildcard === -1 ? 0 : groups.length - firstWildcard; const replaced = groups.map((g) => g === "*" ? "0" : g); const subnetBits = constants6.BITS - trailing * 16; return new _Address6(`${replaced.join(":")}/${subnetBits}`); } /** * Create an IPv6-mapped address given an IPv4 address * @param {string} address - An IPv4 address string * @returns {Address6} * @example * var address = Address6.fromAddress4('192.168.0.1'); * address.correctForm(); // '::ffff:c0a8:1' * address.to4in6(); // '::ffff:192.168.0.1' */ static fromAddress4(address) { const address4 = new ipv4_1.Address4(address); const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask); return new _Address6(`::ffff:${address4.correctForm()}/${mask6}`); } /** * Return an address from ip6.arpa form. A full 32-nibble name gives a /128 * address; a shorter name, as used for a delegated reverse zone, gives the * network it covers, with a subnet mask of four bits per nibble, so * `fromArpa(x.reverseForm())` round-trips {@link reverseForm} for any prefix. * @param {string} arpaFormAddress - an 'ip6.arpa' form address * @returns {Adress6} * @example * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.) * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe' * Address6.fromArpa('8.b.d.0.1.0.0.2.ip6.arpa.').networkForm(); // '2001:db8::/32' */ static fromArpa(arpaFormAddress) { const nibbles = arpaFormAddress.replace(/(\.ip6\.arpa)?\.?$/i, ""); if (!/^[0-9a-f](\.[0-9a-f]){0,31}$/i.test(nibbles)) { throw new address_error_1.AddressError("Invalid 'ip6.arpa' form."); } const reversed = nibbles.split(".").reverse(); const subnetMask = reversed.length * 4; const hex = reversed.join("").padEnd(32, "0"); const groups = []; for (let i = 0; i < constants6.GROUPS; i++) { groups.push(hex.slice(i * 4, (i + 1) * 4)); } return new _Address6(`${groups.join(":")}/${subnetMask}`); } /** * Return the Microsoft UNC transcription of the address * @returns {String} the Microsoft UNC transcription of the address */ microsoftTranscription() { return `${this.correctForm().replace(/:/g, "-")}.ipv6-literal.net`; } /** * Return the first n bits of the address, defaulting to the subnet mask * @param {number} [mask=subnet] - the number of bits to mask * @returns {String} the first n bits of the address as a string */ mask(mask = this.subnetMask) { return this.getBitsBase2(0, mask); } /** * Return the number of possible subnets of a given size in the address * @param {number} [subnetSize=128] - the subnet size * @returns {String} */ // TODO: probably useful to have a numeric version of this too possibleSubnets(subnetSize = 128) { const availableBits = constants6.BITS - this.subnetMask; const subnetBits = Math.abs(subnetSize - constants6.BITS); const subnetPowers = availableBits - subnetBits; if (subnetPowers < 0) { return "0"; } return addCommas((BigInt("2") ** BigInt(subnetPowers)).toString(10)); } /** * Helper function getting start address. * @returns {bigint} */ _startAddress() { return BigInt(`0b${this.mask() + "0".repeat(constants6.BITS - this.subnetMask)}`); } /** * The first address in the range given by this address' subnet * Often referred to as the Network Address. * @returns {Address6} */ startAddress() { return _Address6.fromBigInt(this._startAddress()); } /** * The first host address in the range given by this address's subnet ie * the first address after the Network Address * @returns {Address6} */ startAddressExclusive() { const adjust = BigInt("1"); return _Address6.fromBigInt(this._startAddress() + adjust); } /** * Helper function getting end address. * @returns {bigint} */ _endAddress() { return BigInt(`0b${this.mask() + "1".repeat(constants6.BITS - this.subnetMask)}`); } /** * The last address in the range given by this address's subnet. IPv6 has * no broadcast address, so this is an ordinary assignable address (in a * 64-bit-interface-identifier subnet it falls inside the reserved * subnet-anycast block of [RFC 2526](https://datatracker.ietf.org/doc/html/rfc2526)). * @returns {Address6} */ endAddress() { return _Address6.fromBigInt(this._endAddress()); } /** * The address one before {@link endAddress}. This is the IPv6 counterpart * of the IPv4 method that skips the broadcast address; IPv6 has no broadcast, * so it drops exactly one address and does not model the 128 reserved * subnet-anycast identifiers of [RFC 2526](https://datatracker.ietf.org/doc/html/rfc2526). * @returns {Address6} */ endAddressExclusive() { const adjust = BigInt("1"); return _Address6.fromBigInt(this._endAddress() - adjust); } /** * Returns the address `n` addresses after this one (or before, when `n` is * negative), keeping this address's subnet mask. Throws `AddressError` when * the result would fall outside the IPv6 address space or `n` is not an * integer. * @param {number | bigint} n * @returns {Address6} * @example * new Address6('2001:db8::/64').offset(1).correctForm(); // '2001:db8::1' */ offset(n) { return _Address6.fromBigInt(common.offsetBigInt(this.bigInt(), n, constants6.BITS, "IPv6")).withSubnetMask(this.subnetMask); } /** * Returns the network that follows this address's network: the address after * {@link endAddress}, with the same subnet mask. Throws `AddressError` when * this network is the last one in the address space. * @returns {Address6} * @example * new Address6('2001:db8::/64').nextNetwork().networkForm(); // '2001:db8:0:1::/64' */ nextNetwork() { return _Address6.fromBigInt(common.offsetBigInt(this._endAddress(), 1, constants6.BITS, "IPv6")).withSubnetMask(this.subnetMask); } withSubnetMask(subnetMask) { return new _Address6(`${this.correctForm()}/${subnetMask}`); } /** * The hex form of the subnet mask, e.g. `ffff:ffff:ffff:ffff::` for a * `/64`. Returns an `Address6`; call `.correctForm()` for the string. * @returns {Address6} */ subnetMaskAddress() { return _Address6.fromBigInt(BigInt(`0b${"1".repeat(this.subnetMask)}${"0".repeat(constants6.BITS - this.subnetMask)}`)); } /** * The Cisco-style wildcard mask, e.g. `::ffff:ffff:ffff:ffff` for a * `/64`. This is the bitwise inverse of `subnetMaskAddress()`. Returns * an `Address6`; call `.correctForm()` for the string. * @returns {Address6} */ wildcardMask() { return _Address6.fromBigInt(BigInt(`0b${"0".repeat(this.subnetMask)}${"1".repeat(constants6.BITS - this.subnetMask)}`)); } /** * The network address in CIDR string form, e.g. `2001:db8::/32` for * `2001:db8::1/32`. For an address with no explicit subnet the prefix * is `/128`, e.g. `networkForm()` on `2001:db8::1` returns * `2001:db8::1/128`. * @returns {string} */ networkForm() { return `${this.startAddress().correctForm()}/${this.subnetMask}`; } /** * Return the scope of the address. The 4-bit scope field * ([RFC 4291 §2.7](https://datatracker.ietf.org/doc/html/rfc4291#section-2.7)) * is only defined for multicast addresses; for unicast addresses the scope * is derived from the address type per * [RFC 4007 §6](https://datatracker.ietf.org/doc/html/rfc4007#section-6). * @returns {String} */ getScope() { const type = this.getType(); if (type === "Multicast" || type.startsWith("Multicast ")) { const scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)]; return scope || "Unknown"; } if (type === "Link-local unicast" || type === "Loopback") { return "Link local"; } if (type === "Unspecified") { return "Unknown"; } return "Global"; } /** * Return the type of the address * @returns {String} */ getType() { for (let i = 0; i < TYPE_SUBNETS.length; i++) { const entry = TYPE_SUBNETS[i]; if (this.isHostInSubnet(entry[0])) { return entry[1]; } } return "Global unicast"; } /** * Return the bits in the given range as a BigInt * @returns {bigint} */ getBits(start, end) { return BigInt(`0b${this.getBitsBase2(start, end)}`); } /** * Return the bits in the given range as a base-2 string * @returns {String} */ getBitsBase2(start, end) { return this.binaryZeroPad().slice(start, end); } /** * Return the bits in the given range as a base-16 string * @returns {String} */ getBitsBase16(start, end) { const length = end - start; if (length % 4 !== 0) { throw new Error("Length of bits to retrieve must be divisible by four"); } return this.getBits(start, end).toString(16).padStart(length / 4, "0"); } /** * Return the bits that are set past the subnet mask length * @returns {String} */ getBitsPastSubnet() { return this.getBitsBase2(this.subnetMask, constants6.BITS); } /** * Return the reversed ip6.arpa form of the address * @param {Object} options * @param {boolean} options.omitSuffix - omit the "ip6.arpa" suffix * @returns {String} */ reverseForm(options) { if (!options) { options = {}; } const characters = Math.floor(this.subnetMask / 4); const reversed = this.canonicalForm().replace(/:/g, "").split("").slice(0, characters).reverse().join("."); if (characters > 0) { if (options.omitSuffix) { return reversed; } return `${reversed}.ip6.arpa.`; } if (options.omitSuffix) { return ""; } return "ip6.arpa."; } /** * Returns the address in correct form, per * [RFC 5952](https://datatracker.ietf.org/doc/html/rfc5952): leading zeros * stripped, the longest run of zero groups collapsed to `::`, and hex digits * lowercased (e.g. `2001:db8::1`). This is the recommended form for display. */ correctForm() { let i; let groups = []; let zeroCounter = 0; const zeroes = []; for (i = 0; i < this.parsedAddress.length; i++) { const value = parseInt(this.parsedAddress[i], 16); if (value === 0) { zeroCounter++; } if (value !== 0 && zeroCounter > 0) { if (zeroCounter > 1) { zeroes.push([i - zeroCounter, i - 1]); } zeroCounter = 0; } } if (zeroCounter > 1) { zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]); } const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1); if (zeroes.length > 0) { const index2 = zeroLengths.indexOf(Math.max(...zeroLengths)); groups = compact(this.parsedAddress, zeroes[index2]); } else { groups = this.parsedAddress; } for (i = 0; i < groups.length; i++) { if (groups[i] !== "compact") { groups[i] = parseInt(groups[i], 16).toString(16); } } let correct = groups.join(":"); correct = correct.replace(/^compact$/, "::"); correct = correct.replace(/(^compact)|(compact$)/, ":"); correct = correct.replace(/compact/, ""); return correct; } /** * Return a zero-padded base-2 string representation of the address * @returns {String} * @example * var address = new Address6('2001:4860:4001:803::1011'); * address.binaryZeroPad(); * // '0010000000000001010010000110000001000000000000010000100000000011 * // 0000000000000000000000000000000000000000000000000001000000010001' */ binaryZeroPad() { if (this._binaryZeroPad === void 0) { this._binaryZeroPad = this.bigInt().toString(2).padStart(constants6.BITS, "0"); } return this._binaryZeroPad; } /** * Parses a v4-in-v6 string (e.g. `::ffff:192.168.0.1`) by extracting the * trailing IPv4 address into `this.address4` / `this.parsedAddress4` and * returning the address with the v4 portion converted to two v6 groups. * Used internally by `parse()`. */ // TODO: Improve the semantics of this helper function parse4in6(address) { if (address.indexOf(".") === -1) { return address; } const groups = address.split(":"); const lastGroup = groups.slice(-1)[0]; const v4Octets = lastGroup.split("."); if (v4Octets.length === constants4.GROUPS && v4Octets.every((octet) => /^\d{1,3}$/.test(octet))) { if (v4Octets.some((octet) => /^0\d/.test(octet))) { const highlighted = v4Octets.map(spanLeadingZeroes4).join("."); const prefix = groups.slice(0, -1).map(helpers.escapeHtml).join(":"); const separator = groups.length > 1 ? ":" : ""; throw new address_error_1.AddressError("IPv4 addresses can't have leading zeroes.", `${prefix}${separator}${highlighted}`); } } const address4 = lastGroup.match(constants4.RE_ADDRESS); if (address4) { this.parsedAddress4 = address4[0]; const v4Suffix = this.subnetMask >= 96 ? `/${this.subnetMask - 96}` : ""; this.address4 = new ipv4_1.Address4(`${this.parsedAddress4}${v4Suffix}`); this.v4 = true; groups[groups.length - 1] = this.address4.toGroup6(); address = groups.join(":"); } return address; } /** * Parses an IPv6 address string into its 8 hexadecimal groups (expanding * any `::` elision and any trailing v4-in-v6 portion) and stores the result * on `this.parsedAddress`. Called automatically by the constructor; you * typically don't need to call it directly. Throws `AddressError` if the * input is malformed. */ // TODO: Make private? parse(address) { address = this.parse4in6(address); const badCharacters = address.match(constants6.RE_BAD_CHARACTERS); if (badCharacters) { throw new address_error_1.AddressError(`Bad character${badCharacters.length > 1 ? "s" : ""} detected in address: ${badCharacters.join("")}`, address.replace(constants6.RE_BAD_CHARACTERS, '<span class="parse-error">$1</span>')); } const badAddress = address.match(constants6.RE_BAD_ADDRESS); if (badAddress) { throw new address_error_1.AddressError(`Address failed regex: ${badAddress.join("")}`, address.replace(constants6.RE_BAD_ADDRESS, '<span class="parse-error">$1</span>')); } let groups = []; const halves = address.split("::"); if (halves.length === 2) { let first = halves[0].split(":"); let last = halves[1].split(":"); if (first.length === 1 && first[0] === "") { first = []; } if (last.length === 1 && last[0] === "") { last = []; } const remaining = this.groups - (first.length + last.length); if (!remaining) { throw new address_error_1.AddressError("Error parsing groups"); } this.elidedGroups = remaining; this.elisionBegin = first.length; this.elisionEnd = first.length + this.elidedGroups; groups = groups.concat(first); for (let i = 0; i < remaining; i++) { groups.push("0"); } groups = groups.concat(last); } else if (halves.length === 1) { groups = address.split(":"); this.elidedGroups = 0; } else { throw new address_error_1.AddressError("Too many :: groups found"); } groups = groups.map((group) => parseInt(group, 16).toString(16)); if (groups.length !== this.groups) { throw new address_error_1.AddressError("Incorrect number of groups found"); } return groups; } /** * Returns the canonical (fully expanded) form of the address: all 8 groups, * each padded to 4 hex digits, with no `::` collapsing * (e.g. `2001:0db8:0000:0000:0000:0000:0000:0001`). Useful for sorting and * byte-exact comparison. */ canonicalForm() { return this.parsedAddress.map(paddedHex).join(":"); } /** * Return the decimal form of the address * @returns {String} */ decimal() { return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, "0")).join(":"); } /** * Return the address as a BigInt * @returns {bigint} */ bigInt() { return BigInt(`0x${this.parsedAddress.map(paddedHex).join("")}`); } /** * Return the last two groups of this address as an IPv4 address string. * If this address carries a CIDR prefix that covers the trailing 32 bits * (i.e. `subnetMask >= 96`), the resulting `Address4` inherits the * corresponding v4 prefix (`subnetMask - 96`); otherwise it defaults to * `/32`. * @returns {Address4} * @example * var address = new Address6('2001:4860:4001::1825:bf11'); * address.to4().correctForm(); // '24.37.191.17' */ to4() { const binary = this.binaryZeroPad().split(""); const hex = BigInt(`0b${binary.slice(96, 128).join("")}`).toString(16).padStart(8, "0"); if (this.subnetMask >= 96) { const v4Mask = this.subnetMask - 96; const groups = []; for (let i = 0; i < 8; i += 2) { groups.push(parseInt(hex.slice(i, i + 2), 16)); } return new ipv4_1.Address4(`${groups.join(".")}/${v4Mask}`); } return ipv4_1.Address4.fromHex(hex); } /** * Return the v4-in-v6 form of the address * @returns {String} */ to4in6() { const address4 = this.to4(); const address6 = new _Address6(this.parsedAddress.slice(0, 6).join(":"), 6); const correct = address6.correctForm(); let infix = ""; if (!/:$/.test(correct)) { infix = ":"; } return correct + infix + address4.correctForm(); } /** * Decodes the Teredo tunneling fields embedded in this address. Returns the * Teredo prefix, server IPv4, client IPv4, raw flag bits, cone-NAT flag, * UDP port, and Microsoft-format flag breakdown (reserved, universal/local, * group/individual, nonce). Only meaningful for addresses in `2001::/32`. */ inspectTeredo() { const prefix = this.getBitsBase16(0, 32); const bitsForUdpPort = this.getBits(80, 96); const udpPort = (bitsForUdpPort ^ BigInt("0xffff")).toString(); const server4 = ipv4_1.Address4.fromHex(this.getBitsBase16(32, 64)); const bitsForClient4 = this.getBits(96, 128); const client4 = ipv4_1.Address4.fromHex((bitsForClient4 ^ BigInt("0xffffffff")).toString(16).padStart(8, "0")); const flagsBase2 = this.getBitsBase2(64, 80); const coneNat = (0, common_1.testBit)(flagsBase2, 15); const reserved = (0, common_1.testBit)(flagsBase2, 14); const groupIndividual = (0, common_1.testBit)(flagsBase2, 8); const universalLocal = (0, common_1.testBit)(flagsBase2, 9); const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10); return { prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`, server4: server4.address, client4: client4.address, flags: flagsBase2, coneNat, microsoft: { reserved, universalLocal, groupIndividual, nonce }, udpPort }; } /** * Decodes the 6to4 tunneling fields embedded in this address. Returns the * 6to4 prefix and the embedded IPv4 gateway address. Only meaningful for * addresses in `2002::/16`. */ inspect6to4() { const prefix = this.getBitsBase16(0, 16); const gateway = ipv4_1.Address4.fromHex(this.getBitsBase16(16, 48)); return { prefix: prefix.slice(0, 4), gateway: gateway.address }; } /** * Return a v6 6to4 address from a v6 v4inv6 address * @returns {Address6} */ to6to4() { if (!this.is4()) { return null; } const addr6to4 = [ "2002", this.getBitsBase16(96, 112), this.getBitsBase16(112, 128), "", "/16" ].join(":"); return new _Address6(addr6to4); } /** * Embed an IPv4 address into a NAT64 IPv6 address using the encoding * defined by [RFC 6052](https://datatracker.ietf.org/doc/html/rfc6052). * The default prefix is the well-known prefix `64:ff9b::/96`. The prefix * length must be one of 32, 40, 48, 56, 64, or 96; for prefixes shorter * than /64 the IPv4 octets are split around the reserved bits 64–71. * @example * Address6.fromAddress4Nat64('192.0.2.33').correctForm(); // '64:ff9b::c000:221' * Address6.fromAddress4Nat64('192.0.2.33', '2001:db8::/32').correctForm(); // '2001:db8:c000:221::' */ static fromAddress4Nat64(address, prefix = "64:ff9b::/96") { const v4 = new ipv4_1.Address4(address); const prefix6 = new _Address6(prefix); const pl = prefix6.subnetMask; if (pl !== 32 && pl !== 40 && pl !== 48 && pl !== 56 && pl !== 64 && pl !== 96) { throw new address_error_1.AddressError("NAT64 prefix length must be 32, 40, 48, 56, 64, or 96"); } const prefixBits = prefix6.binaryZeroPad(); const v4Bits = v4.binaryZeroPad(); let bits; if (pl === 96) { bits = prefixBits.slice(0, 96) + v4Bits; } else { const beforeU = 64 - pl; bits = [ prefixBits.slice(0, pl), v4Bits.slice(0, beforeU), // Bits 64 to 71 are the reserved u octet and are always zero. "00000000", v4Bits.slice(beforeU), "0".repeat(128 - 72 - (32 - beforeU)) ].join(""); } const hex = BigInt(`0b${bits}`).toString(16).padStart(32, "0"); const groups = []; for (let i = 0; i < 8; i++) { groups.push(hex.slice(i * 4, (i + 1) * 4)); } return new _Address6(groups.join(":")); } /** * Extract the embedded IPv4 address from a NAT64 IPv6 address using the * encoding defined by [RFC 6052](https://datatracker.ietf.org/doc/html/rfc6052). * The default prefix is the well-known prefix `64:ff9b::/96`. Returns * `null` if this address is not contained within the given prefix. * @example * new Address6('64:ff9b::c000:221').toAddress4Nat64()!.correctForm(); // '192.0.2.33' */ toAddress4Nat64(prefix = "64:ff9b::/96") { const prefix6 = new _Address6(prefix); const pl = prefix6.subnetMask; if (pl !== 32 && pl !== 40 && pl !== 48 && pl !== 56 && pl !== 64 && pl !== 96) { throw new address_error_1.AddressError("NAT64 prefix length must be 32, 40, 48, 56, 64, or 96"); } if (!this.isHostInSubnet(prefix6)) { return null; } const bits = this.binaryZeroPad(); let v4Bits; if (pl === 96) { v4Bits = bits.slice(96, 128); } else { const beforeU = 64 - pl; v4Bits = bits.slice(pl, pl + beforeU) + bits.slice(72, 72 + (32 - beforeU)); } const octets = []; for (let i = 0; i < 4; i++) { octets.push(parseInt(v4Bits.slice(i * 8, (i + 1) * 8), 2).toString()); } return new ipv4_1.Address4(octets.join(".")); } /** * Return a byte array. * * To get a Node.js `Buffer`, wrap the result: `Buffer.from(address.toByteArray())`. * @returns {Array} */ toByteArray() { const value = this.bigInt().toString(16).padStart(constants6.BITS / 4, "0"); const bytes = []; for (let i = 0, length = value.length; i < length; i += 2) { bytes.push(parseInt(value.substring(i, i + 2), 16)); } return bytes; } /** * Return an unsigned byte array. * * To get a Node.js `Buffer`, wrap the result: `Buffer.from(address.toUnsignedByteArray())`. * @returns {Array} */ toUnsignedByteArray() { return this.toByteArray().map(unsignByte); } /** * Convert a byte array to an Address6 object. * * Accepts unsigned bytes (0 to 255) or signed bytes (-128 to 127, as an * `Int8Array` or a Java `byte[]` holds them), folding signed values to their * unsigned equivalent. Throws `AddressError` unless given exactly 16 * integers from -128 to 255. * * To convert from a Node.js `Buffer`, spread it: `Address6.fromByteArray([...buf])`. * @returns {Address6} */ static fromByteArray(bytes) { common.assertByteArray(bytes, 16, "IPv6", -128); return this.fromUnsignedByteArray(bytes.map(unsignByte)); } /** * Convert an unsigned byte array to an Address6 object. * * Throws `AddressError` unless given exactly 16 integers from 0 to 255. * * To convert from a Node.js `Buffer`, spread it: `Address6.fromUnsignedByteArray([...buf])`. * @returns {Address6} */ static fromUnsignedByteArray(bytes) { common.assertByteArray(bytes, 16, "IPv6", 0); const BYTE_MAX = BigInt("256"); let result = BigInt("0"); let multiplier = BigInt("1"); for (let i = bytes.length - 1; i >= 0; i--) { result += multiplier * BigInt(bytes[i].toString(10)); multiplier *= BYTE_MAX; } return _Address6.fromBigInt(result); } /** * Returns true if the address is in the canonical form, false otherwise * @returns {boolean} */ isCanonical() { return this.addressMinusSuffix === this.canonicalForm(); } /** * Returns true if the address is a link-local unicast address in `fe80::/10` * ([RFC 4291 §2.4](https://datatracker.ietf.org/doc/html/rfc4291#section-2.4)) * or an IPv4-mapped / NAT64 address whose embedded IPv4 address is link-local * (`169.254.0.0/16`, e.g. `::ffff:169.254.169.254`), false otherwise. * @returns {boolean} */ isLinkLocal() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isLinkLocal(); } return this.isHostInSubnet(LINK_LOCAL_SUBNET); } /** * Returns true if the address is a multicast address, false otherwise * @returns {boolean} */ isMulticast() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isMulticast(); } const type = this.getType(); return type === "Multicast" || type.startsWith("Multicast "); } /** * Returns true if the address was written in v4-in-v6 dotted-quad notation * (e.g. `::ffff:127.0.0.1`), false otherwise. This is a notation-level flag * and does not reflect whether the address bits lie in the IPv4-mapped * (`::ffff:0:0/96`) subnet — for that, see {@link isMapped4}. * @returns {boolean} */ is4() { return this.v4; } /** * Returns true if the address is an IPv4-mapped IPv6 address in * `::ffff:0:0/96` ([RFC 4291 §2.5.5.2](https://datatracker.ietf.org/doc/html/rfc4291#section-2.5.5.2)), * false otherwise. Unlike {@link is4}, this checks the underlying address * bits rather than the textual notation, so `::ffff:127.0.0.1` and * `::ffff:7f00:1` both return true. * @returns {boolean} */ isMapped4() { return this.isHostInSubnet(IPV4_MAPPED_SUBNET); } /** * If this address embeds a routable IPv4 address — i.e. it is IPv4-mapped * (`::ffff:0:0/96`) or sits in the NAT64 well-known prefix (`64:ff9b::/96`, * [RFC 6052](https://datatracker.ietf.org/doc/html/rfc6052)) — return that * embedded address as an {@link Address4}; otherwise return null. * * The special-property checks (`isLoopback`, `isLinkLocal`, `isMulticast`, * `isUnspecified`, `isPrivate`, `isCGNAT`, `isBroadcast`) call this first and * delegate to the embedded {@link Address4} when present, so a literal such as * `::ffff:127.0.0.1` is classified by what it actually reaches (loopback) * rather than by its IPv6 wrapper (which `getType()` reports as IPv4-mapped). * This matters wherever the checks back a trust-boundary decision (e.g. an * SSRF allow/deny filter): without normalization, `::ffff:10.0.0.1`, * `::ffff:169.254.169.254`, `64:ff9b::7f00:1`, etc. would all read as * non-internal. * @returns {Address4 | null} */ embeddedIPv4() { if (this.isMapped4() || this.isHostInSubnet(NAT64_WELL_KNOWN_SUBNET)) { return this.to4(); } return null; } /** * Returns true if the address is a Teredo address, false otherwise * @returns {boolean} */ isTeredo() { return this.isHostInSubnet(TEREDO_SUBNET); } /** * Returns true if the address is a 6to4 address, false otherwise * @returns {boolean} */ is6to4() { return this.isHostInSubnet(SIX_TO_FOUR_SUBNET); } /** * Returns true if the address is a loopback address, false otherwise * @returns {boolean} */ isLoopback() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isLoopback(); } return this.getType() === "Loopback"; } /** * Returns true if the address is a Unique Local Address in `fc00::/7` ([RFC 4193](https://datatracker.ietf.org/doc/html/rfc4193)). ULAs are the IPv6 equivalent of IPv4 [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) private addresses. * @returns {boolean} */ isULA() { return this.isHostInSubnet(ULA_SUBNET); } /** * Returns true if the address is private, i.e. a Unique Local Address in * `fc00::/7` ([RFC 4193](https://datatracker.ietf.org/doc/html/rfc4193)), an * address in the NAT64 local-use range `64:ff9b:1::/48` * ([RFC 8215](https://datatracker.ietf.org/doc/html/rfc8215)), or an * IPv4-mapped / NAT64 well-known address whose embedded IPv4 address is in * one of the [RFC 1918](https://datatracker.ietf.org/doc/html/rfc1918) * private ranges (e.g. `::ffff:10.0.0.1`). This is the IPv6 counterpart to * {@link Address4.isPrivate}; use it instead of {@link isULA} when you need to * catch mapped RFC 1918 addresses as well as native ULAs. * * The local-use NAT64 range is reported private as a whole rather than by * its embedded IPv4 address: an operator may carve a prefix of any RFC 6052 * length out of `64:ff9b:1::/48`, so the same bits decode to different IPv4 * addresses under different deployments and no single decoding is correct. * Use {@link toAddress4Nat64} with the deployment's prefix to decode one. * @returns {boolean} */ isPrivate() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isPrivate(); } return this.isULA() || this.isHostInSubnet(NAT64_LOCAL_USE_SUBNET); } /** * Returns true if the address is an IPv4-mapped / NAT64 address whose embedded * IPv4 address is in the carrier-grade NAT range `100.64.0.0/10` * ([RFC 6598](https://datatracker.ietf.org/doc/html/rfc6598)), false * otherwise. There is no native IPv6 CGNAT range, so this only ever returns * true for an embedded IPv4 address (e.g. `::ffff:100.64.0.1`). * @returns {boolean} */ isCGNAT() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isCGNAT(); } return false; } /** * Returns true if the address is an IPv4-mapped / NAT64 address whose embedded * IPv4 address is the limited broadcast address `255.255.255.255` * ([RFC 919](https://datatracker.ietf.org/doc/html/rfc919)), false otherwise. * There is no IPv6 broadcast, so this only ever returns true for an embedded * IPv4 address (e.g. `::ffff:255.255.255.255`). * @returns {boolean} */ isBroadcast() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isBroadcast(); } return false; } /** * Returns true if the address is the unspecified address `::`. * @returns {boolean} */ isUnspecified() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isUnspecified(); } return this.getType() === "Unspecified"; } /** * Returns true if the address is in the documentation prefix `2001:db8::/32` ([RFC 3849](https://datatracker.ietf.org/doc/html/rfc3849)). * @returns {boolean} */ isDocumentation() { return DOCUMENTATION_SUBNETS.some((subnet) => this.isHostInSubnet(subnet)); } /** * Returns true if the address is in the benchmarking range `2001:2::/48` * ([RFC 5180](https://datatracker.ietf.org/doc/html/rfc5180)) or is an * IPv4-mapped / NAT64 address whose embedded IPv4 address is in * `198.18.0.0/15`, false otherwise. * @returns {boolean} */ isBenchmarking() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isBenchmarking(); } return this.isHostInSubnet(BENCHMARKING_SUBNET); } /** * Returns true if the address is globally reachable: inside the global * unicast allocation `2000::/3` (the only range the [IANA IPv6 Address Space * Registry](https://www.iana.org/assignments/ipv6-address-space/) assigns * for global unicast; everything else is reserved, ULA, link-local, or * multicast) and not in any block the [IANA IPv6 Special-Purpose Address Registry](https://www.iana.org/assignments/iana-ipv6-special-registry/) * marks as not globally reachable. An IPv4-mapped or NAT64 well-known * address answers for its embedded IPv4 address, so `::ffff:10.0.0.1` and * `64:ff9b::7f00:1` are not global. Teredo (`2001::/32`) and 6to4 * (`2002::/16`) are not global either: the registry lists them as N/A and a * packet to one needs a relay. * * This covers everything the individual classifiers name and the blocks they * do not: the discard-only prefix `100::/64`, the IETF protocol assignments * in `2001::/23`, the deprecated site-local `fec0::/10` and IPv4-compatible * `::/96` ranges, and unallocated space such as `4000::/3`. It is the single * predicate to use where a request must not reach an internal or * special-purpose destination; see SECURITY.md. * @returns {boolean} */ isGlobal() { const embedded = this.embeddedIPv4(); if (embedded) { return embedded.isGlobal(); } return this.isHostInSubnet(GLOBAL_UNICAST_SUBNET) && common.isGloballyReachable.call(this, SPECIAL_PURPOSE_V6); } // #endregion // #region HTML /** * Returns the address as an HTTP URL with the host bracketed, e.g. * `http://[2001:db8::1]/`. If `optionalPort` is provided it is appended, * e.g. `http://[2001:db8::1]:8080/`. */ href(optionalPort) { if (optionalPort === void 0) { optionalPort = ""; } else { optionalPort = `:${optionalPort}`; } return `http://[${this.correctForm()}]${optionalPort}/`; } /** * Returns an HTML `<a>` element whose `href` encodes the address in a URL * hash fragment (default prefix `/#address=`). Useful for linking between * pages of an address-inspector UI. * @param options.className - CSS class for the rendered `<a>` element * @param options.prefix - hash prefix prepended to the address (default `/#address=`) * @param options.v4 - when true, render the address in v4-in-v6 form */ link(options) { if (!options) { options = {}; } if (options.className === void 0) { options.className = ""; } if (options.prefix === void 0) { options.prefix = "/#address="; } if (options.v4 === void 0) { options.v4 = false; } let formFunction = this.correctForm; if (options.v4) { formFunction = this.to4in6; } const form = formFunction.call(this); const safeHref = helpers.escapeHtml(`${options.prefix}${form}`); const safeForm = helpers.escapeHtml(form); if (options.className) { const safeClass = helpers.escapeHtml(options.className); return `<a href="${safeHref}" class="${safeClass}">${safeForm}</a>`; } return `<a href="${safeHref}">${safeForm}</a>`; } /** * Groups an address. * * Returns an HTML fragment: each group is wrapped in a `<span>` carrying * the group classes an address-inspector UI hovers on. The address content * is HTML-escaped; anything you concatenate around it is your * responsibility. * @returns {String} */ group() { if (this.elidedGroups === 0) { return helpers.simpleGroup(this.addressMinusSuffix).join(":"); } assert(typeof this.elidedGroups === "number"); assert(typeof this.elisionBegin === "number"); const output = []; const [left, right] = this.addressMinusSuffix.split("::"); if (left.length) { output.push(...helpers.simpleGroup(left)); } else { output.push(""); } const classes = ["hover-group"]; for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) { classes.push(`group-${i}`); } output.push(`<span class="${classes.join(" ")}"></span>`); if (right.length) { output.push(...helpers.simpleGroup(right, this.elisionEnd)); } else { output.push(""); } if (this.is4()) { assert(this.address4 instanceof ipv4_1.Address4); output.pop(); output.push(this.address4.groupForV6()); } return output.join(":"); } // #endregion // #region Regular expressions /** * Generate a regular expression string that can be used to find or validate * all variations of this address * @param {boolean} substringSearch * @returns {string} */ regularExpressionString(substringSearch = false) { let output = []; const address6 = new _Address6(this.correctForm()); if (address6.elidedGroups === 0) { output.push((0, regular_expressions_1.simpleRegularExpression)(address6.parsedAddress)); } else if (address6.elidedGroups === constants6.GROUPS) { output.push((0, regular_expressions_1.possibleElisions)(constants6.GROUPS)); } else { const halves = address6.address.split("::"); if (halves[0].length) { output.push((0, regular_expressions_1.simpleRegularExpression)(halves[0].split(":"))); } assert(typeof address6.elidedGroups === "number"); output.push((0, regular_expressions_1.possibleElisions)(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0)); if (halves[1].length) { output.push((0, regular_expressions_1.simpleRegularExpression)(halves[1].split(":"))); } output = [output.join(":")]; } if (!substringSearch) { output = [ "(?=^|", regular_expressions_1.ADDRESS_BOUNDARY, "|[^\\w\\:])(", ...output, ")(?=[^\\w\\:]|", regular_expressions_1.ADDRESS_BOUNDARY, "|$)" ]; } return output.join(""); } /** * Generate a regular expression that can be used to find or validate all * variations of this address. * @param {boolean} substringSearch * @returns {RegExp} */ regularExpression(substringSearch = false) { return new RegExp(this.regularExpressionString(substringSearch), "i"); } }; exports2.Address6 = Address6; var TYPE_SUBNETS = Object.keys(constants6.TYPES).map((subnet) => [ new Address6(subnet), constants6.TYPES[subnet] ]); var TEREDO_SUBNET = new Address6("2001::/32"); var SIX_TO_FOUR_SUBNET = new Address6("2002::/16"); var ULA_SUBNET = new Address6("fc00::/7"); var LINK_LOCAL_SUBNET = new Address6("fe80::/10"); var DOCUMENTATION_SUBNETS = [new Address6("2001:db8::/32"), new Address6("3fff::/20")]; var BENCHMARKING_SUBNET = new Address6("2001:2::/48"); var GLOBAL_UNICAST_SUBNET = new Address6("2000::/3"); var SPECIAL_PURPOSE_V6 = constants6.SPECIAL_PURPOSE.map(([cidr, , reachable]) => ({ subnet: new Address6(cidr), reachable })); var IPV4_MAPPED_SUBNET = new Address6("::ffff:0:0/96"); var NAT64_WELL_KNOWN_SUBNET = new Address6("64:ff9b::/96"); var NAT64_LOCAL_USE_SUBNET = new Address6("64:ff9b:1::/48"); } }); // node_modules/ip-address/dist/ip-address.js var require_ip_address = __commonJS({ "node_modules/ip-address/dist/ip-address.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.v6 = exports2.AddressError = exports2.Address6 = exports2.Address4 = void 0; var ipv4_1 = require_ipv4(); Object.defineProperty(exports2, "Address4", { enumerable: true, get: function() { return ipv4_1.Address4; } }); var ipv6_1 = require_ipv6(); Object.defineProperty(exports2, "Address6", { enumerable: true, get: function() { return ipv6_1.Address6; } }); var address_error_1 = require_address_error(); Object.defineProperty(exports2, "AddressError", { enumerable: true, get: function() { return address_error_1.AddressError; } }); var helpers = __importStar2(require_helpers3()); exports2.v6 = { helpers }; } }); // node_modules/socks/build/common/helpers.js var require_helpers4 = __commonJS({ "node_modules/socks/build/common/helpers.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.validateSocksClientOptions = validateSocksClientOptions; exports2.validateSocksClientChainOptions = validateSocksClientChainOptions; exports2.ipv4ToInt32 = ipv4ToInt32; exports2.int32ToIpv4 = int32ToIpv4; exports2.ipToBuffer = ipToBuffer; var util_1 = require_util(); var constants_1 = require_constants3(); var stream = require("stream"); var ip_address_1 = require_ip_address(); var net = require("net"); function validateSocksClientOptions(options, acceptedCommands = ["connect", "bind", "associate"]) { if (!constants_1.SocksCommand[options.command]) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommand, options); } if (acceptedCommands.indexOf(options.command) === -1) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandForOperation, options); } if (!isValidSocksRemoteHost(options.destination)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); } if (!isValidSocksProxy(options.proxy)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); } validateCustomProxyAuth(options.proxy, options); if (options.timeout && !isValidTimeoutValue(options.timeout)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); } if (options.existing_socket && !(options.existing_socket instanceof stream.Duplex)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsExistingSocket, options); } } function validateSocksClientChainOptions(options) { if (options.command !== "connect") { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksCommandChain, options); } if (!isValidSocksRemoteHost(options.destination)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsDestination, options); } if (!(options.proxies && Array.isArray(options.proxies) && options.proxies.length >= 2)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxiesLength, options); } options.proxies.forEach((proxy) => { if (!isValidSocksProxy(proxy)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsProxy, options); } validateCustomProxyAuth(proxy, options); }); if (options.timeout && !isValidTimeoutValue(options.timeout)) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsTimeout, options); } } function validateCustomProxyAuth(proxy, options) { if (proxy.custom_auth_method !== void 0) { if (proxy.custom_auth_method < constants_1.SOCKS5_CUSTOM_AUTH_START || proxy.custom_auth_method > constants_1.SOCKS5_CUSTOM_AUTH_END) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthRange, options); } if (proxy.custom_auth_request_handler === void 0 || typeof proxy.custom_auth_request_handler !== "function") { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); } if (proxy.custom_auth_response_size === void 0) { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); } if (proxy.custom_auth_response_handler === void 0 || typeof proxy.custom_auth_response_handler !== "function") { throw new util_1.SocksClientError(constants_1.ERRORS.InvalidSocksClientOptionsCustomAuthOptions, options); } } } function isValidSocksRemoteHost(remoteHost) { return remoteHost && typeof remoteHost.host === "string" && Buffer.byteLength(remoteHost.host) < 256 && typeof remoteHost.port === "number" && remoteHost.port >= 0 && remoteHost.port <= 65535; } function isValidSocksProxy(proxy) { return proxy && (typeof proxy.host === "string" || typeof proxy.ipaddress === "string") && typeof proxy.port === "number" && proxy.port >= 0 && proxy.port <= 65535 && (proxy.type === 4 || proxy.type === 5); } function isValidTimeoutValue(value) { return typeof value === "number" && value > 0; } function ipv4ToInt32(ip) { const address = new ip_address_1.Address4(ip); return address.toArray().reduce((acc, part) => (acc << 8) + part, 0) >>> 0; } function int32ToIpv4(int32) { const octet1 = int32 >>> 24 & 255; const octet2 = int32 >>> 16 & 255; const octet3 = int32 >>> 8 & 255; const octet4 = int32 & 255; return [octet1, octet2, octet3, octet4].join("."); } function ipToBuffer(ip) { if (net.isIPv4(ip)) { const address = new ip_address_1.Address4(ip); return Buffer.from(address.toArray()); } else if (net.isIPv6(ip)) { const address = new ip_address_1.Address6(ip); return Buffer.from(address.canonicalForm().split(":").map((segment) => segment.padStart(4, "0")).join(""), "hex"); } else { throw new Error("Invalid IP address format"); } } } }); // node_modules/socks/build/common/receivebuffer.js var require_receivebuffer = __commonJS({ "node_modules/socks/build/common/receivebuffer.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ReceiveBuffer = void 0; var ReceiveBuffer = class { constructor(size = 4096) { this.buffer = Buffer.allocUnsafe(size); this.offset = 0; this.originalSize = size; } get length() { return this.offset; } append(data) { if (!Buffer.isBuffer(data)) { throw new Error("Attempted to append a non-buffer instance to ReceiveBuffer."); } if (this.offset + data.length >= this.buffer.length) { const tmp = this.buffer; this.buffer = Buffer.allocUnsafe(Math.max(this.buffer.length + this.originalSize, this.buffer.length + data.length)); tmp.copy(this.buffer); } data.copy(this.buffer, this.offset); return this.offset += data.length; } peek(length) { if (length > this.offset) { throw new Error("Attempted to read beyond the bounds of the managed internal data."); } return this.buffer.slice(0, length); } get(length) { if (length > this.offset) { throw new Error("Attempted to read beyond the bounds of the managed internal data."); } const value = Buffer.allocUnsafe(length); this.buffer.slice(0, length).copy(value); this.buffer.copyWithin(0, length, length + this.offset - length); this.offset -= length; return value; } }; exports2.ReceiveBuffer = ReceiveBuffer; } }); // node_modules/socks/build/client/socksclient.js var require_socksclient = __commonJS({ "node_modules/socks/build/client/socksclient.js"(exports2) { "use strict"; init_define_import_meta_env(); var __awaiter2 = exports2 && exports2.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { resolve(value); }); } return new (P || (P = Promise))(function(resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.SocksClientError = exports2.SocksClient = void 0; var events_1 = require("events"); var net = require("net"); var smart_buffer_1 = require_smartbuffer(); var constants_1 = require_constants3(); var helpers_1 = require_helpers4(); var receivebuffer_1 = require_receivebuffer(); var util_1 = require_util(); Object.defineProperty(exports2, "SocksClientError", { enumerable: true, get: function() { return util_1.SocksClientError; } }); var ip_address_1 = require_ip_address(); var SocksClient = class _SocksClient extends events_1.EventEmitter { constructor(options) { super(); this.options = Object.assign({}, options); (0, helpers_1.validateSocksClientOptions)(options); this.setState(constants_1.SocksClientState.Created); } /** * Creates a new SOCKS connection. * * Note: Supports callbacks and promises. Only supports the connect command. * @param options { SocksClientOptions } Options. * @param callback { Function } An optional callback function. * @returns { Promise } */ static createConnection(options, callback) { return new Promise((resolve, reject) => { try { (0, helpers_1.validateSocksClientOptions)(options, ["connect"]); } catch (err) { if (typeof callback === "function") { callback(err); return resolve(err); } else { return reject(err); } } const client2 = new _SocksClient(options); client2.connect(options.existing_socket); client2.once("established", (info) => { client2.removeAllListeners(); if (typeof callback === "function") { callback(null, info); resolve(info); } else { resolve(info); } }); client2.once("error", (err) => { client2.removeAllListeners(); if (typeof callback === "function") { callback(err); resolve(err); } else { reject(err); } }); }); } /** * Creates a new SOCKS connection chain to a destination host through 2 or more SOCKS proxies. * * Note: Supports callbacks and promises. Only supports the connect method. * Note: Implemented via createConnection() factory function. * @param options { SocksClientChainOptions } Options * @param callback { Function } An optional callback function. * @returns { Promise } */ static createConnectionChain(options, callback) { return new Promise((resolve, reject) => __awaiter2(this, void 0, void 0, function* () { try { (0, helpers_1.validateSocksClientChainOptions)(options); } catch (err) { if (typeof callback === "function") { callback(err); return resolve(err); } else { return reject(err); } } if (options.randomizeChain) { (0, util_1.shuffleArray)(options.proxies); } try { let sock; for (let i = 0; i < options.proxies.length; i++) { const nextProxy = options.proxies[i]; const nextDestination = i === options.proxies.length - 1 ? options.destination : { host: options.proxies[i + 1].host || options.proxies[i + 1].ipaddress, port: options.proxies[i + 1].port }; const result = yield _SocksClient.createConnection({ command: "connect", proxy: nextProxy, destination: nextDestination, existing_socket: sock }); sock = sock || result.socket; } if (typeof callback === "function") { callback(null, { socket: sock }); resolve({ socket: sock }); } else { resolve({ socket: sock }); } } catch (err) { if (typeof callback === "function") { callback(err); resolve(err); } else { reject(err); } } })); } /** * Creates a SOCKS UDP Frame. * @param options */ static createUDPFrame(options) { const buff = new smart_buffer_1.SmartBuffer(); buff.writeUInt16BE(0); buff.writeUInt8(options.frameNumber || 0); if (net.isIPv4(options.remoteHost.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv4); buff.writeUInt32BE((0, helpers_1.ipv4ToInt32)(options.remoteHost.host)); } else if (net.isIPv6(options.remoteHost.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv6); buff.writeBuffer((0, helpers_1.ipToBuffer)(options.remoteHost.host)); } else { buff.writeUInt8(constants_1.Socks5HostType.Hostname); buff.writeUInt8(Buffer.byteLength(options.remoteHost.host)); buff.writeString(options.remoteHost.host); } buff.writeUInt16BE(options.remoteHost.port); buff.writeBuffer(options.data); return buff.toBuffer(); } /** * Parses a SOCKS UDP frame. * @param data */ static parseUDPFrame(data) { const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); buff.readOffset = 2; const frameNumber = buff.readUInt8(); const hostType = buff.readUInt8(); let remoteHost; if (hostType === constants_1.Socks5HostType.IPv4) { remoteHost = (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()); } else if (hostType === constants_1.Socks5HostType.IPv6) { remoteHost = ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(); } else { remoteHost = buff.readString(buff.readUInt8()); } const remotePort = buff.readUInt16BE(); return { frameNumber, remoteHost: { host: remoteHost, port: remotePort }, data: buff.readBuffer() }; } /** * Internal state setter. If the SocksClient is in an error state, it cannot be changed to a non error state. */ setState(newState) { if (this.state !== constants_1.SocksClientState.Error) { this.state = newState; } } /** * Starts the connection establishment to the proxy and destination. * @param existingSocket Connected socket to use instead of creating a new one (internal use). */ connect(existingSocket) { this.onDataReceived = (data) => this.onDataReceivedHandler(data); this.onClose = () => this.onCloseHandler(); this.onError = (err) => this.onErrorHandler(err); this.onConnect = () => this.onConnectHandler(); const timer = setTimeout(() => this.onEstablishedTimeout(), this.options.timeout || constants_1.DEFAULT_TIMEOUT); if (timer.unref && typeof timer.unref === "function") { timer.unref(); } if (existingSocket) { this.socket = existingSocket; } else { this.socket = new net.Socket(); } this.socket.once("close", this.onClose); this.socket.once("error", this.onError); this.socket.once("connect", this.onConnect); this.socket.on("data", this.onDataReceived); this.setState(constants_1.SocksClientState.Connecting); this.receiveBuffer = new receivebuffer_1.ReceiveBuffer(); if (existingSocket) { this.socket.emit("connect"); } else { this.socket.connect(this.getSocketOptions()); if (this.options.set_tcp_nodelay !== void 0 && this.options.set_tcp_nodelay !== null) { this.socket.setNoDelay(!!this.options.set_tcp_nodelay); } } this.prependOnceListener("established", (info) => { setImmediate(() => { if (this.receiveBuffer.length > 0) { const excessData = this.receiveBuffer.get(this.receiveBuffer.length); info.socket.emit("data", excessData); } info.socket.resume(); }); }); } // Socket options (defaults host/port to options.proxy.host/options.proxy.port) getSocketOptions() { return Object.assign(Object.assign({}, this.options.socket_options), { host: this.options.proxy.host || this.options.proxy.ipaddress, port: this.options.proxy.port }); } /** * Handles internal Socks timeout callback. * Note: If the Socks client is not BoundWaitingForConnection or Established, the connection will be closed. */ onEstablishedTimeout() { if (this.state !== constants_1.SocksClientState.Established && this.state !== constants_1.SocksClientState.BoundWaitingForConnection) { this.closeSocket(constants_1.ERRORS.ProxyConnectionTimedOut); } } /** * Handles Socket connect event. */ onConnectHandler() { this.setState(constants_1.SocksClientState.Connected); if (this.options.proxy.type === 4) { this.sendSocks4InitialHandshake(); } else { this.sendSocks5InitialHandshake(); } this.setState(constants_1.SocksClientState.SentInitialHandshake); } /** * Handles Socket data event. * @param data */ onDataReceivedHandler(data) { this.receiveBuffer.append(data); this.processData(); } /** * Handles processing of the data we have received. */ processData() { while (this.state !== constants_1.SocksClientState.Established && this.state !== constants_1.SocksClientState.Error && this.receiveBuffer.length >= this.nextRequiredPacketBufferSize) { if (this.state === constants_1.SocksClientState.SentInitialHandshake) { if (this.options.proxy.type === 4) { this.handleSocks4FinalHandshakeResponse(); } else { this.handleInitialSocks5HandshakeResponse(); } } else if (this.state === constants_1.SocksClientState.SentAuthentication) { this.handleInitialSocks5AuthenticationHandshakeResponse(); } else if (this.state === constants_1.SocksClientState.SentFinalHandshake) { this.handleSocks5FinalHandshakeResponse(); } else if (this.state === constants_1.SocksClientState.BoundWaitingForConnection) { if (this.options.proxy.type === 4) { this.handleSocks4IncomingConnectionResponse(); } else { this.handleSocks5IncomingConnectionResponse(); } } else { this.closeSocket(constants_1.ERRORS.InternalError); break; } } } /** * Handles Socket close event. * @param had_error */ onCloseHandler() { this.closeSocket(constants_1.ERRORS.SocketClosed); } /** * Handles Socket error event. * @param err */ onErrorHandler(err) { this.closeSocket(err.message); } /** * Removes internal event listeners on the underlying Socket. */ removeInternalSocketHandlers() { this.socket.pause(); this.socket.removeListener("data", this.onDataReceived); this.socket.removeListener("close", this.onClose); this.socket.removeListener("error", this.onError); this.socket.removeListener("connect", this.onConnect); } /** * Closes and destroys the underlying Socket. Emits an error event. * @param err { String } An error string to include in error event. */ closeSocket(err) { if (this.state !== constants_1.SocksClientState.Error) { this.setState(constants_1.SocksClientState.Error); this.socket.destroy(); this.removeInternalSocketHandlers(); this.emit("error", new util_1.SocksClientError(err, this.options)); } } /** * Sends initial Socks v4 handshake request. */ sendSocks4InitialHandshake() { const userId = this.options.proxy.userId || ""; const buff = new smart_buffer_1.SmartBuffer(); buff.writeUInt8(4); buff.writeUInt8(constants_1.SocksCommand[this.options.command]); buff.writeUInt16BE(this.options.destination.port); if (net.isIPv4(this.options.destination.host)) { buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); buff.writeStringNT(userId); } else { buff.writeUInt8(0); buff.writeUInt8(0); buff.writeUInt8(0); buff.writeUInt8(1); buff.writeStringNT(userId); buff.writeStringNT(this.options.destination.host); } this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks4Response; this.socket.write(buff.toBuffer()); } /** * Handles Socks v4 handshake response. * @param data */ handleSocks4FinalHandshakeResponse() { const data = this.receiveBuffer.get(8); if (data[1] !== constants_1.Socks4Response.Granted) { this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedConnection} - (${constants_1.Socks4Response[data[1]]})`); } else { if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); buff.readOffset = 2; const remoteHost = { port: buff.readUInt16BE(), host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()) }; if (remoteHost.host === "0.0.0.0") { remoteHost.host = this.options.proxy.ipaddress; } this.setState(constants_1.SocksClientState.BoundWaitingForConnection); this.emit("bound", { remoteHost, socket: this.socket }); } else { this.setState(constants_1.SocksClientState.Established); this.removeInternalSocketHandlers(); this.emit("established", { socket: this.socket }); } } } /** * Handles Socks v4 incoming connection request (BIND) * @param data */ handleSocks4IncomingConnectionResponse() { const data = this.receiveBuffer.get(8); if (data[1] !== constants_1.Socks4Response.Granted) { this.closeSocket(`${constants_1.ERRORS.Socks4ProxyRejectedIncomingBoundConnection} - (${constants_1.Socks4Response[data[1]]})`); } else { const buff = smart_buffer_1.SmartBuffer.fromBuffer(data); buff.readOffset = 2; const remoteHost = { port: buff.readUInt16BE(), host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()) }; this.setState(constants_1.SocksClientState.Established); this.removeInternalSocketHandlers(); this.emit("established", { remoteHost, socket: this.socket }); } } /** * Sends initial Socks v5 handshake request. */ sendSocks5InitialHandshake() { const buff = new smart_buffer_1.SmartBuffer(); const supportedAuthMethods = [constants_1.Socks5Auth.NoAuth]; if (this.options.proxy.userId || this.options.proxy.password) { supportedAuthMethods.push(constants_1.Socks5Auth.UserPass); } if (this.options.proxy.custom_auth_method !== void 0) { supportedAuthMethods.push(this.options.proxy.custom_auth_method); } buff.writeUInt8(5); buff.writeUInt8(supportedAuthMethods.length); for (const authMethod of supportedAuthMethods) { buff.writeUInt8(authMethod); } this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5InitialHandshakeResponse; this.socket.write(buff.toBuffer()); this.setState(constants_1.SocksClientState.SentInitialHandshake); } /** * Handles initial Socks v5 handshake response. * @param data */ handleInitialSocks5HandshakeResponse() { const data = this.receiveBuffer.get(2); if (data[0] !== 5) { this.closeSocket(constants_1.ERRORS.InvalidSocks5IntiailHandshakeSocksVersion); } else if (data[1] === constants_1.SOCKS5_NO_ACCEPTABLE_AUTH) { this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeNoAcceptedAuthType); } else { if (data[1] === constants_1.Socks5Auth.NoAuth) { this.socks5ChosenAuthType = constants_1.Socks5Auth.NoAuth; this.sendSocks5CommandRequest(); } else if (data[1] === constants_1.Socks5Auth.UserPass) { this.socks5ChosenAuthType = constants_1.Socks5Auth.UserPass; this.sendSocks5UserPassAuthentication(); } else if (data[1] === this.options.proxy.custom_auth_method) { this.socks5ChosenAuthType = this.options.proxy.custom_auth_method; this.sendSocks5CustomAuthentication(); } else { this.closeSocket(constants_1.ERRORS.InvalidSocks5InitialHandshakeUnknownAuthType); } } } /** * Sends Socks v5 user & password auth handshake. * * Note: No auth and user/pass are currently supported. */ sendSocks5UserPassAuthentication() { const userId = this.options.proxy.userId || ""; const password = this.options.proxy.password || ""; const buff = new smart_buffer_1.SmartBuffer(); buff.writeUInt8(1); buff.writeUInt8(Buffer.byteLength(userId)); buff.writeString(userId); buff.writeUInt8(Buffer.byteLength(password)); buff.writeString(password); this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5UserPassAuthenticationResponse; this.socket.write(buff.toBuffer()); this.setState(constants_1.SocksClientState.SentAuthentication); } sendSocks5CustomAuthentication() { return __awaiter2(this, void 0, void 0, function* () { this.nextRequiredPacketBufferSize = this.options.proxy.custom_auth_response_size; this.socket.write(yield this.options.proxy.custom_auth_request_handler()); this.setState(constants_1.SocksClientState.SentAuthentication); }); } handleSocks5CustomAuthHandshakeResponse(data) { return __awaiter2(this, void 0, void 0, function* () { return yield this.options.proxy.custom_auth_response_handler(data); }); } handleSocks5AuthenticationNoAuthHandshakeResponse(data) { return __awaiter2(this, void 0, void 0, function* () { return data[1] === 0; }); } handleSocks5AuthenticationUserPassHandshakeResponse(data) { return __awaiter2(this, void 0, void 0, function* () { return data[1] === 0; }); } /** * Handles Socks v5 auth handshake response. * @param data */ handleInitialSocks5AuthenticationHandshakeResponse() { return __awaiter2(this, void 0, void 0, function* () { this.setState(constants_1.SocksClientState.ReceivedAuthenticationResponse); let authResult = false; if (this.socks5ChosenAuthType === constants_1.Socks5Auth.NoAuth) { authResult = yield this.handleSocks5AuthenticationNoAuthHandshakeResponse(this.receiveBuffer.get(2)); } else if (this.socks5ChosenAuthType === constants_1.Socks5Auth.UserPass) { authResult = yield this.handleSocks5AuthenticationUserPassHandshakeResponse(this.receiveBuffer.get(2)); } else if (this.socks5ChosenAuthType === this.options.proxy.custom_auth_method) { authResult = yield this.handleSocks5CustomAuthHandshakeResponse(this.receiveBuffer.get(this.options.proxy.custom_auth_response_size)); } if (!authResult) { this.closeSocket(constants_1.ERRORS.Socks5AuthenticationFailed); } else { this.sendSocks5CommandRequest(); } }); } /** * Sends Socks v5 final handshake request. */ sendSocks5CommandRequest() { const buff = new smart_buffer_1.SmartBuffer(); buff.writeUInt8(5); buff.writeUInt8(constants_1.SocksCommand[this.options.command]); buff.writeUInt8(0); if (net.isIPv4(this.options.destination.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv4); buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); } else if (net.isIPv6(this.options.destination.host)) { buff.writeUInt8(constants_1.Socks5HostType.IPv6); buff.writeBuffer((0, helpers_1.ipToBuffer)(this.options.destination.host)); } else { buff.writeUInt8(constants_1.Socks5HostType.Hostname); buff.writeUInt8(this.options.destination.host.length); buff.writeString(this.options.destination.host); } buff.writeUInt16BE(this.options.destination.port); this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; this.socket.write(buff.toBuffer()); this.setState(constants_1.SocksClientState.SentFinalHandshake); } /** * Handles Socks v5 final handshake response. * @param data */ handleSocks5FinalHandshakeResponse() { const header = this.receiveBuffer.peek(5); if (header[0] !== 5 || header[1] !== constants_1.Socks5Response.Granted) { this.closeSocket(`${constants_1.ERRORS.InvalidSocks5FinalHandshakeRejected} - ${constants_1.Socks5Response[header[1]]}`); } else { const addressType = header[3]; let remoteHost; let buff; if (addressType === constants_1.Socks5HostType.IPv4) { const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; if (this.receiveBuffer.length < dataNeeded) { this.nextRequiredPacketBufferSize = dataNeeded; return; } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), port: buff.readUInt16BE() }; if (remoteHost.host === "0.0.0.0") { remoteHost.host = this.options.proxy.ipaddress; } } else if (addressType === constants_1.Socks5HostType.Hostname) { const hostLength = header[4]; const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); if (this.receiveBuffer.length < dataNeeded) { this.nextRequiredPacketBufferSize = dataNeeded; return; } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); remoteHost = { host: buff.readString(hostLength), port: buff.readUInt16BE() }; } else if (addressType === constants_1.Socks5HostType.IPv6) { const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; if (this.receiveBuffer.length < dataNeeded) { this.nextRequiredPacketBufferSize = dataNeeded; return; } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), port: buff.readUInt16BE() }; } this.setState(constants_1.SocksClientState.ReceivedFinalResponse); if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.connect) { this.setState(constants_1.SocksClientState.Established); this.removeInternalSocketHandlers(); this.emit("established", { remoteHost, socket: this.socket }); } else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.bind) { this.setState(constants_1.SocksClientState.BoundWaitingForConnection); this.nextRequiredPacketBufferSize = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHeader; this.emit("bound", { remoteHost, socket: this.socket }); } else if (constants_1.SocksCommand[this.options.command] === constants_1.SocksCommand.associate) { this.setState(constants_1.SocksClientState.Established); this.removeInternalSocketHandlers(); this.emit("established", { remoteHost, socket: this.socket }); } } } /** * Handles Socks v5 incoming connection request (BIND). */ handleSocks5IncomingConnectionResponse() { const header = this.receiveBuffer.peek(5); if (header[0] !== 5 || header[1] !== constants_1.Socks5Response.Granted) { this.closeSocket(`${constants_1.ERRORS.Socks5ProxyRejectedIncomingBoundConnection} - ${constants_1.Socks5Response[header[1]]}`); } else { const addressType = header[3]; let remoteHost; let buff; if (addressType === constants_1.Socks5HostType.IPv4) { const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv4; if (this.receiveBuffer.length < dataNeeded) { this.nextRequiredPacketBufferSize = dataNeeded; return; } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { host: (0, helpers_1.int32ToIpv4)(buff.readUInt32BE()), port: buff.readUInt16BE() }; if (remoteHost.host === "0.0.0.0") { remoteHost.host = this.options.proxy.ipaddress; } } else if (addressType === constants_1.Socks5HostType.Hostname) { const hostLength = header[4]; const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseHostname(hostLength); if (this.receiveBuffer.length < dataNeeded) { this.nextRequiredPacketBufferSize = dataNeeded; return; } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(5)); remoteHost = { host: buff.readString(hostLength), port: buff.readUInt16BE() }; } else if (addressType === constants_1.Socks5HostType.IPv6) { const dataNeeded = constants_1.SOCKS_INCOMING_PACKET_SIZES.Socks5ResponseIPv6; if (this.receiveBuffer.length < dataNeeded) { this.nextRequiredPacketBufferSize = dataNeeded; return; } buff = smart_buffer_1.SmartBuffer.fromBuffer(this.receiveBuffer.get(dataNeeded).slice(4)); remoteHost = { host: ip_address_1.Address6.fromByteArray(Array.from(buff.readBuffer(16))).canonicalForm(), port: buff.readUInt16BE() }; } this.setState(constants_1.SocksClientState.Established); this.removeInternalSocketHandlers(); this.emit("established", { remoteHost, socket: this.socket }); } } get socksClientOptions() { return Object.assign({}, this.options); } }; exports2.SocksClient = SocksClient; } }); // node_modules/socks/build/index.js var require_build = __commonJS({ "node_modules/socks/build/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); __exportStar2(require_socksclient(), exports2); } }); // node_modules/telegram/extensions/socks.js var require_socks = __commonJS({ "node_modules/telegram/extensions/socks.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); __exportStar2(require_build(), exports2); } }); // node_modules/telegram/extensions/PromisedNetSockets.js var require_PromisedNetSockets = __commonJS({ "node_modules/telegram/extensions/PromisedNetSockets.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.PromisedNetSockets = void 0; var net = __importStar2(require_net()); var socks_1 = require_socks(); var async_mutex_1 = require_lib16(); var mutex = new async_mutex_1.Mutex(); var closeError = new Error("NetSocket was closed"); var PromisedNetSockets = class { constructor(proxy) { this.client = void 0; this.closed = true; this.stream = Buffer.alloc(0); if (proxy) { if (!("MTProxy" in proxy)) { if (!proxy.ip || !proxy.port || !proxy.socksType) { throw new Error(`Invalid sockets params: ip=${proxy.ip}, port=${proxy.port}, socksType=${proxy.socksType}`); } this.proxy = proxy; } } } async readExactly(number) { let readData = Buffer.alloc(0); while (true) { const thisTime = await this.read(number); readData = Buffer.concat([readData, thisTime]); number = number - thisTime.length; if (!number || number === -437) { return readData; } } } async read(number) { if (this.closed) { throw closeError; } await this.canRead; if (this.closed) { throw closeError; } const toReturn = this.stream.slice(0, number); this.stream = this.stream.slice(number); if (this.stream.length === 0) { this.canRead = new Promise((resolve) => { this.resolveRead = resolve; }); } return toReturn; } async readAll() { if (this.closed || !await this.canRead) { throw closeError; } const toReturn = this.stream; this.stream = Buffer.alloc(0); this.canRead = new Promise((resolve) => { this.resolveRead = resolve; }); return toReturn; } /** * Creates a new connection * @param port * @param ip * @returns {Promise<void>} */ async connect(port, ip) { this.stream = Buffer.alloc(0); let connected = false; if (this.proxy) { const info = await socks_1.SocksClient.createConnection({ proxy: { host: this.proxy.ip, port: this.proxy.port, type: this.proxy.socksType, userId: this.proxy.username, password: this.proxy.password }, command: "connect", timeout: (this.proxy.timeout || 5) * 1e3, destination: { host: ip, port } }); this.client = info.socket; connected = true; } else { this.client = new net.Socket(); } this.canRead = new Promise((resolve) => { this.resolveRead = resolve; }); this.closed = false; return new Promise((resolve, reject) => { if (this.client) { if (connected) { this.receive(); resolve(this); } else { this.client.connect(port, ip, () => { this.receive(); resolve(this); }); } this.client.on("error", reject); this.client.on("close", () => { if (this.client && this.client.destroyed) { if (this.resolveRead) { this.resolveRead(false); } this.closed = true; } }); } }); } write(data) { if (this.closed) { throw closeError; } if (this.client) { this.client.write(data); } } async close() { if (this.client) { await this.client.destroy(); this.client.unref(); } this.closed = true; } async receive() { if (this.client) { this.client.on("data", async (message) => { const release = await mutex.acquire(); try { let data; this.stream = Buffer.concat([this.stream, message]); if (this.resolveRead) { this.resolveRead(true); } } finally { release(); } }); } } toString() { return "PromisedNetSocket"; } }; exports2.PromisedNetSockets = PromisedNetSockets; } }); // node_modules/telegram/extensions/MessagePacker.js var require_MessagePacker = __commonJS({ "node_modules/telegram/extensions/MessagePacker.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MessagePacker = void 0; var core_1 = require_core(); var core_2 = require_core(); var BinaryWriter_1 = require_BinaryWriter(); var USE_INVOKE_AFTER_WITH = /* @__PURE__ */ new Set([ "messages.SendMessage", "messages.SendMedia", "messages.SendMultiMedia", "messages.ForwardMessages", "messages.SendInlineBotResult" ]); var MessagePacker = class { constructor(state2, logger) { this._state = state2; this._queue = []; this._pendingStates = []; this._ready = new Promise((resolve) => { this.setReady = resolve; }); this._log = logger; } values() { return this._queue; } append(state2, setReady = true, atStart = false) { var _a, _b; if (state2 && USE_INVOKE_AFTER_WITH.has(state2.request.className)) { if (atStart) { for (let i = 0; i < this._queue.length; i++) { if (USE_INVOKE_AFTER_WITH.has((_a = this._queue[i]) === null || _a === void 0 ? void 0 : _a.request.className)) { this._queue[i].after = state2; break; } } } else { for (let i = this._queue.length - 1; i >= 0; i--) { if (USE_INVOKE_AFTER_WITH.has((_b = this._queue[i]) === null || _b === void 0 ? void 0 : _b.request.className)) { state2.after = this._queue[i]; break; } } } } if (atStart) { this._queue.unshift(state2); } else { this._queue.push(state2); } if (setReady && this.setReady) { this.setReady(true); } if (state2 && state2.request.CONSTRUCTOR_ID !== 1658238041) { this._pendingStates.push(state2); state2.promise.catch((err) => { }).finally(() => { this._pendingStates = this._pendingStates.filter((s) => s !== state2); }); } } prepend(states) { states.reverse().forEach((state2) => { this.append(state2, false, true); }); if (this.setReady) { this.setReady(true); } } extend(states) { states.forEach((state2) => { this.append(state2, false); }); if (this.setReady) { this.setReady(true); } } clear() { this._queue = []; this.append(void 0); } async wait() { if (!this._queue.length) { this._ready = new Promise((resolve) => { this.setReady = resolve; }); await this._ready; } } async get() { if (!this._queue[this._queue.length - 1]) { this._queue = this._queue.filter(Boolean); return void 0; } let data; let buffer = new BinaryWriter_1.BinaryWriter(Buffer.alloc(0)); const batch = []; let size = 0; while (this._queue.length && batch.length <= core_1.MessageContainer.MAXIMUM_LENGTH) { const state2 = this._queue.shift(); if (!state2) { continue; } size += state2.data.length + core_2.TLMessage.SIZE_OVERHEAD; if (size <= core_1.MessageContainer.MAXIMUM_SIZE) { let afterId; if (state2.after) { afterId = state2.after.msgId; } if (state2.after) { afterId = state2.after.msgId; } state2.msgId = await this._state.writeDataAsMessage(buffer, state2.data, state2.request.classType === "request", afterId); this._log.debug(`Assigned msgId = ${state2.msgId} to ${state2.request.className || state2.request.constructor.name}`); batch.push(state2); continue; } if (batch.length) { this._queue.unshift(state2); break; } this._log.warn(`Message payload for ${state2.request.className || state2.request.constructor.name} is too long ${state2.data.length} and cannot be sent`); state2.promise.reject("Request Payload is too big"); size = 0; } if (!batch.length) { return null; } if (batch.length > 1) { const b = Buffer.alloc(8); b.writeUInt32LE(core_1.MessageContainer.CONSTRUCTOR_ID, 0); b.writeInt32LE(batch.length, 4); data = Buffer.concat([b, buffer.getValue()]); buffer = new BinaryWriter_1.BinaryWriter(Buffer.alloc(0)); const containerId = await this._state.writeDataAsMessage(buffer, data, false); for (const s of batch) { s.containerId = containerId; } } data = buffer.getValue(); return { batch, data }; } }; exports2.MessagePacker = MessagePacker; } }); // node_modules/telegram/extensions/AsyncQueue.js var require_AsyncQueue = __commonJS({ "node_modules/telegram/extensions/AsyncQueue.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.AsyncQueue = void 0; var AsyncQueue = class { constructor() { this._queue = []; this.canPush = true; this.resolvePush = (value) => { }; this.resolveGet = (value) => { }; this.canGet = new Promise((resolve) => { this.resolveGet = resolve; }); } async push(value) { await this.canPush; this._queue.push(value); this.resolveGet(true); this.canPush = new Promise((resolve) => { this.resolvePush = resolve; }); } async pop() { await this.canGet; const returned = this._queue.pop(); this.resolvePush(true); this.canGet = new Promise((resolve) => { this.resolveGet = resolve; }); return returned; } }; exports2.AsyncQueue = AsyncQueue; } }); // node_modules/telegram/extensions/index.js var require_extensions = __commonJS({ "node_modules/telegram/extensions/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.AsyncQueue = exports2.MessagePacker = exports2.PromisedNetSockets = exports2.PromisedWebSockets = exports2.BinaryReader = exports2.BinaryWriter = exports2.Logger = void 0; var Logger_1 = require_Logger(); Object.defineProperty(exports2, "Logger", { enumerable: true, get: function() { return Logger_1.Logger; } }); var BinaryWriter_1 = require_BinaryWriter(); Object.defineProperty(exports2, "BinaryWriter", { enumerable: true, get: function() { return BinaryWriter_1.BinaryWriter; } }); var BinaryReader_1 = require_BinaryReader(); Object.defineProperty(exports2, "BinaryReader", { enumerable: true, get: function() { return BinaryReader_1.BinaryReader; } }); var PromisedWebSockets_1 = require_PromisedWebSockets(); Object.defineProperty(exports2, "PromisedWebSockets", { enumerable: true, get: function() { return PromisedWebSockets_1.PromisedWebSockets; } }); var PromisedNetSockets_1 = require_PromisedNetSockets(); Object.defineProperty(exports2, "PromisedNetSockets", { enumerable: true, get: function() { return PromisedNetSockets_1.PromisedNetSockets; } }); var MessagePacker_1 = require_MessagePacker(); Object.defineProperty(exports2, "MessagePacker", { enumerable: true, get: function() { return MessagePacker_1.MessagePacker; } }); var AsyncQueue_1 = require_AsyncQueue(); Object.defineProperty(exports2, "AsyncQueue", { enumerable: true, get: function() { return AsyncQueue_1.AsyncQueue; } }); } }); // node_modules/telegram/network/connection/Connection.js var require_Connection = __commonJS({ "node_modules/telegram/network/connection/Connection.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ObfuscatedConnection = exports2.PacketCodec = exports2.Connection = void 0; var extensions_1 = require_extensions(); var Connection = class { constructor({ ip, port, dcId, loggers, proxy, socket, testServers }) { this._ip = ip; this._port = port; this._dcId = dcId; this._log = loggers; this._proxy = proxy; this._connected = false; this._sendTask = void 0; this._recvTask = void 0; this._codec = void 0; this._obfuscation = void 0; this._sendArray = new extensions_1.AsyncQueue(); this._recvArray = new extensions_1.AsyncQueue(); this.socket = new socket(proxy); this._testServers = testServers; } async _connect() { this._log.debug("Connecting"); this._codec = new this.PacketCodecClass(this); await this.socket.connect(this._port, this._ip, this._testServers); this._log.debug("Finished connecting"); await this._initConn(); } async connect() { await this._connect(); this._connected = true; if (!this._sendTask) { this._sendTask = this._sendLoop(); } this._recvTask = this._recvLoop(); } async disconnect() { if (!this._connected) { return; } this._connected = false; void this._recvArray.push(void 0); await this.socket.close(); } async send(data) { if (!this._connected) { throw new Error("Not connected"); } await this._sendArray.push(data); } async recv() { while (this._connected) { const result = await this._recvArray.pop(); if (result) { return result; } } throw new Error("Not connected"); } async _sendLoop() { try { while (this._connected) { const data = await this._sendArray.pop(); if (!data) { this._sendTask = void 0; return; } await this._send(data); } } catch (e) { this._log.info("The server closed the connection while sending"); } } isConnected() { return this._connected; } async _recvLoop() { let data; while (this._connected) { try { data = await this._recv(); if (!data) { throw new Error("no data received"); } } catch (e) { this._log.info("connection closed"); this.disconnect(); return; } await this._recvArray.push(data); } } async _initConn() { if (this._codec.tag) { await this.socket.write(this._codec.tag); } } async _send(data) { const encodedPacket = this._codec.encodePacket(data); this.socket.write(encodedPacket); } async _recv() { return await this._codec.readPacket(this.socket); } toString() { return `${this._ip}:${this._port}/${this.constructor.name.replace("Connection", "")}`; } }; exports2.Connection = Connection; var ObfuscatedConnection = class extends Connection { constructor() { super(...arguments); this.ObfuscatedIO = void 0; } async _initConn() { this._obfuscation = new this.ObfuscatedIO(this); await this._obfuscation.initHeader(); this.socket.write(this._obfuscation.header); } async _send(data) { this._obfuscation.write(this._codec.encodePacket(data)); } async _recv() { return await this._codec.readPacket(this._obfuscation); } }; exports2.ObfuscatedConnection = ObfuscatedConnection; var PacketCodec = class { constructor(connection) { this._conn = connection; } encodePacket(data) { throw new Error("Not Implemented"); } async readPacket(reader) { throw new Error("Not Implemented"); } }; exports2.PacketCodec = PacketCodec; } }); // node_modules/telegram/network/connection/TCPFull.js var require_TCPFull = __commonJS({ "node_modules/telegram/network/connection/TCPFull.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ConnectionTCPFull = exports2.FullPacketCodec = void 0; var Connection_1 = require_Connection(); var Helpers_1 = require_Helpers(); var errors_1 = require_errors(); var FullPacketCodec = class extends Connection_1.PacketCodec { constructor(connection) { super(connection); this._sendCounter = 0; } encodePacket(data) { const length = data.length + 12; const e = Buffer.alloc(8); e.writeInt32LE(length, 0); e.writeInt32LE(this._sendCounter, 4); data = Buffer.concat([e, data]); const crc = Buffer.alloc(4); crc.writeUInt32LE((0, Helpers_1.crc32)(data), 0); this._sendCounter += 1; return Buffer.concat([data, crc]); } /** * * @param reader {PromisedWebSockets} * @returns {Promise<*>} */ async readPacket(reader) { const packetLenSeq = await reader.readExactly(8); if (packetLenSeq === void 0) { return Buffer.alloc(0); } const packetLen = packetLenSeq.readInt32LE(0); if (packetLen < 0) { const body2 = await reader.readExactly(4); throw new errors_1.InvalidBufferError(body2); } let body = await reader.readExactly(packetLen - 8); const checksum = body.slice(-4).readUInt32LE(0); body = body.slice(0, -4); const validChecksum = (0, Helpers_1.crc32)(Buffer.concat([packetLenSeq, body])); if (!(validChecksum === checksum)) { throw new errors_1.InvalidChecksumError(checksum, validChecksum); } return body; } }; exports2.FullPacketCodec = FullPacketCodec; var ConnectionTCPFull = class extends Connection_1.Connection { constructor() { super(...arguments); this.PacketCodecClass = FullPacketCodec; } }; exports2.ConnectionTCPFull = ConnectionTCPFull; } }); // node_modules/telegram/network/connection/TCPAbridged.js var require_TCPAbridged = __commonJS({ "node_modules/telegram/network/connection/TCPAbridged.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ConnectionTCPAbridged = exports2.AbridgedPacketCodec = void 0; var Helpers_1 = require_Helpers(); var Connection_1 = require_Connection(); var big_integer_1 = __importDefault2(require_BigInteger()); var AbridgedPacketCodec = class _AbridgedPacketCodec extends Connection_1.PacketCodec { constructor(props) { super(props); this.tag = _AbridgedPacketCodec.tag; this.obfuscateTag = _AbridgedPacketCodec.obfuscateTag; } encodePacket(data) { let length = data.length >> 2; let temp; if (length < 127) { const b = Buffer.alloc(1); b.writeUInt8(length, 0); temp = b; } else { temp = Buffer.concat([ Buffer.from("7f", "hex"), (0, Helpers_1.readBufferFromBigInt)((0, big_integer_1.default)(length), 3) ]); } return Buffer.concat([temp, data]); } async readPacket(reader) { const readData = await reader.read(1); let length = readData[0]; if (length >= 127) { length = Buffer.concat([ await reader.read(3), Buffer.alloc(1) ]).readInt32LE(0); } return reader.read(length << 2); } }; exports2.AbridgedPacketCodec = AbridgedPacketCodec; AbridgedPacketCodec.tag = Buffer.from("ef", "hex"); AbridgedPacketCodec.obfuscateTag = Buffer.from("efefefef", "hex"); var ConnectionTCPAbridged = class extends Connection_1.Connection { constructor() { super(...arguments); this.PacketCodecClass = AbridgedPacketCodec; } }; exports2.ConnectionTCPAbridged = ConnectionTCPAbridged; } }); // node_modules/@cryptography/aes/dist/cjs/aes.min.js var require_aes_min = __commonJS({ "node_modules/@cryptography/aes/dist/cjs/aes.min.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); var t = new Uint8Array(256); var e = new Uint8Array(256); var r = new Uint32Array(256); var n = new Uint32Array(256); var i = new Uint32Array(256); var h = new Uint32Array(256); var o = new Uint32Array(256); var s = new Uint32Array(256); var c = new Uint32Array(256); var y = new Uint32Array(256); function a(t2) { if (t2 instanceof Uint32Array) return t2; if ("string" == typeof t2) { if (t2.length % 4 != 0) for (var e2 = t2.length % 4; e2 <= 4; e2++) t2 += "\0x00"; var r3 = new Uint32Array(t2.length / 4); for (e2 = 0; e2 < t2.length; e2 += 4) r3[e2 / 4] = (i2 = e2, (n2 = t2).charCodeAt(i2) << 24 ^ n2.charCodeAt(i2 + 1) << 16 ^ n2.charCodeAt(i2 + 2) << 8 ^ n2.charCodeAt(i2 + 3)); return r3; } var n2, i2; if (t2 instanceof Uint8Array) { for (r3 = new Uint32Array(t2.length / 4), e2 = 0; e2 < t2.length; e2 += 4) r3[e2 / 4] = t2[e2] << 24 ^ t2[e2 + 1] << 16 ^ t2[e2 + 2] << 8 ^ t2[e2 + 3]; return r3; } throw new Error("Unable to create 32-bit words"); } function l(t2, e2, r3) { void 0 === r3 && (r3 = t2); for (var n2 = 0; n2 < t2.length; n2++) r3[n2] = t2[n2] ^ e2[n2]; } !(function() { for (var a2, l2, f2, u2, g2, p = new Uint8Array(256), v = new Uint8Array(256), w = 0, A = 0, d = 0; d < 256; d++) p[d] = d << 1 ^ 283 * (d >> 7), v[p[d] ^ d] = d; for (; !t[w]; w ^= a2 || 1) f2 = (f2 = A ^ A << 1 ^ A << 2 ^ A << 3 ^ A << 4) >> 8 ^ 255 & f2 ^ 99, t[w] = f2, e[f2] = w, g2 = 16843009 * p[l2 = p[a2 = p[w]]] ^ 65537 * l2 ^ 257 * a2 ^ 16843008 * w, u2 = 257 * p[f2] ^ 16843008 * f2, r[w] = u2 = u2 << 24 ^ u2 >>> 8, n[w] = u2 = u2 << 24 ^ u2 >>> 8, i[w] = u2 = u2 << 24 ^ u2 >>> 8, h[w] = u2 = u2 << 24 ^ u2 >>> 8, o[f2] = g2 = g2 << 24 ^ g2 >>> 8, s[f2] = g2 = g2 << 24 ^ g2 >>> 8, c[f2] = g2 = g2 << 24 ^ g2 >>> 8, y[f2] = g2 = g2 << 24 ^ g2 >>> 8, A = v[A] || 1; })(); var f = (function() { function l2(e2) { var r3 = a(e2); if (4 !== r3.length && 6 !== r3.length && 8 !== r3.length) throw new Error("Invalid key size"); this.encKey = new Uint32Array(4 * r3.length + 28), this.decKey = new Uint32Array(4 * r3.length + 28), this.encKey.set(r3); for (var n2, i2 = 1, h2 = r3.length; h2 < 4 * r3.length + 28; h2++) n2 = this.encKey[h2 - 1], (h2 % r3.length == 0 || 8 === r3.length && h2 % r3.length == 4) && (n2 = t[n2 >>> 24] << 24 ^ t[n2 >> 16 & 255] << 16 ^ t[n2 >> 8 & 255] << 8 ^ t[255 & n2], h2 % r3.length == 0 && (n2 = n2 << 8 ^ n2 >>> 24 ^ i2 << 24, i2 = i2 << 1 ^ 283 * (i2 >> 7))), this.encKey[h2] = this.encKey[h2 - r3.length] ^ n2; for (var l3 = 0; h2; l3++, h2--) n2 = this.encKey[3 & l3 ? h2 : h2 - 4], this.decKey[l3] = h2 <= 4 || l3 < 4 ? n2 : o[t[n2 >>> 24]] ^ s[t[n2 >> 16 & 255]] ^ c[t[n2 >> 8 & 255]] ^ y[t[255 & n2]]; } return l2.prototype.encrypt = function(e2) { for (var o2, s2, c2, y2 = a(e2), l3 = new Uint32Array(4), f2 = y2[0] ^ this.encKey[0], u2 = y2[1] ^ this.encKey[1], g2 = y2[2] ^ this.encKey[2], p = y2[3] ^ this.encKey[3], v = this.encKey.length / 4 - 2, w = 4, A = 0; A < v; A++) o2 = r[f2 >>> 24] ^ n[u2 >> 16 & 255] ^ i[g2 >> 8 & 255] ^ h[255 & p] ^ this.encKey[w], s2 = r[u2 >>> 24] ^ n[g2 >> 16 & 255] ^ i[p >> 8 & 255] ^ h[255 & f2] ^ this.encKey[w + 1], c2 = r[g2 >>> 24] ^ n[p >> 16 & 255] ^ i[f2 >> 8 & 255] ^ h[255 & u2] ^ this.encKey[w + 2], p = r[p >>> 24] ^ n[f2 >> 16 & 255] ^ i[u2 >> 8 & 255] ^ h[255 & g2] ^ this.encKey[w + 3], f2 = o2, u2 = s2, g2 = c2, w += 4; for (A = 0; A < 4; A++) l3[A] = t[f2 >>> 24] << 24 ^ t[u2 >> 16 & 255] << 16 ^ t[g2 >> 8 & 255] << 8 ^ t[255 & p] ^ this.encKey[w++], o2 = f2, f2 = u2, u2 = g2, g2 = p, p = o2; return l3; }, l2.prototype.decrypt = function(t2) { for (var r3, n2, i2, h2 = a(t2), l3 = new Uint32Array(4), f2 = h2[0] ^ this.decKey[0], u2 = h2[3] ^ this.decKey[1], g2 = h2[2] ^ this.decKey[2], p = h2[1] ^ this.decKey[3], v = this.decKey.length / 4 - 2, w = 4, A = 0; A < v; A++) r3 = o[f2 >>> 24] ^ s[u2 >> 16 & 255] ^ c[g2 >> 8 & 255] ^ y[255 & p] ^ this.decKey[w], n2 = o[u2 >>> 24] ^ s[g2 >> 16 & 255] ^ c[p >> 8 & 255] ^ y[255 & f2] ^ this.decKey[w + 1], i2 = o[g2 >>> 24] ^ s[p >> 16 & 255] ^ c[f2 >> 8 & 255] ^ y[255 & u2] ^ this.decKey[w + 2], p = o[p >>> 24] ^ s[f2 >> 16 & 255] ^ c[u2 >> 8 & 255] ^ y[255 & g2] ^ this.decKey[w + 3], f2 = r3, u2 = n2, g2 = i2, w += 4; for (A = 0; A < 4; A++) l3[3 & -A] = e[f2 >>> 24] << 24 ^ e[u2 >> 16 & 255] << 16 ^ e[g2 >> 8 & 255] << 8 ^ e[255 & p] ^ this.decKey[w++], r3 = f2, f2 = u2, u2 = g2, g2 = p, p = r3; return l3; }, l2; })(); var u = (function() { function t2(t3, e2, r3) { void 0 === r3 && (r3 = 16), this.key = a(t3), this.iv = a(e2), this.cipher = new f(t3), this.blockSize = r3 / 4; } return t2.prototype.encrypt = function(t3, e2) { for (var r3 = a(t3), n2 = e2 || new Uint32Array(r3.length), i2 = this.iv.subarray(this.blockSize, this.iv.length), h2 = this.iv.subarray(0, this.blockSize), o2 = new Uint32Array(this.blockSize), s2 = 0; s2 < r3.length; s2 += this.blockSize) { var c2 = r3.subarray(s2, s2 + this.blockSize); l(c2, h2, o2); var y2 = this.cipher.encrypt(o2); l(y2, i2), i2 = c2, h2 = y2; for (var f2 = s2, u2 = 0; f2 < r3.length && u2 < 4; f2++, u2++) n2[f2] = y2[u2]; } return n2; }, t2.prototype.decrypt = function(t3, e2) { for (var r3 = a(t3), n2 = e2 || new Uint32Array(r3.length), i2 = this.iv.subarray(this.blockSize, this.iv.length), h2 = this.iv.subarray(0, this.blockSize), o2 = new Uint32Array(this.blockSize), s2 = 0; s2 < n2.length; s2 += this.blockSize) { var c2 = r3.subarray(s2, s2 + this.blockSize); l(c2, i2, o2); var y2 = this.cipher.decrypt(o2); l(y2, h2), h2 = c2, i2 = y2; for (var f2 = s2, u2 = 0; f2 < n2.length && u2 < 4; f2++, u2++) n2[f2] = y2[u2]; } return n2; }, t2; })(); var g = (function() { function t2(t3, e2, r3) { if (void 0 === r3 && (r3 = 16), this.offset = 0, this.key = a(t3), this.counter = a(e2), this.cipher = new f(t3), this.blockSize = r3 / 4, 4 !== this.counter.length) throw new Error("AES-CTR mode counter must be 16 bytes length"); } return t2.prototype.encrypt = function(t3, e2) { for (var r3 = a(t3), n2 = e2 || new Uint32Array(r3.length), i2 = this.offset, h2 = 0; h2 < r3.length; h2 += this.blockSize) { for (var o2 = this.cipher.encrypt(this.counter), s2 = h2, c2 = i2; s2 < r3.length && c2 < this.blockSize; s2++, c2++) n2[s2] = o2[c2] ^ r3[s2]; r3.length - h2 >= this.blockSize && this.incrementCounter(), i2 && (h2 -= i2, i2 = 0); } return this.offset = (this.offset + r3.length % 4) % 4, n2; }, t2.prototype.decrypt = function(t3, e2) { return this.encrypt(t3, e2); }, t2.prototype.incrementCounter = function() { for (var t3 = this.counter.length - 1; t3 >= 0 && !(++this.counter[t3] < 4294967295); t3--) ; }, t2; })(); exports2.CTR = g, exports2.IGE = u, exports2.default = f; } }); // node_modules/telegram/crypto/converters.js var require_converters = __commonJS({ "node_modules/telegram/crypto/converters.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ab2i = exports2.i2ab = exports2.isBigEndian = void 0; exports2.i2abLow = i2abLow; exports2.i2abBig = i2abBig; exports2.ab2iLow = ab2iLow; exports2.ab2iBig = ab2iBig; function i2abLow(buf) { const uint8 = new Uint8Array(buf.length * 4); let i = 0; for (let j = 0; j < buf.length; j++) { const int = buf[j]; uint8[i++] = int >>> 24; uint8[i++] = int >> 16 & 255; uint8[i++] = int >> 8 & 255; uint8[i++] = int & 255; } return uint8.buffer; } function i2abBig(buf) { return buf.buffer; } function ab2iLow(ab) { const uint8 = new Uint8Array(ab); const buf = new Uint32Array(uint8.length / 4); for (let i = 0; i < uint8.length; i += 4) { buf[i / 4] = uint8[i] << 24 ^ uint8[i + 1] << 16 ^ uint8[i + 2] << 8 ^ uint8[i + 3]; } return buf; } function ab2iBig(ab) { return new Uint32Array(ab); } exports2.isBigEndian = new Uint8Array(new Uint32Array([16909060]))[0] === 1; exports2.i2ab = exports2.isBigEndian ? i2abBig : i2abLow; exports2.ab2i = exports2.isBigEndian ? ab2iBig : ab2iLow; } }); // node_modules/telegram/crypto/words.js var require_words = __commonJS({ "node_modules/telegram/crypto/words.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.s2i = s2i; exports2.getWords = getWords; exports2.xor = xor; function s2i(str, pos) { return str.charCodeAt(pos) << 24 ^ str.charCodeAt(pos + 1) << 16 ^ str.charCodeAt(pos + 2) << 8 ^ str.charCodeAt(pos + 3); } function getWords(key) { if (key instanceof Uint32Array) { return key; } if (typeof key === "string") { if (key.length % 4 !== 0) for (let i = key.length % 4; i <= 4; i++) key += "\0x00"; const buf = new Uint32Array(key.length / 4); for (let i = 0; i < key.length; i += 4) buf[i / 4] = s2i(key, i); return buf; } if (key instanceof Uint8Array) { const buf = new Uint32Array(key.length / 4); for (let i = 0; i < key.length; i += 4) { buf[i / 4] = key[i] << 24 ^ key[i + 1] << 16 ^ key[i + 2] << 8 ^ key[i + 3]; } return buf; } throw new Error("Unable to create 32-bit words"); } function xor(left, right, to = left) { for (let i = 0; i < left.length; i++) to[i] = left[i] ^ right[i]; } } }); // node_modules/telegram/crypto/crypto.js var require_crypto = __commonJS({ "node_modules/telegram/crypto/crypto.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Hash = exports2.CTR = exports2.Counter = void 0; exports2.createDecipheriv = createDecipheriv; exports2.createCipheriv = createCipheriv; exports2.randomBytes = randomBytes; exports2.pbkdf2Sync = pbkdf2Sync; exports2.createHash = createHash; var aes_1 = __importDefault2(require_aes_min()); var converters_1 = require_converters(); var words_1 = require_words(); var Counter = class { constructor(initialValue) { this._counter = Buffer.from(initialValue); } increment() { for (let i = 15; i >= 0; i--) { if (this._counter[i] === 255) { this._counter[i] = 0; } else { this._counter[i]++; break; } } } }; exports2.Counter = Counter; var CTR = class { constructor(key, counter) { if (!(counter instanceof Counter)) { counter = new Counter(counter); } this._counter = counter; this._remainingCounter = void 0; this._remainingCounterIndex = 16; this._aes = new aes_1.default((0, words_1.getWords)(key)); } update(plainText) { return this.encrypt(plainText); } encrypt(plainText) { const encrypted = Buffer.from(plainText); for (let i = 0; i < encrypted.length; i++) { if (this._remainingCounterIndex === 16) { this._remainingCounter = Buffer.from((0, converters_1.i2ab)(this._aes.encrypt((0, converters_1.ab2i)(this._counter._counter)))); this._remainingCounterIndex = 0; this._counter.increment(); } if (this._remainingCounter) { encrypted[i] ^= this._remainingCounter[this._remainingCounterIndex++]; } } return encrypted; } }; exports2.CTR = CTR; function createDecipheriv(algorithm, key, iv) { if (algorithm.includes("ECB")) { throw new Error("Not supported"); } else { return new CTR(key, iv); } } function createCipheriv(algorithm, key, iv) { if (algorithm.includes("ECB")) { throw new Error("Not supported"); } else { return new CTR(key, iv); } } function randomBytes(count) { const bytes = new Uint8Array(count); crypto.getRandomValues(bytes); return bytes; } var Hash = class { constructor(algorithm) { this.algorithm = algorithm; } update(data) { this.data = new Uint8Array(data); } async digest() { if (this.data) { if (this.algorithm === "sha1") { return Buffer.from(await self.crypto.subtle.digest("SHA-1", this.data)); } else if (this.algorithm === "sha256") { return Buffer.from(await self.crypto.subtle.digest("SHA-256", this.data)); } } return Buffer.alloc(0); } }; exports2.Hash = Hash; async function pbkdf2Sync(password, salt, iterations, ...args) { const passwordKey = await crypto.subtle.importKey("raw", password, { name: "PBKDF2" }, false, ["deriveBits"]); return Buffer.from(await crypto.subtle.deriveBits({ name: "PBKDF2", hash: "SHA-512", salt, iterations }, passwordKey, 512)); } function createHash(algorithm) { return new Hash(algorithm); } } }); // node_modules/telegram/crypto/CTR.js var require_CTR = __commonJS({ "node_modules/telegram/crypto/CTR.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.CTR = void 0; var crypto4 = __importStar2(require_crypto()); var CTR = class { constructor(key, iv) { if (!Buffer.isBuffer(key) || !Buffer.isBuffer(iv) || iv.length !== 16) { throw new Error("Key and iv need to be a buffer"); } this.cipher = crypto4.createCipheriv("AES-256-CTR", key, iv); } encrypt(data) { return Buffer.from(this.cipher.update(data)); } }; exports2.CTR = CTR; } }); // node_modules/telegram/network/connection/TCPObfuscated.js var require_TCPObfuscated = __commonJS({ "node_modules/telegram/network/connection/TCPObfuscated.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ConnectionTCPObfuscated = void 0; var Helpers_1 = require_Helpers(); var Connection_1 = require_Connection(); var TCPAbridged_1 = require_TCPAbridged(); var CTR_1 = require_CTR(); var ObfuscatedIO = class { constructor(connection) { this.header = void 0; this.connection = connection.socket; this._packetClass = connection.PacketCodecClass; } async initHeader() { const keywords = [ Buffer.from("50567247", "hex"), Buffer.from("474554", "hex"), Buffer.from("504f5354", "hex"), Buffer.from("eeeeeeee", "hex") ]; let random; while (true) { random = (0, Helpers_1.generateRandomBytes)(64); if (random[0] !== 239 && !random.slice(4, 8).equals(Buffer.alloc(4))) { let ok = true; for (const key of keywords) { if (key.equals(random.slice(0, 4))) { ok = false; break; } } if (ok) { break; } } } random = random.toJSON().data; const randomReversed = Buffer.from(random.slice(8, 56)).reverse(); const encryptKey = Buffer.from(random.slice(8, 40)); const encryptIv = Buffer.from(random.slice(40, 56)); const decryptKey = Buffer.from(randomReversed.slice(0, 32)); const decryptIv = Buffer.from(randomReversed.slice(32, 48)); const encryptor = new CTR_1.CTR(encryptKey, encryptIv); const decryptor = new CTR_1.CTR(decryptKey, decryptIv); random = Buffer.concat([ Buffer.from(random.slice(0, 56)), this._packetClass.obfuscateTag, Buffer.from(random.slice(60)) ]); random = Buffer.concat([ Buffer.from(random.slice(0, 56)), Buffer.from(encryptor.encrypt(random).slice(56, 64)), Buffer.from(random.slice(64)) ]); this.header = random; this._encrypt = encryptor; this._decrypt = decryptor; } async read(n) { const data = await this.connection.readExactly(n); return this._decrypt.encrypt(data); } write(data) { this.connection.write(this._encrypt.encrypt(data)); } }; var ConnectionTCPObfuscated = class extends Connection_1.ObfuscatedConnection { constructor() { super(...arguments); this.ObfuscatedIO = ObfuscatedIO; this.PacketCodecClass = TCPAbridged_1.AbridgedPacketCodec; } }; exports2.ConnectionTCPObfuscated = ConnectionTCPObfuscated; } }); // node_modules/telegram/network/connection/index.js var require_connection = __commonJS({ "node_modules/telegram/network/connection/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ConnectionTCPObfuscated = exports2.ConnectionTCPAbridged = exports2.ConnectionTCPFull = exports2.Connection = void 0; var Connection_1 = require_Connection(); Object.defineProperty(exports2, "Connection", { enumerable: true, get: function() { return Connection_1.Connection; } }); var TCPFull_1 = require_TCPFull(); Object.defineProperty(exports2, "ConnectionTCPFull", { enumerable: true, get: function() { return TCPFull_1.ConnectionTCPFull; } }); var TCPAbridged_1 = require_TCPAbridged(); Object.defineProperty(exports2, "ConnectionTCPAbridged", { enumerable: true, get: function() { return TCPAbridged_1.ConnectionTCPAbridged; } }); var TCPObfuscated_1 = require_TCPObfuscated(); Object.defineProperty(exports2, "ConnectionTCPObfuscated", { enumerable: true, get: function() { return TCPObfuscated_1.ConnectionTCPObfuscated; } }); } }); // node_modules/telegram/sessions/Abstract.js var require_Abstract = __commonJS({ "node_modules/telegram/sessions/Abstract.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Session = void 0; var Session = class { }; exports2.Session = Session; } }); // node_modules/telegram/sessions/Memory.js var require_Memory = __commonJS({ "node_modules/telegram/sessions/Memory.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MemorySession = void 0; var Abstract_1 = require_Abstract(); var tl_1 = require_tl(); var big_integer_1 = __importDefault2(require_BigInteger()); var Utils_1 = require_Utils(); var Helpers_1 = require_Helpers(); var __1 = require_telegram(); var MemorySession = class extends Abstract_1.Session { constructor() { super(); this._serverAddress = void 0; this._dcId = 0; this._port = void 0; this._takeoutId = void 0; this._entities = /* @__PURE__ */ new Set(); this._updateStates = {}; } setDC(dcId, serverAddress, port) { this._dcId = dcId | 0; this._serverAddress = serverAddress; this._port = port; } get dcId() { return this._dcId; } get serverAddress() { return this._serverAddress; } get port() { return this._port; } get authKey() { return this._authKey; } set authKey(value) { this._authKey = value; } get takeoutId() { return this._takeoutId; } set takeoutId(value) { this._takeoutId = value; } getAuthKey(dcId) { if (dcId && dcId !== this.dcId) { return void 0; } return this.authKey; } setAuthKey(authKey, dcId) { if (dcId && dcId !== this.dcId) { return void 0; } this.authKey = authKey; } close() { } save() { } async load() { } delete() { } _entityValuesToRow(id, hash2, username, phone, name) { return [id, hash2, username, phone, name]; } _entityToRow(e) { if (!(e.classType === "constructor")) { return; } let p; let markedId; try { p = (0, Utils_1.getInputPeer)(e, false); markedId = (0, Utils_1.getPeerId)(p); } catch (e2) { return; } let pHash; if (p instanceof tl_1.Api.InputPeerUser || p instanceof tl_1.Api.InputPeerChannel) { pHash = p.accessHash; } else if (p instanceof tl_1.Api.InputPeerChat) { pHash = big_integer_1.default.zero; } else { return; } let username = e.username; if (username) { username = username.toLowerCase(); } const phone = e.phone; const name = (0, Utils_1.getDisplayName)(e); return this._entityValuesToRow(markedId, pHash, username, phone, name); } _entitiesToRows(tlo) { let entities2 = []; if (!(tlo.classType === "constructor") && (0, Helpers_1.isArrayLike)(tlo)) { entities2 = tlo; } else { if (typeof tlo === "object") { if ("user" in tlo) { entities2.push(tlo.user); } if ("chat" in tlo) { entities2.push(tlo.chat); } if ("channel" in tlo) { entities2.push(tlo.channel); } if ("chats" in tlo && (0, Helpers_1.isArrayLike)(tlo.chats)) { entities2 = entities2.concat(tlo.chats); } if ("users" in tlo && (0, Helpers_1.isArrayLike)(tlo.users)) { entities2 = entities2.concat(tlo.users); } } } const rows = []; for (const e of entities2) { const row = this._entityToRow(e); if (row) { rows.push(row); } } return rows; } processEntities(tlo) { const entitiesSet = this._entitiesToRows(tlo); for (const e of entitiesSet) { this._entities.add(e); } } getEntityRowsByPhone(phone) { for (const e of this._entities) { if (e[3] === phone) { return [e[0], e[1]]; } } } getEntityRowsByUsername(username) { for (const e of this._entities) { if (e[2] === username) { return [e[0], e[1]]; } } } getEntityRowsByName(name) { for (const e of this._entities) { if (e[4] === name) { return [e[0], e[1]]; } } } getEntityRowsById(id, exact = true) { if (exact) { for (const e of this._entities) { if (e[0] === id) { return [e[0], e[1]]; } } } else { const ids = [ __1.utils.getPeerId(new tl_1.Api.PeerUser({ userId: (0, Helpers_1.returnBigInt)(id) })), __1.utils.getPeerId(new tl_1.Api.PeerChat({ chatId: (0, Helpers_1.returnBigInt)(id) })), __1.utils.getPeerId(new tl_1.Api.PeerChannel({ channelId: (0, Helpers_1.returnBigInt)(id) })) ]; for (const e of this._entities) { if (ids.includes(e[0])) { return [e[0], e[1]]; } } } } getInputEntity(key) { let exact; if (typeof key === "object" && !big_integer_1.default.isInstance(key) && key.SUBCLASS_OF_ID) { if (key.SUBCLASS_OF_ID == 3374092470 || key.SUBCLASS_OF_ID == 3865689926 || key.SUBCLASS_OF_ID == 1089602301) { return key; } return __1.utils.getInputPeer(key); } else { if (typeof key === "object") { key = __1.utils.getPeerId(key); exact = true; } else { exact = false; } } if (big_integer_1.default.isInstance(key) || typeof key == "bigint" || typeof key == "number") { key = key.toString(); } let result = void 0; if (typeof key === "string") { const phone = __1.utils.parsePhone(key); if (phone) { result = this.getEntityRowsByPhone(phone); } else { const { username, isInvite } = __1.utils.parseUsername(key); if (username && !isInvite) { result = this.getEntityRowsByUsername(username); } } if (!result) { const id = __1.utils.parseID(key); if (id) { result = this.getEntityRowsById(id, exact); } } if (!result) { result = this.getEntityRowsByName(key); } } if (result) { let entityId = result[0]; const entityHash = (0, big_integer_1.default)(result[1]); const resolved = __1.utils.resolveId((0, Helpers_1.returnBigInt)(entityId)); entityId = resolved[0]; const kind = resolved[1]; if (kind === tl_1.Api.PeerUser) { return new tl_1.Api.InputPeerUser({ userId: entityId, accessHash: entityHash }); } else if (kind === tl_1.Api.PeerChat) { return new tl_1.Api.InputPeerChat({ chatId: entityId }); } else if (kind === tl_1.Api.PeerChannel) { return new tl_1.Api.InputPeerChannel({ channelId: entityId, accessHash: entityHash }); } } else { throw new Error("Could not find input entity with key " + key); } throw new Error("Could not find input entity with key " + key); } }; exports2.MemorySession = MemorySession; } }); // node_modules/telegram/crypto/AuthKey.js var require_AuthKey = __commonJS({ "node_modules/telegram/crypto/AuthKey.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.AuthKey = void 0; var Helpers_1 = require_Helpers(); var extensions_1 = require_extensions(); var Helpers_2 = require_Helpers(); var AuthKey = class _AuthKey { constructor(value, hash2) { if (!hash2 || !value) { return; } this._key = value; this._hash = hash2; const reader = new extensions_1.BinaryReader(hash2); this.auxHash = reader.readLong(false); reader.read(4); this.keyId = reader.readLong(false); } async setKey(value) { if (!value) { this._key = this.auxHash = this.keyId = this._hash = void 0; return; } if (value instanceof _AuthKey) { this._key = value._key; this.auxHash = value.auxHash; this.keyId = value.keyId; this._hash = value._hash; return; } this._key = value; this._hash = await (0, Helpers_1.sha1)(this._key); const reader = new extensions_1.BinaryReader(this._hash); this.auxHash = reader.readLong(false); reader.read(4); this.keyId = reader.readLong(false); } async waitForKey() { while (!this.keyId) { await (0, Helpers_2.sleep)(20); } } getKey() { return this._key; } // TODO : This doesn't really fit here, it's only used in authentication /** * Calculates the new nonce hash based on the current class fields' values * @param newNonce * @param number * @returns {bigInt.BigInteger} */ async calcNewNonceHash(newNonce, number) { if (this.auxHash) { const nonce = (0, Helpers_1.toSignedLittleBuffer)(newNonce, 32); const n = Buffer.alloc(1); n.writeUInt8(number, 0); const data = Buffer.concat([ nonce, Buffer.concat([n, (0, Helpers_1.readBufferFromBigInt)(this.auxHash, 8, true)]) ]); const shaData = (await (0, Helpers_1.sha1)(data)).slice(4, 20); return (0, Helpers_1.readBigIntFromBuffer)(shaData, true, true); } throw new Error("Auth key not set"); } equals(other) { var _a; return other instanceof this.constructor && this._key && Buffer.isBuffer(other.getKey()) && ((_a = other.getKey()) === null || _a === void 0 ? void 0 : _a.equals(this._key)); } }; exports2.AuthKey = AuthKey; } }); // node_modules/telegram/sessions/StringSession.js var require_StringSession = __commonJS({ "node_modules/telegram/sessions/StringSession.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.StringSession = void 0; var Memory_1 = require_Memory(); var extensions_1 = require_extensions(); var AuthKey_1 = require_AuthKey(); var CURRENT_VERSION = "1"; var StringSession2 = class _StringSession extends Memory_1.MemorySession { /** * This session file can be easily saved and loaded as a string. According * to the initial design, it contains only the data that is necessary for * successful connection and authentication, so takeout ID is not stored. * It is thought to be used where you don't want to create any on-disk * files but would still like to be able to save and load existing sessions * by other means. * You can use custom `encode` and `decode` functions, if present: * `encode` definition must be ``function encode(value: Buffer) -> string:``. * `decode` definition must be ``function decode(value: string) -> Buffer:``. * @param session {string|null} */ constructor(session2) { super(); if (session2) { if (session2[0] !== CURRENT_VERSION) { throw new Error("Not a valid string"); } session2 = session2.slice(1); const r = _StringSession.decode(session2); const reader = new extensions_1.BinaryReader(r); this._dcId = reader.read(1).readUInt8(0); if (session2.length == 352) { const ip_v4 = reader.read(4); this._serverAddress = ip_v4[0].toString() + "." + ip_v4[1].toString() + "." + ip_v4[2].toString() + "." + ip_v4[3].toString(); } else { const serverAddressLen = reader.read(2).readInt16BE(0); if (serverAddressLen > 100) { reader.offset -= 2; this._serverAddress = reader.read(16).toString("hex").match(/.{1,4}/g).map((val) => val.replace(/^0+/, "")).join(":").replace(/0000\:/g, ":").replace(/:{2,}/g, "::"); } else { this._serverAddress = reader.read(serverAddressLen).toString(); } } this._port = reader.read(2).readInt16BE(0); this._key = reader.read(-1); } } /** * @param x {Buffer} * @returns {string} */ static encode(x) { return x.toString("base64"); } /** * @param x {string} * @returns {Buffer} */ static decode(x) { return Buffer.from(x, "base64"); } async load() { if (this._key) { this._authKey = new AuthKey_1.AuthKey(); await this._authKey.setKey(this._key); } } save() { if (!this.authKey || !this.serverAddress || !this.port) { return ""; } const key = this.authKey.getKey(); if (!key) { return ""; } const dcBuffer = Buffer.from([this.dcId]); const addressBuffer = Buffer.from(this.serverAddress); const addressLengthBuffer = Buffer.alloc(2); addressLengthBuffer.writeInt16BE(addressBuffer.length, 0); const portBuffer = Buffer.alloc(2); portBuffer.writeInt16BE(this.port, 0); return CURRENT_VERSION + _StringSession.encode(Buffer.concat([ dcBuffer, addressLengthBuffer, addressBuffer, portBuffer, key ])); } }; exports2.StringSession = StringSession2; } }); // node_modules/store2/dist/store2.js var require_store2 = __commonJS({ "node_modules/store2/dist/store2.js"(exports2, module2) { init_define_import_meta_env(); (function(window2, define2) { var _ = { version: "2.14.4", areas: {}, apis: {}, nsdelim: ".", // utilities inherit: function(api, o) { for (var p in api) { if (!o.hasOwnProperty(p)) { Object.defineProperty(o, p, Object.getOwnPropertyDescriptor(api, p)); } } return o; }, stringify: function(d, fn) { return d === void 0 || typeof d === "function" ? d + "" : JSON.stringify(d, fn || _.replace); }, parse: function(s, fn) { try { return JSON.parse(s, fn || _.revive); } catch (e) { return s; } }, // extension hooks fn: function(name, fn) { _.storeAPI[name] = fn; for (var api in _.apis) { _.apis[api][name] = fn; } }, get: function(area, key) { return area.getItem(key); }, set: function(area, key, string) { area.setItem(key, string); }, remove: function(area, key) { area.removeItem(key); }, key: function(area, i) { return area.key(i); }, length: function(area) { return area.length; }, clear: function(area) { area.clear(); }, // core functions Store: function(id, area, namespace) { var store2 = _.inherit(_.storeAPI, function(key, data, overwrite) { if (arguments.length === 0) { return store2.getAll(); } if (typeof data === "function") { return store2.transact(key, data, overwrite); } if (data !== void 0) { return store2.set(key, data, overwrite); } if (typeof key === "string" || typeof key === "number") { return store2.get(key); } if (typeof key === "function") { return store2.each(key); } if (!key) { return store2.clear(); } return store2.setAll(key, data); }); store2._id = id; try { var testKey = "__store2_test"; area.setItem(testKey, "ok"); store2._area = area; area.removeItem(testKey); } catch (e) { store2._area = _.storage("fake"); } store2._ns = namespace || ""; if (!_.areas[id]) { _.areas[id] = store2._area; } if (!_.apis[store2._ns + store2._id]) { _.apis[store2._ns + store2._id] = store2; } return store2; }, storeAPI: { // admin functions area: function(id, area) { var store2 = this[id]; if (!store2 || !store2.area) { store2 = _.Store(id, area, this._ns); if (!this[id]) { this[id] = store2; } } return store2; }, namespace: function(namespace, singleArea, delim) { delim = delim || this._delim || _.nsdelim; if (!namespace) { return this._ns ? this._ns.substring(0, this._ns.length - delim.length) : ""; } var ns = namespace, store2 = this[ns]; if (!store2 || !store2.namespace) { store2 = _.Store(this._id, this._area, this._ns + ns + delim); store2._delim = delim; if (!this[ns]) { this[ns] = store2; } if (!singleArea) { for (var name in _.areas) { store2.area(name, _.areas[name]); } } } return store2; }, isFake: function(force) { if (force) { this._real = this._area; this._area = _.storage("fake"); } else if (force === false) { this._area = this._real || this._area; } return this._area.name === "fake"; }, toString: function() { return "store" + (this._ns ? "." + this.namespace() : "") + "[" + this._id + "]"; }, // storage functions has: function(key) { if (this._area.has) { return this._area.has(this._in(key)); } return !!(this._in(key) in this._area); }, size: function() { return this.keys().length; }, each: function(fn, fill) { for (var i = 0, m = _.length(this._area); i < m; i++) { var key = this._out(_.key(this._area, i)); if (key !== void 0) { if (fn.call(this, key, this.get(key), fill) === false) { break; } } if (m > _.length(this._area)) { m--; i--; } } return fill || this; }, keys: function(fillList) { return this.each(function(k, v, list) { list.push(k); }, fillList || []); }, get: function(key, alt) { var s = _.get(this._area, this._in(key)), fn; if (typeof alt === "function") { fn = alt; alt = null; } return s !== null ? _.parse(s, fn) : alt != null ? alt : s; }, getAll: function(fillObj) { return this.each(function(k, v, all) { all[k] = v; }, fillObj || {}); }, transact: function(key, fn, alt) { var val = this.get(key, alt), ret = fn(val); this.set(key, ret === void 0 ? val : ret); return this; }, set: function(key, data, overwrite) { var d = this.get(key), replacer; if (d != null && overwrite === false) { return data; } if (typeof overwrite === "function") { replacer = overwrite; overwrite = void 0; } return _.set(this._area, this._in(key), _.stringify(data, replacer), overwrite) || d; }, setAll: function(data, overwrite) { var changed, val; for (var key in data) { val = data[key]; if (this.set(key, val, overwrite) !== val) { changed = true; } } return changed; }, add: function(key, data, replacer) { var d = this.get(key); if (d instanceof Array) { data = d.concat(data); } else if (d !== null) { var type = typeof d; if (type === typeof data && type === "object") { for (var k in data) { d[k] = data[k]; } data = d; } else { data = d + data; } } _.set(this._area, this._in(key), _.stringify(data, replacer)); return data; }, remove: function(key, alt) { var d = this.get(key, alt); _.remove(this._area, this._in(key)); return d; }, clear: function() { if (!this._ns) { _.clear(this._area); } else { this.each(function(k) { _.remove(this._area, this._in(k)); }, 1); } return this; }, clearAll: function() { var area = this._area; for (var id in _.areas) { if (_.areas.hasOwnProperty(id)) { this._area = _.areas[id]; this.clear(); } } this._area = area; return this; }, // internal use functions _in: function(k) { if (typeof k !== "string") { k = _.stringify(k); } return this._ns ? this._ns + k : k; }, _out: function(k) { return this._ns ? k && k.indexOf(this._ns) === 0 ? k.substring(this._ns.length) : void 0 : ( // so each() knows to skip it k ); } }, // end _.storeAPI storage: function(name) { return _.inherit(_.storageAPI, { items: {}, name }); }, storageAPI: { length: 0, has: function(k) { return this.items.hasOwnProperty(k); }, key: function(i) { var c = 0; for (var k in this.items) { if (this.has(k) && i === c++) { return k; } } }, setItem: function(k, v) { if (!this.has(k)) { this.length++; } this.items[k] = v; }, removeItem: function(k) { if (this.has(k)) { delete this.items[k]; this.length--; } }, getItem: function(k) { return this.has(k) ? this.items[k] : null; }, clear: function() { for (var k in this.items) { this.removeItem(k); } } } // end _.storageAPI }; var store = ( // safely set this up (throws error in IE10/32bit mode for local files) _.Store("local", (function() { try { return localStorage; } catch (e) { } })()) ); store.local = store; store._ = _; store.area("session", (function() { try { return sessionStorage; } catch (e) { } })()); store.area("page", _.storage("page")); if (typeof define2 === "function" && define2.amd !== void 0) { define2("store2", [], function() { return store; }); } else if (typeof module2 !== "undefined" && module2.exports) { module2.exports = store; } else { if (window2.store) { _.conflict = window2.store; } window2.store = store; } })(exports2, exports2 && exports2.define); } }); // node_modules/graceful-fs/polyfills.js var require_polyfills = __commonJS({ "node_modules/graceful-fs/polyfills.js"(exports2, module2) { init_define_import_meta_env(); var constants = require("constants"); var origCwd = process.cwd; var cwd = null; var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform; process.cwd = function() { if (!cwd) cwd = origCwd.call(process); return cwd; }; try { process.cwd(); } catch (er) { } if (typeof process.chdir === "function") { chdir = process.chdir; process.chdir = function(d) { cwd = null; chdir.call(process, d); }; if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir); } var chdir; module2.exports = patch; function patch(fs) { if (constants.hasOwnProperty("O_SYMLINK") && process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { patchLchmod(fs); } if (!fs.lutimes) { patchLutimes(fs); } fs.chown = chownFix(fs.chown); fs.fchown = chownFix(fs.fchown); fs.lchown = chownFix(fs.lchown); fs.chmod = chmodFix(fs.chmod); fs.fchmod = chmodFix(fs.fchmod); fs.lchmod = chmodFix(fs.lchmod); fs.chownSync = chownFixSync(fs.chownSync); fs.fchownSync = chownFixSync(fs.fchownSync); fs.lchownSync = chownFixSync(fs.lchownSync); fs.chmodSync = chmodFixSync(fs.chmodSync); fs.fchmodSync = chmodFixSync(fs.fchmodSync); fs.lchmodSync = chmodFixSync(fs.lchmodSync); fs.stat = statFix(fs.stat); fs.fstat = statFix(fs.fstat); fs.lstat = statFix(fs.lstat); fs.statSync = statFixSync(fs.statSync); fs.fstatSync = statFixSync(fs.fstatSync); fs.lstatSync = statFixSync(fs.lstatSync); if (fs.chmod && !fs.lchmod) { fs.lchmod = function(path2, mode, cb) { if (cb) process.nextTick(cb); }; fs.lchmodSync = function() { }; } if (fs.chown && !fs.lchown) { fs.lchown = function(path2, uid, gid, cb) { if (cb) process.nextTick(cb); }; fs.lchownSync = function() { }; } if (platform === "win32") { fs.rename = typeof fs.rename !== "function" ? fs.rename : (function(fs$rename) { function rename(from, to, cb) { var start = Date.now(); var backoff = 0; fs$rename(from, to, function CB(er) { if (er && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") && Date.now() - start < 6e4) { setTimeout(function() { fs.stat(to, function(stater, st) { if (stater && stater.code === "ENOENT") fs$rename(from, to, CB); else cb(er); }); }, backoff); if (backoff < 100) backoff += 10; return; } if (cb) cb(er); }); } if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename); return rename; })(fs.rename); } fs.read = typeof fs.read !== "function" ? fs.read : (function(fs$read) { function read(fd, buffer, offset, length, position, callback_) { var callback; if (callback_ && typeof callback_ === "function") { var eagCounter = 0; callback = function(er, _, __) { if (er && er.code === "EAGAIN" && eagCounter < 10) { eagCounter++; return fs$read.call(fs, fd, buffer, offset, length, position, callback); } callback_.apply(this, arguments); }; } return fs$read.call(fs, fd, buffer, offset, length, position, callback); } if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read); return read; })(fs.read); fs.readSync = typeof fs.readSync !== "function" ? fs.readSync : /* @__PURE__ */ (function(fs$readSync) { return function(fd, buffer, offset, length, position) { var eagCounter = 0; while (true) { try { return fs$readSync.call(fs, fd, buffer, offset, length, position); } catch (er) { if (er.code === "EAGAIN" && eagCounter < 10) { eagCounter++; continue; } throw er; } } }; })(fs.readSync); function patchLchmod(fs2) { fs2.lchmod = function(path2, mode, callback) { fs2.open( path2, constants.O_WRONLY | constants.O_SYMLINK, mode, function(err, fd) { if (err) { if (callback) callback(err); return; } fs2.fchmod(fd, mode, function(err2) { fs2.close(fd, function(err22) { if (callback) callback(err2 || err22); }); }); } ); }; fs2.lchmodSync = function(path2, mode) { var fd = fs2.openSync(path2, constants.O_WRONLY | constants.O_SYMLINK, mode); var threw = true; var ret; try { ret = fs2.fchmodSync(fd, mode); threw = false; } finally { if (threw) { try { fs2.closeSync(fd); } catch (er) { } } else { fs2.closeSync(fd); } } return ret; }; } function patchLutimes(fs2) { if (constants.hasOwnProperty("O_SYMLINK") && fs2.futimes) { fs2.lutimes = function(path2, at, mt, cb) { fs2.open(path2, constants.O_SYMLINK, function(er, fd) { if (er) { if (cb) cb(er); return; } fs2.futimes(fd, at, mt, function(er2) { fs2.close(fd, function(er22) { if (cb) cb(er2 || er22); }); }); }); }; fs2.lutimesSync = function(path2, at, mt) { var fd = fs2.openSync(path2, constants.O_SYMLINK); var ret; var threw = true; try { ret = fs2.futimesSync(fd, at, mt); threw = false; } finally { if (threw) { try { fs2.closeSync(fd); } catch (er) { } } else { fs2.closeSync(fd); } } return ret; }; } else if (fs2.futimes) { fs2.lutimes = function(_a, _b, _c, cb) { if (cb) process.nextTick(cb); }; fs2.lutimesSync = function() { }; } } function chmodFix(orig) { if (!orig) return orig; return function(target, mode, cb) { return orig.call(fs, target, mode, function(er) { if (chownErOk(er)) er = null; if (cb) cb.apply(this, arguments); }); }; } function chmodFixSync(orig) { if (!orig) return orig; return function(target, mode) { try { return orig.call(fs, target, mode); } catch (er) { if (!chownErOk(er)) throw er; } }; } function chownFix(orig) { if (!orig) return orig; return function(target, uid, gid, cb) { return orig.call(fs, target, uid, gid, function(er) { if (chownErOk(er)) er = null; if (cb) cb.apply(this, arguments); }); }; } function chownFixSync(orig) { if (!orig) return orig; return function(target, uid, gid) { try { return orig.call(fs, target, uid, gid); } catch (er) { if (!chownErOk(er)) throw er; } }; } function statFix(orig) { if (!orig) return orig; return function(target, options, cb) { if (typeof options === "function") { cb = options; options = null; } function callback(er, stats) { if (stats) { if (stats.uid < 0) stats.uid += 4294967296; if (stats.gid < 0) stats.gid += 4294967296; } if (cb) cb.apply(this, arguments); } return options ? orig.call(fs, target, options, callback) : orig.call(fs, target, callback); }; } function statFixSync(orig) { if (!orig) return orig; return function(target, options) { var stats = options ? orig.call(fs, target, options) : orig.call(fs, target); if (stats) { if (stats.uid < 0) stats.uid += 4294967296; if (stats.gid < 0) stats.gid += 4294967296; } return stats; }; } function chownErOk(er) { if (!er) return true; if (er.code === "ENOSYS") return true; var nonroot = !process.getuid || process.getuid() !== 0; if (nonroot) { if (er.code === "EINVAL" || er.code === "EPERM") return true; } return false; } } } }); // node_modules/graceful-fs/legacy-streams.js var require_legacy_streams = __commonJS({ "node_modules/graceful-fs/legacy-streams.js"(exports2, module2) { init_define_import_meta_env(); var Stream = require("stream").Stream; module2.exports = legacy; function legacy(fs) { return { ReadStream, WriteStream }; function ReadStream(path2, options) { if (!(this instanceof ReadStream)) return new ReadStream(path2, options); Stream.call(this); var self2 = this; this.path = path2; this.fd = null; this.readable = true; this.paused = false; this.flags = "r"; this.mode = 438; this.bufferSize = 64 * 1024; options = options || {}; var keys = Object.keys(options); for (var index2 = 0, length = keys.length; index2 < length; index2++) { var key = keys[index2]; this[key] = options[key]; } if (this.encoding) this.setEncoding(this.encoding); if (this.start !== void 0) { if ("number" !== typeof this.start) { throw TypeError("start must be a Number"); } if (this.end === void 0) { this.end = Infinity; } else if ("number" !== typeof this.end) { throw TypeError("end must be a Number"); } if (this.start > this.end) { throw new Error("start must be <= end"); } this.pos = this.start; } if (this.fd !== null) { process.nextTick(function() { self2._read(); }); return; } fs.open(this.path, this.flags, this.mode, function(err, fd) { if (err) { self2.emit("error", err); self2.readable = false; return; } self2.fd = fd; self2.emit("open", fd); self2._read(); }); } function WriteStream(path2, options) { if (!(this instanceof WriteStream)) return new WriteStream(path2, options); Stream.call(this); this.path = path2; this.fd = null; this.writable = true; this.flags = "w"; this.encoding = "binary"; this.mode = 438; this.bytesWritten = 0; options = options || {}; var keys = Object.keys(options); for (var index2 = 0, length = keys.length; index2 < length; index2++) { var key = keys[index2]; this[key] = options[key]; } if (this.start !== void 0) { if ("number" !== typeof this.start) { throw TypeError("start must be a Number"); } if (this.start < 0) { throw new Error("start must be >= zero"); } this.pos = this.start; } this.busy = false; this._queue = []; if (this.fd === null) { this._open = fs.open; this._queue.push([this._open, this.path, this.flags, this.mode, void 0]); this.flush(); } } } } }); // node_modules/graceful-fs/clone.js var require_clone2 = __commonJS({ "node_modules/graceful-fs/clone.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = clone; var getPrototypeOf = Object.getPrototypeOf || function(obj) { return obj.__proto__; }; function clone(obj) { if (obj === null || typeof obj !== "object") return obj; if (obj instanceof Object) var copy = { __proto__: getPrototypeOf(obj) }; else var copy = /* @__PURE__ */ Object.create(null); Object.getOwnPropertyNames(obj).forEach(function(key) { Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)); }); return copy; } } }); // node_modules/graceful-fs/graceful-fs.js var require_graceful_fs = __commonJS({ "node_modules/graceful-fs/graceful-fs.js"(exports2, module2) { init_define_import_meta_env(); var fs = require("fs"); var polyfills = require_polyfills(); var legacy = require_legacy_streams(); var clone = require_clone2(); var util = require("util"); var gracefulQueue; var previousSymbol; if (typeof Symbol === "function" && typeof Symbol.for === "function") { gracefulQueue = /* @__PURE__ */ Symbol.for("graceful-fs.queue"); previousSymbol = /* @__PURE__ */ Symbol.for("graceful-fs.previous"); } else { gracefulQueue = "___graceful-fs.queue"; previousSymbol = "___graceful-fs.previous"; } function noop() { } function publishQueue(context2, queue2) { Object.defineProperty(context2, gracefulQueue, { get: function() { return queue2; } }); } var debug = noop; if (util.debuglog) debug = util.debuglog("gfs4"); else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) debug = function() { var m = util.format.apply(util, arguments); m = "GFS4: " + m.split(/\n/).join("\nGFS4: "); console.error(m); }; if (!fs[gracefulQueue]) { queue = global[gracefulQueue] || []; publishQueue(fs, queue); fs.close = (function(fs$close) { function close(fd, cb) { return fs$close.call(fs, fd, function(err) { if (!err) { resetQueue(); } if (typeof cb === "function") cb.apply(this, arguments); }); } Object.defineProperty(close, previousSymbol, { value: fs$close }); return close; })(fs.close); fs.closeSync = (function(fs$closeSync) { function closeSync(fd) { fs$closeSync.apply(fs, arguments); resetQueue(); } Object.defineProperty(closeSync, previousSymbol, { value: fs$closeSync }); return closeSync; })(fs.closeSync); if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || "")) { process.on("exit", function() { debug(fs[gracefulQueue]); require("assert").equal(fs[gracefulQueue].length, 0); }); } } var queue; if (!global[gracefulQueue]) { publishQueue(global, fs[gracefulQueue]); } module2.exports = patch(clone(fs)); if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { module2.exports = patch(fs); fs.__patched = true; } function patch(fs2) { polyfills(fs2); fs2.gracefulify = patch; fs2.createReadStream = createReadStream; fs2.createWriteStream = createWriteStream; var fs$readFile = fs2.readFile; fs2.readFile = readFile; function readFile(path2, options, cb) { if (typeof options === "function") cb = options, options = null; return go$readFile(path2, options, cb); function go$readFile(path3, options2, cb2, startTime) { return fs$readFile(path3, options2, function(err) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$readFile, [path3, options2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } var fs$writeFile = fs2.writeFile; fs2.writeFile = writeFile; function writeFile(path2, data, options, cb) { if (typeof options === "function") cb = options, options = null; return go$writeFile(path2, data, options, cb); function go$writeFile(path3, data2, options2, cb2, startTime) { return fs$writeFile(path3, data2, options2, function(err) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$writeFile, [path3, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } var fs$appendFile = fs2.appendFile; if (fs$appendFile) fs2.appendFile = appendFile; function appendFile(path2, data, options, cb) { if (typeof options === "function") cb = options, options = null; return go$appendFile(path2, data, options, cb); function go$appendFile(path3, data2, options2, cb2, startTime) { return fs$appendFile(path3, data2, options2, function(err) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$appendFile, [path3, data2, options2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } var fs$copyFile = fs2.copyFile; if (fs$copyFile) fs2.copyFile = copyFile; function copyFile(src, dest, flags, cb) { if (typeof flags === "function") { cb = flags; flags = 0; } return go$copyFile(src, dest, flags, cb); function go$copyFile(src2, dest2, flags2, cb2, startTime) { return fs$copyFile(src2, dest2, flags2, function(err) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$copyFile, [src2, dest2, flags2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } var fs$readdir = fs2.readdir; fs2.readdir = readdir; var noReaddirOptionVersions = /^v[0-5]\./; function readdir(path2, options, cb) { if (typeof options === "function") cb = options, options = null; var go$readdir = noReaddirOptionVersions.test(process.version) ? function go$readdir2(path3, options2, cb2, startTime) { return fs$readdir(path3, fs$readdirCallback( path3, options2, cb2, startTime )); } : function go$readdir2(path3, options2, cb2, startTime) { return fs$readdir(path3, options2, fs$readdirCallback( path3, options2, cb2, startTime )); }; return go$readdir(path2, options, cb); function fs$readdirCallback(path3, options2, cb2, startTime) { return function(err, files) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([ go$readdir, [path3, options2, cb2], err, startTime || Date.now(), Date.now() ]); else { if (files && files.sort) files.sort(); if (typeof cb2 === "function") cb2.call(this, err, files); } }; } } if (process.version.substr(0, 4) === "v0.8") { var legStreams = legacy(fs2); ReadStream = legStreams.ReadStream; WriteStream = legStreams.WriteStream; } var fs$ReadStream = fs2.ReadStream; if (fs$ReadStream) { ReadStream.prototype = Object.create(fs$ReadStream.prototype); ReadStream.prototype.open = ReadStream$open; } var fs$WriteStream = fs2.WriteStream; if (fs$WriteStream) { WriteStream.prototype = Object.create(fs$WriteStream.prototype); WriteStream.prototype.open = WriteStream$open; } Object.defineProperty(fs2, "ReadStream", { get: function() { return ReadStream; }, set: function(val) { ReadStream = val; }, enumerable: true, configurable: true }); Object.defineProperty(fs2, "WriteStream", { get: function() { return WriteStream; }, set: function(val) { WriteStream = val; }, enumerable: true, configurable: true }); var FileReadStream = ReadStream; Object.defineProperty(fs2, "FileReadStream", { get: function() { return FileReadStream; }, set: function(val) { FileReadStream = val; }, enumerable: true, configurable: true }); var FileWriteStream = WriteStream; Object.defineProperty(fs2, "FileWriteStream", { get: function() { return FileWriteStream; }, set: function(val) { FileWriteStream = val; }, enumerable: true, configurable: true }); function ReadStream(path2, options) { if (this instanceof ReadStream) return fs$ReadStream.apply(this, arguments), this; else return ReadStream.apply(Object.create(ReadStream.prototype), arguments); } function ReadStream$open() { var that = this; open(that.path, that.flags, that.mode, function(err, fd) { if (err) { if (that.autoClose) that.destroy(); that.emit("error", err); } else { that.fd = fd; that.emit("open", fd); that.read(); } }); } function WriteStream(path2, options) { if (this instanceof WriteStream) return fs$WriteStream.apply(this, arguments), this; else return WriteStream.apply(Object.create(WriteStream.prototype), arguments); } function WriteStream$open() { var that = this; open(that.path, that.flags, that.mode, function(err, fd) { if (err) { that.destroy(); that.emit("error", err); } else { that.fd = fd; that.emit("open", fd); } }); } function createReadStream(path2, options) { return new fs2.ReadStream(path2, options); } function createWriteStream(path2, options) { return new fs2.WriteStream(path2, options); } var fs$open = fs2.open; fs2.open = open; function open(path2, flags, mode, cb) { if (typeof mode === "function") cb = mode, mode = null; return go$open(path2, flags, mode, cb); function go$open(path3, flags2, mode2, cb2, startTime) { return fs$open(path3, flags2, mode2, function(err, fd) { if (err && (err.code === "EMFILE" || err.code === "ENFILE")) enqueue([go$open, [path3, flags2, mode2, cb2], err, startTime || Date.now(), Date.now()]); else { if (typeof cb2 === "function") cb2.apply(this, arguments); } }); } } return fs2; } function enqueue(elem) { debug("ENQUEUE", elem[0].name, elem[1]); fs[gracefulQueue].push(elem); retry(); } var retryTimer; function resetQueue() { var now = Date.now(); for (var i = 0; i < fs[gracefulQueue].length; ++i) { if (fs[gracefulQueue][i].length > 2) { fs[gracefulQueue][i][3] = now; fs[gracefulQueue][i][4] = now; } } retry(); } function retry() { clearTimeout(retryTimer); retryTimer = void 0; if (fs[gracefulQueue].length === 0) return; var elem = fs[gracefulQueue].shift(); var fn = elem[0]; var args = elem[1]; var err = elem[2]; var startTime = elem[3]; var lastTime = elem[4]; if (startTime === void 0) { debug("RETRY", fn.name, args); fn.apply(null, args); } else if (Date.now() - startTime >= 6e4) { debug("TIMEOUT", fn.name, args); var cb = args.pop(); if (typeof cb === "function") cb.call(null, err); } else { var sinceAttempt = Date.now() - lastTime; var sinceStart = Math.max(lastTime - startTime, 1); var desiredDelay = Math.min(sinceStart * 1.2, 100); if (sinceAttempt >= desiredDelay) { debug("RETRY", fn.name, args); fn.apply(null, args.concat([startTime])); } else { fs[gracefulQueue].push(elem); } } if (retryTimer === void 0) { retryTimer = setTimeout(retry, 0); } } } }); // node_modules/slide/lib/async-map.js var require_async_map = __commonJS({ "node_modules/slide/lib/async-map.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = asyncMap; function asyncMap() { var steps = Array.prototype.slice.call(arguments), list = steps.shift() || [], cb_ = steps.pop(); if (typeof cb_ !== "function") throw new Error( "No callback provided to asyncMap" ); if (!list) return cb_(null, []); if (!Array.isArray(list)) list = [list]; var n = steps.length, data = [], errState = null, l = list.length, a = l * n; if (!a) return cb_(null, []); function cb(er) { if (er && !errState) errState = er; var argLen = arguments.length; for (var i = 1; i < argLen; i++) if (arguments[i] !== void 0) { data[i - 1] = (data[i - 1] || []).concat(arguments[i]); } if (list.length > l) { var newList = list.slice(l); a += (list.length - l) * n; l = list.length; process.nextTick(function() { newList.forEach(function(ar) { steps.forEach(function(fn) { fn(ar, cb); }); }); }); } if (--a === 0) cb_.apply(null, [errState].concat(data)); } list.forEach(function(ar) { steps.forEach(function(fn) { fn(ar, cb); }); }); } } }); // node_modules/slide/lib/bind-actor.js var require_bind_actor = __commonJS({ "node_modules/slide/lib/bind-actor.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = bindActor; function bindActor() { var args = Array.prototype.slice.call(arguments), obj = null, fn; if (typeof args[0] === "object") { obj = args.shift(); fn = args.shift(); if (typeof fn === "string") fn = obj[fn]; } else fn = args.shift(); return function(cb) { fn.apply(obj, args.concat(cb)); }; } } }); // node_modules/slide/lib/chain.js var require_chain = __commonJS({ "node_modules/slide/lib/chain.js"(exports2, module2) { init_define_import_meta_env(); module2.exports = chain; var bindActor = require_bind_actor(); chain.first = {}; chain.last = {}; function chain(things, cb) { var res = []; (function LOOP(i, len) { if (i >= len) return cb(null, res); if (Array.isArray(things[i])) things[i] = bindActor.apply( null, things[i].map(function(i2) { return i2 === chain.first ? res[0] : i2 === chain.last ? res[res.length - 1] : i2; }) ); if (!things[i]) return LOOP(i + 1, len); things[i](function(er, data) { if (er) return cb(er, res); if (data !== void 0) res = res.concat(data); LOOP(i + 1, len); }); })(0, things.length); } } }); // node_modules/slide/lib/slide.js var require_slide = __commonJS({ "node_modules/slide/lib/slide.js"(exports2) { init_define_import_meta_env(); exports2.asyncMap = require_async_map(); exports2.bindActor = require_bind_actor(); exports2.chain = require_chain(); } }); // node_modules/imurmurhash/imurmurhash.js var require_imurmurhash = __commonJS({ "node_modules/imurmurhash/imurmurhash.js"(exports2, module2) { init_define_import_meta_env(); (function() { var cache; function MurmurHash3(key, seed) { var m = this instanceof MurmurHash3 ? this : cache; m.reset(seed); if (typeof key === "string" && key.length > 0) { m.hash(key); } if (m !== this) { return m; } } ; MurmurHash3.prototype.hash = function(key) { var h1, k1, i, top, len; len = key.length; this.len += len; k1 = this.k1; i = 0; switch (this.rem) { case 0: k1 ^= len > i ? key.charCodeAt(i++) & 65535 : 0; case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 65535) << 8 : 0; case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 65535) << 16 : 0; case 3: k1 ^= len > i ? (key.charCodeAt(i) & 255) << 24 : 0; k1 ^= len > i ? (key.charCodeAt(i++) & 65280) >> 8 : 0; } this.rem = len + this.rem & 3; len -= this.rem; if (len > 0) { h1 = this.h1; while (1) { k1 = k1 * 11601 + (k1 & 65535) * 3432906752 & 4294967295; k1 = k1 << 15 | k1 >>> 17; k1 = k1 * 13715 + (k1 & 65535) * 461832192 & 4294967295; h1 ^= k1; h1 = h1 << 13 | h1 >>> 19; h1 = h1 * 5 + 3864292196 & 4294967295; if (i >= len) { break; } k1 = key.charCodeAt(i++) & 65535 ^ (key.charCodeAt(i++) & 65535) << 8 ^ (key.charCodeAt(i++) & 65535) << 16; top = key.charCodeAt(i++); k1 ^= (top & 255) << 24 ^ (top & 65280) >> 8; } k1 = 0; switch (this.rem) { case 3: k1 ^= (key.charCodeAt(i + 2) & 65535) << 16; case 2: k1 ^= (key.charCodeAt(i + 1) & 65535) << 8; case 1: k1 ^= key.charCodeAt(i) & 65535; } this.h1 = h1; } this.k1 = k1; return this; }; MurmurHash3.prototype.result = function() { var k1, h1; k1 = this.k1; h1 = this.h1; if (k1 > 0) { k1 = k1 * 11601 + (k1 & 65535) * 3432906752 & 4294967295; k1 = k1 << 15 | k1 >>> 17; k1 = k1 * 13715 + (k1 & 65535) * 461832192 & 4294967295; h1 ^= k1; } h1 ^= this.len; h1 ^= h1 >>> 16; h1 = h1 * 51819 + (h1 & 65535) * 2246770688 & 4294967295; h1 ^= h1 >>> 13; h1 = h1 * 44597 + (h1 & 65535) * 3266445312 & 4294967295; h1 ^= h1 >>> 16; return h1 >>> 0; }; MurmurHash3.prototype.reset = function(seed) { this.h1 = typeof seed === "number" ? seed : 0; this.rem = this.k1 = this.len = 0; return this; }; cache = new MurmurHash3(); if (typeof module2 != "undefined") { module2.exports = MurmurHash3; } else { this.MurmurHash3 = MurmurHash3; } })(); } }); // node_modules/write-file-atomic/index.js var require_write_file_atomic = __commonJS({ "node_modules/write-file-atomic/index.js"(exports2, module2) { "use strict"; init_define_import_meta_env(); module2.exports = writeFile; module2.exports.sync = writeFileSync; module2.exports._getTmpname = getTmpname; var fs = require_graceful_fs(); var chain = require_slide().chain; var MurmurHash3 = require_imurmurhash(); var extend = Object.assign || require("util")._extend; var invocations = 0; function getTmpname(filename) { return filename + "." + MurmurHash3(__filename).hash(String(process.pid)).hash(String(++invocations)).result(); } function writeFile(filename, data, options, callback) { if (options instanceof Function) { callback = options; options = null; } if (!options) options = {}; fs.realpath(filename, function(_, realname) { _writeFile(realname || filename, data, options, callback); }); } function _writeFile(filename, data, options, callback) { var tmpfile = getTmpname(filename); if (options.mode && options.chown) { return thenWriteFile(); } else { return fs.stat(filename, function(err, stats) { if (err || !stats) return thenWriteFile(); options = extend({}, options); if (!options.mode) { options.mode = stats.mode; } if (!options.chown && process.getuid) { options.chown = { uid: stats.uid, gid: stats.gid }; } return thenWriteFile(); }); } function thenWriteFile() { chain([ [writeFileAsync, tmpfile, data, options.mode, options.encoding || "utf8"], options.chown && [fs, fs.chown, tmpfile, options.chown.uid, options.chown.gid], options.mode && [fs, fs.chmod, tmpfile, options.mode], [fs, fs.rename, tmpfile, filename] ], function(err) { err ? fs.unlink(tmpfile, function() { callback(err); }) : callback(); }); } function writeFileAsync(file, data2, mode, encoding, cb) { fs.open(file, "w", options.mode, function(err, fd) { if (err) return cb(err); if (Buffer.isBuffer(data2)) { return fs.write(fd, data2, 0, data2.length, 0, syncAndClose); } else if (data2 != null) { return fs.write(fd, String(data2), 0, String(encoding), syncAndClose); } else { return syncAndClose(); } function syncAndClose(err2) { if (err2) return cb(err2); fs.fsync(fd, function(err3) { if (err3) return cb(err3); fs.close(fd, cb); }); } }); } } function writeFileSync(filename, data, options) { if (!options) options = {}; try { filename = fs.realpathSync(filename); } catch (ex) { } var tmpfile = getTmpname(filename); try { if (!options.mode || !options.chown) { try { var stats = fs.statSync(filename); options = extend({}, options); if (!options.mode) { options.mode = stats.mode; } if (!options.chown && process.getuid) { options.chown = { uid: stats.uid, gid: stats.gid }; } } catch (ex) { } } var fd = fs.openSync(tmpfile, "w", options.mode); if (Buffer.isBuffer(data)) { fs.writeSync(fd, data, 0, data.length, 0); } else if (data != null) { fs.writeSync(fd, String(data), 0, String(options.encoding || "utf8")); } fs.fsyncSync(fd); fs.closeSync(fd); if (options.chown) fs.chownSync(tmpfile, options.chown.uid, options.chown.gid); if (options.mode) fs.chmodSync(tmpfile, options.mode); fs.renameSync(tmpfile, filename); } catch (err) { try { fs.unlinkSync(tmpfile); } catch (e) { } throw err; } } } }); // node_modules/node-localstorage/LocalStorage.js var require_LocalStorage = __commonJS({ "node_modules/node-localstorage/LocalStorage.js"(exports2) { init_define_import_meta_env(); (function() { var JSONStorage, KEY_FOR_EMPTY_STRING, LocalStorage, MetaKey, QUOTA_EXCEEDED_ERR, StorageEvent, _emptyDirectory, _escapeKey, _rm, createMap, events, fs, path2, writeSync, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; path2 = require("path"); fs = require("fs"); events = require("events"); writeSync = require_write_file_atomic().sync; KEY_FOR_EMPTY_STRING = "---.EMPTY_STRING.---"; _emptyDirectory = function(target) { var i, len, p, ref, results; ref = fs.readdirSync(target); results = []; for (i = 0, len = ref.length; i < len; i++) { p = ref[i]; results.push(_rm(path2.join(target, p))); } return results; }; _rm = function(target) { if (fs.statSync(target).isDirectory()) { _emptyDirectory(target); return fs.rmdirSync(target); } else { return fs.unlinkSync(target); } }; _escapeKey = function(key) { var newKey; if (key === "") { newKey = KEY_FOR_EMPTY_STRING; } else { newKey = "" + key; } return newKey; }; QUOTA_EXCEEDED_ERR = (function(superClass) { extend(QUOTA_EXCEEDED_ERR2, superClass); function QUOTA_EXCEEDED_ERR2(message) { this.message = message != null ? message : "Unknown error."; QUOTA_EXCEEDED_ERR2.__super__.constructor.call(this); if (Error.captureStackTrace != null) { Error.captureStackTrace(this, this.constructor); } this.name = this.constructor.name; } QUOTA_EXCEEDED_ERR2.prototype.toString = function() { return this.name + ": " + this.message; }; return QUOTA_EXCEEDED_ERR2; })(Error); StorageEvent = /* @__PURE__ */ (function() { function StorageEvent2(key1, oldValue1, newValue1, url, storageArea) { this.key = key1; this.oldValue = oldValue1; this.newValue = newValue1; this.url = url; this.storageArea = storageArea != null ? storageArea : "localStorage"; } return StorageEvent2; })(); MetaKey = /* @__PURE__ */ (function() { function MetaKey2(key1, index1) { this.key = key1; this.index = index1; if (!(this instanceof MetaKey2)) { return new MetaKey2(this.key, this.index); } } return MetaKey2; })(); createMap = function() { var Map2; Map2 = function() { }; Map2.prototype = /* @__PURE__ */ Object.create(null); return new Map2(); }; LocalStorage = (function(superClass) { var instanceMap; extend(LocalStorage2, superClass); instanceMap = {}; function LocalStorage2(_location, quota) { var handler; this._location = _location; this.quota = quota != null ? quota : 5 * 1024 * 1024; LocalStorage2.__super__.constructor.call(this); if (!(this instanceof LocalStorage2)) { return new LocalStorage2(this._location, this.quota); } this._location = path2.resolve(this._location); if (instanceMap[this._location] != null) { return instanceMap[this._location]; } this.length = 0; this._bytesInUse = 0; this._keys = []; this._metaKeyMap = createMap(); this._eventUrl = "pid:" + process.pid; this._init(); this._QUOTA_EXCEEDED_ERR = QUOTA_EXCEEDED_ERR; if (typeof Proxy !== "undefined" && Proxy !== null) { handler = { set: /* @__PURE__ */ (function(_this) { return function(receiver, key, value) { if (_this[key] != null) { return _this[key] = value; } else { return _this.setItem(key, value); } }; })(this), get: /* @__PURE__ */ (function(_this) { return function(receiver, key) { if (_this[key] != null) { return _this[key]; } else { return _this.getItem(key); } }; })(this) }; instanceMap[this._location] = new Proxy(this, handler); return instanceMap[this._location]; } instanceMap[this._location] = this; return instanceMap[this._location]; } LocalStorage2.prototype._init = function() { var _MetaKey, _decodedKey, _keys, e, i, index2, k, len, stat; try { stat = fs.statSync(this._location); if (stat != null && !stat.isDirectory()) { throw new Error("A file exists at the location '" + this._location + "' when trying to create/open localStorage"); } this._bytesInUse = 0; this.length = 0; _keys = fs.readdirSync(this._location); for (index2 = i = 0, len = _keys.length; i < len; index2 = ++i) { k = _keys[index2]; _decodedKey = decodeURIComponent(k); this._keys.push(_decodedKey); _MetaKey = new MetaKey(k, index2); this._metaKeyMap[_decodedKey] = _MetaKey; stat = this._getStat(k); if ((stat != null ? stat.size : void 0) != null) { _MetaKey.size = stat.size; this._bytesInUse += stat.size; } } this.length = _keys.length; } catch (error) { e = error; if (e.code !== "ENOENT") { throw e; } try { fs.mkdirSync(this._location, { recursive: true }); } catch (error2) { e = error2; if (e.code !== "EEXIST") { throw e; } } } }; LocalStorage2.prototype.setItem = function(key, value) { var encodedKey, evnt, existsBeforeSet, filename, hasListeners, metaKey, oldLength, oldValue, valueString, valueStringLength; hasListeners = this.listenerCount("storage"); oldValue = null; if (hasListeners) { oldValue = this.getItem(key); } key = _escapeKey(key); encodedKey = encodeURIComponent(key).replace(/[!'()]/g, escape).replace(/\*/g, "%2A"); filename = path2.join(this._location, encodedKey); valueString = "" + value; valueStringLength = valueString.length; metaKey = this._metaKeyMap[key]; existsBeforeSet = !!metaKey; if (existsBeforeSet) { oldLength = metaKey.size; } else { oldLength = 0; } if (this._bytesInUse - oldLength + valueStringLength > this.quota) { throw new QUOTA_EXCEEDED_ERR(); } writeSync(filename, valueString, { encoding: "utf8" }); if (!existsBeforeSet) { metaKey = new MetaKey(encodedKey, this._keys.push(key) - 1); metaKey.size = valueStringLength; this._metaKeyMap[key] = metaKey; this.length += 1; this._bytesInUse += valueStringLength; } if (hasListeners) { evnt = new StorageEvent(key, oldValue, value, this._eventUrl); return this.emit("storage", evnt); } }; LocalStorage2.prototype.getItem = function(key) { var filename, metaKey; key = _escapeKey(key); metaKey = this._metaKeyMap[key]; if (!!metaKey) { filename = path2.join(this._location, metaKey.key); return fs.readFileSync(filename, "utf8"); } else { return null; } }; LocalStorage2.prototype._getStat = function(key) { var filename; key = _escapeKey(key); filename = path2.join(this._location, encodeURIComponent(key)); try { return fs.statSync(filename); } catch (error) { return null; } }; LocalStorage2.prototype.removeItem = function(key) { var evnt, filename, hasListeners, k, meta, metaKey, oldValue, ref, v; key = _escapeKey(key); metaKey = this._metaKeyMap[key]; if (!!metaKey) { hasListeners = this.listenerCount("storage"); oldValue = null; if (hasListeners) { oldValue = this.getItem(key); } delete this._metaKeyMap[key]; this.length -= 1; this._bytesInUse -= metaKey.size; filename = path2.join(this._location, metaKey.key); this._keys.splice(metaKey.index, 1); ref = this._metaKeyMap; for (k in ref) { v = ref[k]; meta = this._metaKeyMap[k]; if (meta.index > metaKey.index) { meta.index -= 1; } } _rm(filename); if (hasListeners) { evnt = new StorageEvent(key, oldValue, null, this._eventUrl); return this.emit("storage", evnt); } } }; LocalStorage2.prototype.key = function(n) { var rawKey; rawKey = this._keys[n]; if (rawKey === KEY_FOR_EMPTY_STRING) { return ""; } else { return rawKey; } }; LocalStorage2.prototype.clear = function() { var evnt; _emptyDirectory(this._location); this._metaKeyMap = createMap(); this._keys = []; this.length = 0; this._bytesInUse = 0; if (this.listenerCount("storage")) { evnt = new StorageEvent(null, null, null, this._eventUrl); return this.emit("storage", evnt); } }; LocalStorage2.prototype._getBytesInUse = function() { return this._bytesInUse; }; LocalStorage2.prototype._deleteLocation = function() { delete instanceMap[this._location]; _rm(this._location); this._metaKeyMap = {}; this._keys = []; this.length = 0; return this._bytesInUse = 0; }; return LocalStorage2; })(events.EventEmitter); JSONStorage = (function(superClass) { extend(JSONStorage2, superClass); function JSONStorage2() { return JSONStorage2.__super__.constructor.apply(this, arguments); } JSONStorage2.prototype.setItem = function(key, value) { var newValue; newValue = JSON.stringify(value); return JSONStorage2.__super__.setItem.call(this, key, newValue); }; JSONStorage2.prototype.getItem = function(key) { return JSON.parse(JSONStorage2.__super__.getItem.call(this, key)); }; return JSONStorage2; })(LocalStorage); exports2.LocalStorage = LocalStorage; exports2.JSONStorage = JSONStorage; exports2.QUOTA_EXCEEDED_ERR = QUOTA_EXCEEDED_ERR; }).call(exports2); } }); // node_modules/telegram/sessions/localStorage.js var require_localStorage = __commonJS({ "node_modules/telegram/sessions/localStorage.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.LocalStorage = void 0; exports2.LocalStorage = require_LocalStorage().LocalStorage; } }); // node_modules/telegram/sessions/StoreSession.js var require_StoreSession = __commonJS({ "node_modules/telegram/sessions/StoreSession.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.StoreSession = void 0; var Memory_1 = require_Memory(); var store2_1 = __importDefault2(require_store2()); var AuthKey_1 = require_AuthKey(); var StoreSession = class extends Memory_1.MemorySession { constructor(sessionName, divider = ":") { super(); if (sessionName === "session") { throw new Error("Session name can't be 'session'. Please use a different name."); } if (typeof localStorage === "undefined" || localStorage === null) { const LocalStorage = require_localStorage().LocalStorage; this.store = store2_1.default.area(sessionName, new LocalStorage("./" + sessionName)); } else { this.store = store2_1.default.area(sessionName, localStorage); } if (divider == void 0) { divider = ":"; } this.sessionName = sessionName + divider; } async load() { let authKey = this.store.get(this.sessionName + "authKey"); if (authKey && typeof authKey === "object") { this._authKey = new AuthKey_1.AuthKey(); if ("data" in authKey) { authKey = Buffer.from(authKey.data); } await this._authKey.setKey(authKey); } const dcId = this.store.get(this.sessionName + "dcId"); if (dcId) { this._dcId = dcId; } const port = this.store.get(this.sessionName + "port"); if (port) { this._port = port; } const serverAddress = this.store.get(this.sessionName + "serverAddress"); if (serverAddress) { this._serverAddress = serverAddress; } } setDC(dcId, serverAddress, port) { this.store.set(this.sessionName + "dcId", dcId); this.store.set(this.sessionName + "port", port); this.store.set(this.sessionName + "serverAddress", serverAddress); super.setDC(dcId, serverAddress, port); } set authKey(value) { this._authKey = value; this.store.set(this.sessionName + "authKey", value === null || value === void 0 ? void 0 : value.getKey()); } get authKey() { return this._authKey; } processEntities(tlo) { const rows = this._entitiesToRows(tlo); if (!rows) { return; } for (const row of rows) { row.push((/* @__PURE__ */ new Date()).getTime().toString()); this.store.set(this.sessionName + row[0], row); } } getEntityRowsById(id, exact = true) { return this.store.get(this.sessionName + id.toString()); } }; exports2.StoreSession = StoreSession; } }); // node_modules/telegram/sessions/index.js var require_sessions = __commonJS({ "node_modules/telegram/sessions/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Session = exports2.StoreSession = exports2.StringSession = exports2.MemorySession = void 0; var Memory_1 = require_Memory(); Object.defineProperty(exports2, "MemorySession", { enumerable: true, get: function() { return Memory_1.MemorySession; } }); var StringSession_1 = require_StringSession(); Object.defineProperty(exports2, "StringSession", { enumerable: true, get: function() { return StringSession_1.StringSession; } }); var StoreSession_1 = require_StoreSession(); Object.defineProperty(exports2, "StoreSession", { enumerable: true, get: function() { return StoreSession_1.StoreSession; } }); var Abstract_1 = require_Abstract(); Object.defineProperty(exports2, "Session", { enumerable: true, get: function() { return Abstract_1.Session; } }); } }); // node_modules/telegram/client/os.js var require_os = __commonJS({ "node_modules/telegram/client/os.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); var os = __importStar2(require("os")); exports2.default = os; } }); // node_modules/telegram/entityCache.js var require_entityCache = __commonJS({ "node_modules/telegram/entityCache.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.EntityCache = void 0; var Utils_1 = require_Utils(); var Helpers_1 = require_Helpers(); var tl_1 = require_tl(); var big_integer_1 = __importDefault2(require_BigInteger()); var EntityCache = class { constructor() { this.cacheMap = /* @__PURE__ */ new Map(); } add(entities2) { const temp = []; if (!(0, Helpers_1.isArrayLike)(entities2)) { if (entities2 != void 0) { if (typeof entities2 == "object") { if ("chats" in entities2) { temp.push(...entities2.chats); } if ("users" in entities2) { temp.push(...entities2.users); } if ("user" in entities2) { temp.push(entities2.user); } } } if (temp.length) { entities2 = temp; } else { return; } } for (const entity of entities2) { try { const pid = (0, Utils_1.getPeerId)(entity); if (!this.cacheMap.has(pid.toString())) { this.cacheMap.set(pid.toString(), (0, Utils_1.getInputPeer)(entity)); } } catch (e) { } } } get(item) { if (item == void 0) { throw new Error("No cached entity for the given key"); } item = (0, Helpers_1.returnBigInt)(item); if (item.lesser(big_integer_1.default.zero)) { let res; try { res = this.cacheMap.get((0, Utils_1.getPeerId)(item).toString()); if (res) { return res; } } catch (e) { throw new Error("Invalid key will not have entity"); } } for (const cls of [tl_1.Api.PeerUser, tl_1.Api.PeerChat, tl_1.Api.PeerChannel]) { const result = this.cacheMap.get((0, Utils_1.getPeerId)(new cls({ userId: item, chatId: item, channelId: item })).toString()); if (result) { return result; } } throw new Error("No cached entity for the given key"); } }; exports2.EntityCache = EntityCache; } }); // node_modules/telegram/crypto/IGE.js var require_IGE = __commonJS({ "node_modules/telegram/crypto/IGE.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.IGE = void 0; var Helpers = require_Helpers(); var { IGE: aes_ige } = require_aes_min(); var IGENEW = class { constructor(key, iv) { this.ige = new aes_ige(key, iv); } /** * Decrypts the given text in 16-bytes blocks by using the given key and 32-bytes initialization vector * @param cipherText {Buffer} * @returns {Buffer} */ decryptIge(cipherText) { return Helpers.convertToLittle(this.ige.decrypt(cipherText)); } /** * Encrypts the given text in 16-bytes blocks by using the given key and 32-bytes initialization vector * @param plainText {Buffer} * @returns {Buffer} */ encryptIge(plainText) { const padding = plainText.length % 16; if (padding) { plainText = Buffer.concat([ plainText, Helpers.generateRandomBytes(16 - padding) ]); } return Helpers.convertToLittle(this.ige.encrypt(plainText)); } }; exports2.IGE = IGENEW; } }); // node_modules/telegram/network/MTProtoState.js var require_MTProtoState = __commonJS({ "node_modules/telegram/network/MTProtoState.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MTProtoState = void 0; var big_integer_1 = __importDefault2(require_BigInteger()); var __1 = require_telegram(); var tl_1 = require_tl(); var Helpers_1 = require_Helpers(); var core_1 = require_core(); var extensions_1 = require_extensions(); var IGE_1 = require_IGE(); var errors_1 = require_errors(); var MTProtoState = class { /** * `telethon.network.mtprotosender.MTProtoSender` needs to hold a state in order to be able to encrypt and decrypt incoming/outgoing messages, as well as generating the message IDs. Instances of this class hold together all the required information. It doesn't make sense to use `telethon.sessions.abstract.Session` for the sender because the sender should *not* be concerned about storing this information to disk, as one may create as many senders as they desire to any other data center, or some CDN. Using the same session for all these is not a good idea as each need their own authkey, and the concept of "copying" sessions with the unnecessary entities or updates state for these connections doesn't make sense. While it would be possible to have a `MTProtoPlainState` that does no encryption so that it was usable through the `MTProtoLayer` and thus avoid the need for a `MTProtoPlainSender`, the `MTProtoLayer` is more focused to efficiency and this state is also more advanced (since it supports gzipping and invoking after other message IDs). There are too many methods that would be needed to make it convenient to use for the authentication process, at which point the `MTProtoPlainSender` is better * @param authKey * @param loggers * @param securityChecks */ constructor(authKey, loggers, securityChecks = true) { this.authKey = authKey; this._log = loggers; this.timeOffset = 0; this.salt = big_integer_1.default.zero; this._sequence = 0; this.id = this._lastMsgId = big_integer_1.default.zero; this.msgIds = []; this.securityChecks = securityChecks; this.reset(); } /** * Resets the state */ reset() { this.id = __1.helpers.generateRandomLong(true); this._sequence = 0; this._lastMsgId = big_integer_1.default.zero; this.msgIds = []; } /** * Updates the message ID to a new one, * used when the time offset changed. * @param message */ updateMessageId(message) { message.msgId = this._getNewMsgId(); } /** * Calculate the key based on Telegram guidelines, specifying whether it's the client or not * @param authKey * @param msgKey * @param client * @returns {{iv: Buffer, key: Buffer}} */ async _calcKey(authKey, msgKey, client2) { const x = client2 ? 0 : 8; const [sha256a, sha256b] = await Promise.all([ (0, Helpers_1.sha256)(Buffer.concat([msgKey, authKey.slice(x, x + 36)])), (0, Helpers_1.sha256)(Buffer.concat([authKey.slice(x + 40, x + 76), msgKey])) ]); const key = Buffer.concat([ sha256a.slice(0, 8), sha256b.slice(8, 24), sha256a.slice(24, 32) ]); const iv = Buffer.concat([ sha256b.slice(0, 8), sha256a.slice(8, 24), sha256b.slice(24, 32) ]); return { key, iv }; } /** * Writes a message containing the given data into buffer. * Returns the message id. * @param buffer * @param data * @param contentRelated * @param afterId */ async writeDataAsMessage(buffer, data, contentRelated, afterId) { const msgId = this._getNewMsgId(); const seqNo = this._getSeqNo(contentRelated); let body; if (!afterId) { body = await core_1.GZIPPacked.gzipIfSmaller(contentRelated, data); } else { body = await core_1.GZIPPacked.gzipIfSmaller(contentRelated, new tl_1.Api.InvokeAfterMsg({ msgId: afterId, query: { getBytes() { return data; } } }).getBytes()); } const s = Buffer.alloc(4); s.writeInt32LE(seqNo, 0); const b = Buffer.alloc(4); b.writeInt32LE(body.length, 0); const m = (0, Helpers_1.toSignedLittleBuffer)(msgId, 8); buffer.write(Buffer.concat([m, s, b])); buffer.write(body); return msgId; } /** * Encrypts the given message data using the current authorization key * following MTProto 2.0 guidelines core.telegram.org/mtproto/description. * @param data */ async encryptMessageData(data) { if (!this.authKey) { throw new Error("Auth key unset"); } await this.authKey.waitForKey(); const authKey = this.authKey.getKey(); if (!authKey) { throw new Error("Auth key unset"); } if (!this.salt || !this.id || !authKey || !this.authKey.keyId) { throw new Error("Unset params"); } const s = (0, Helpers_1.toSignedLittleBuffer)(this.salt, 8); const i = (0, Helpers_1.toSignedLittleBuffer)(this.id, 8); data = Buffer.concat([Buffer.concat([s, i]), data]); const padding = __1.helpers.generateRandomBytes(__1.helpers.mod(-(data.length + 12), 16) + 12); const msgKeyLarge = await (0, Helpers_1.sha256)(Buffer.concat([authKey.slice(88, 88 + 32), data, padding])); const msgKey = msgKeyLarge.slice(8, 24); const { iv, key } = await this._calcKey(authKey, msgKey, true); const keyId = __1.helpers.readBufferFromBigInt(this.authKey.keyId, 8); return Buffer.concat([ keyId, msgKey, new IGE_1.IGE(key, iv).encryptIge(Buffer.concat([data, padding])) ]); } /** * Inverse of `encrypt_message_data` for incoming server messages. * @param body */ async decryptMessageData(body) { if (!this.authKey) { throw new Error("Auth key unset"); } if (body.length < 8) { throw new errors_1.InvalidBufferError(body); } const keyId = __1.helpers.readBigIntFromBuffer(body.slice(0, 8)); if (!this.authKey.keyId || keyId.neq(this.authKey.keyId)) { throw new errors_1.SecurityError("Server replied with an invalid auth key"); } const authKey = this.authKey.getKey(); if (!authKey) { throw new errors_1.SecurityError("Unset AuthKey"); } const msgKey = body.slice(8, 24); const { iv, key } = await this._calcKey(authKey, msgKey, false); body = new IGE_1.IGE(key, iv).decryptIge(body.slice(24)); const ourKey = await (0, Helpers_1.sha256)(Buffer.concat([authKey.slice(96, 96 + 32), body])); if (!msgKey.equals(ourKey.slice(8, 24))) { throw new errors_1.SecurityError("Received msg_key doesn't match with expected one"); } const reader = new extensions_1.BinaryReader(body); reader.readLong(); const serverId = reader.readLong(); if (serverId.neq(this.id)) { } const remoteMsgId = reader.readLong(); if (this.msgIds.includes(remoteMsgId.toString()) && this.securityChecks) { throw new errors_1.SecurityError("Duplicate msgIds"); } if (this.msgIds.length > 500) { this.msgIds.shift(); } this.msgIds.push(remoteMsgId.toString()); const remoteSequence = reader.readInt(); reader.readInt(); const obj = reader.tgReadObject(); return new core_1.TLMessage(remoteMsgId, remoteSequence, obj); } /** * Generates a new unique message ID based on the current * time (in ms) since epoch, applying a known time offset. * @private */ _getNewMsgId() { const now = (/* @__PURE__ */ new Date()).getTime() / 1e3 + this.timeOffset; const nanoseconds = Math.floor((now - Math.floor(now)) * 1e9); let newMsgId = (0, big_integer_1.default)(Math.floor(now)).shiftLeft((0, big_integer_1.default)(32)).or((0, big_integer_1.default)(nanoseconds).shiftLeft((0, big_integer_1.default)(2))); if (this._lastMsgId.greaterOrEquals(newMsgId)) { newMsgId = this._lastMsgId.add((0, big_integer_1.default)(4)); } this._lastMsgId = newMsgId; return newMsgId; } /** * Updates the time offset to the correct * one given a known valid message ID. * @param correctMsgId {BigInteger} */ updateTimeOffset(correctMsgId) { const bad = this._getNewMsgId(); const old = this.timeOffset; const now = Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3); const correct = correctMsgId.shiftRight((0, big_integer_1.default)(32)).toJSNumber(); this.timeOffset = correct - now; if (this.timeOffset !== old) { this._lastMsgId = big_integer_1.default.zero; this._log.debug(`Updated time offset (old offset ${old}, bad ${bad}, good ${correctMsgId}, new ${this.timeOffset})`); } return this.timeOffset; } /** * Generates the next sequence number depending on whether * it should be for a content-related query or not. * @param contentRelated * @private */ _getSeqNo(contentRelated) { if (contentRelated) { const result = this._sequence * 2 + 1; this._sequence += 1; return result; } else { return this._sequence * 2; } } }; exports2.MTProtoState = MTProtoState; } }); // node_modules/telegram/network/MTProtoPlainSender.js var require_MTProtoPlainSender = __commonJS({ "node_modules/telegram/network/MTProtoPlainSender.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MTProtoPlainSender = void 0; var big_integer_1 = __importDefault2(require_BigInteger()); var MTProtoState_1 = require_MTProtoState(); var Helpers_1 = require_Helpers(); var errors_1 = require_errors(); var extensions_1 = require_extensions(); var MTProtoPlainSender = class { /** * Initializes the MTProto plain sender. * @param connection connection: the Connection to be used. * @param loggers */ constructor(connection, loggers) { this._state = new MTProtoState_1.MTProtoState(void 0, loggers); this._connection = connection; } /** * Sends and receives the result for the given request. * @param request */ async send(request) { let body = request.getBytes(); let msgId = this._state._getNewMsgId(); const m = (0, Helpers_1.toSignedLittleBuffer)(msgId, 8); const b = Buffer.alloc(4); b.writeInt32LE(body.length, 0); const res = Buffer.concat([ Buffer.concat([Buffer.alloc(8), m, b]), body ]); await this._connection.send(res); body = await this._connection.recv(); if (body.length < 8) { throw new errors_1.InvalidBufferError(body); } const reader = new extensions_1.BinaryReader(body); const authKeyId = reader.readLong(); if (authKeyId.neq((0, big_integer_1.default)(0))) { throw new Error("Bad authKeyId"); } msgId = reader.readLong(); if (msgId.eq((0, big_integer_1.default)(0))) { throw new Error("Bad msgId"); } const length = reader.readInt(); if (length <= 0) { throw new Error("Bad length"); } return reader.tgReadObject(); } }; exports2.MTProtoPlainSender = MTProtoPlainSender; } }); // node_modules/telegram/crypto/Factorizator.js var require_Factorizator = __commonJS({ "node_modules/telegram/crypto/Factorizator.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Factorizator = void 0; var big_integer_1 = __importDefault2(require_BigInteger()); var Helpers_1 = require_Helpers(); var Factorizator = class _Factorizator { /** * Calculates the greatest common divisor * @param a {BigInteger} * @param b {BigInteger} * @returns {BigInteger} */ static gcd(a, b) { while (b.neq(big_integer_1.default.zero)) { const temp = b; b = a.remainder(b); a = temp; } return a; } /** * Factorizes the given number and returns both the divisor and the number divided by the divisor * @param pq {BigInteger} * @returns {{p: *, q: *}} */ static factorize(pq) { if (pq.remainder(2).equals(big_integer_1.default.zero)) { return { p: (0, big_integer_1.default)(2), q: pq.divide((0, big_integer_1.default)(2)) }; } let y = big_integer_1.default.randBetween((0, big_integer_1.default)(1), pq.minus(1)); const c = big_integer_1.default.randBetween((0, big_integer_1.default)(1), pq.minus(1)); const m = big_integer_1.default.randBetween((0, big_integer_1.default)(1), pq.minus(1)); let g = big_integer_1.default.one; let r = big_integer_1.default.one; let q = big_integer_1.default.one; let x = big_integer_1.default.zero; let ys = big_integer_1.default.zero; let k; while (g.eq(big_integer_1.default.one)) { x = y; for (let i = 0; (0, big_integer_1.default)(i).lesser(r); i++) { y = (0, Helpers_1.modExp)(y, (0, big_integer_1.default)(2), pq).add(c).remainder(pq); } k = big_integer_1.default.zero; while (k.lesser(r) && g.eq(big_integer_1.default.one)) { ys = y; const condition = big_integer_1.default.min(m, r.minus(k)); for (let i = 0; (0, big_integer_1.default)(i).lesser(condition); i++) { y = (0, Helpers_1.modExp)(y, (0, big_integer_1.default)(2), pq).add(c).remainder(pq); q = q.multiply(x.minus(y).abs()).remainder(pq); } g = _Factorizator.gcd(q, pq); k = k.add(m); } r = r.multiply(2); } if (g.eq(pq)) { while (true) { ys = (0, Helpers_1.modExp)(ys, (0, big_integer_1.default)(2), pq).add(c).remainder(pq); g = _Factorizator.gcd(x.minus(ys).abs(), pq); if (g.greater(1)) { break; } } } const p = g; q = pq.divide(g); return p < q ? { p, q } : { p: q, q: p }; } }; exports2.Factorizator = Factorizator; } }); // node_modules/telegram/crypto/RSA.js var require_RSA = __commonJS({ "node_modules/telegram/crypto/RSA.js"(exports2) { "use strict"; init_define_import_meta_env(); var __rest2 = exports2 && exports2.__rest || function(s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2._serverKeys = void 0; exports2.encrypt = encrypt2; var big_integer_1 = __importDefault2(require_BigInteger()); var Helpers_1 = require_Helpers(); var PUBLIC_KEYS = [ { fingerprint: (0, big_integer_1.default)("-3414540481677951611"), n: (0, big_integer_1.default)("29379598170669337022986177149456128565388431120058863768162556424047512191330847455146576344487764408661701890505066208632169112269581063774293102577308490531282748465986139880977280302242772832972539403531316010870401287642763009136156734339538042419388722777357134487746169093539093850251243897188928735903389451772730245253062963384108812842079887538976360465290946139638691491496062099570836476454855996319192747663615955633778034897140982517446405334423701359108810182097749467210509584293428076654573384828809574217079944388301239431309115013843331317877374435868468779972014486325557807783825502498215169806323"), e: 65537 }, { fingerprint: (0, big_integer_1.default)("-5595554452916591101"), n: (0, big_integer_1.default)("25342889448840415564971689590713473206898847759084779052582026594546022463853940585885215951168491965708222649399180603818074200620463776135424884632162512403163793083921641631564740959529419359595852941166848940585952337613333022396096584117954892216031229237302943701877588456738335398602461675225081791820393153757504952636234951323237820036543581047826906120927972487366805292115792231423684261262330394324750785450942589751755390156647751460719351439969059949569615302809050721500330239005077889855323917509948255722081644689442127297605422579707142646660768825302832201908302295573257427896031830742328565032949"), e: 65537 } ]; exports2._serverKeys = /* @__PURE__ */ new Map(); PUBLIC_KEYS.forEach((_a) => { var { fingerprint } = _a, keyInfo = __rest2(_a, ["fingerprint"]); exports2._serverKeys.set(fingerprint.toString(), keyInfo); }); async function encrypt2(fingerprint, data) { const key = exports2._serverKeys.get(fingerprint.toString()); if (!key) { return void 0; } const rand = (0, Helpers_1.generateRandomBytes)(235 - data.length); const toEncrypt = Buffer.concat([await (0, Helpers_1.sha1)(data), data, rand]); const payload = (0, Helpers_1.readBigIntFromBuffer)(toEncrypt, false); const encrypted = (0, Helpers_1.modExp)(payload, (0, big_integer_1.default)(key.e), key.n); return (0, Helpers_1.readBufferFromBigInt)(encrypted, 256, false); } } }); // node_modules/telegram/network/Authenticator.js var require_Authenticator = __commonJS({ "node_modules/telegram/network/Authenticator.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.doAuthentication = doAuthentication; var Helpers_1 = require_Helpers(); var tl_1 = require_tl(); var errors_1 = require_errors(); var Factorizator_1 = require_Factorizator(); var RSA_1 = require_RSA(); var IGE_1 = require_IGE(); var big_integer_1 = __importDefault2(require_BigInteger()); var extensions_1 = require_extensions(); var AuthKey_1 = require_AuthKey(); var RETRIES = 20; async function doAuthentication(sender, log) { let bytes = (0, Helpers_1.generateRandomBytes)(16); const nonce = (0, Helpers_1.readBigIntFromBuffer)(bytes, false, true); const resPQ = await sender.send(new tl_1.Api.ReqPqMulti({ nonce })); log.debug("Starting authKey generation step 1"); if (!(resPQ instanceof tl_1.Api.ResPQ)) { throw new errors_1.SecurityError(`Step 1 answer was ${resPQ}`); } if (resPQ.nonce.neq(nonce)) { throw new errors_1.SecurityError("Step 1 invalid nonce from server"); } const pq = (0, Helpers_1.readBigIntFromBuffer)(resPQ.pq, false, true); log.debug("Finished authKey generation step 1"); const { p, q } = Factorizator_1.Factorizator.factorize(pq); const pBuffer = (0, Helpers_1.getByteArray)(p); const qBuffer = (0, Helpers_1.getByteArray)(q); bytes = (0, Helpers_1.generateRandomBytes)(32); const newNonce = (0, Helpers_1.readBigIntFromBuffer)(bytes, true, true); const pqInnerData = new tl_1.Api.PQInnerData({ pq: (0, Helpers_1.getByteArray)(pq), // unsigned p: pBuffer, q: qBuffer, nonce: resPQ.nonce, serverNonce: resPQ.serverNonce, newNonce }).getBytes(); if (pqInnerData.length > 144) { throw new errors_1.SecurityError("Step 1 invalid nonce from server"); } let targetFingerprint; let targetKey; for (const fingerprint of resPQ.serverPublicKeyFingerprints) { targetKey = RSA_1._serverKeys.get(fingerprint.toString()); if (targetKey !== void 0) { targetFingerprint = fingerprint; break; } } if (targetFingerprint === void 0 || targetKey === void 0) { throw new errors_1.SecurityError("Step 2 could not find a valid key for fingerprints"); } const padding = (0, Helpers_1.generateRandomBytes)(192 - pqInnerData.length); const dataWithPadding = Buffer.concat([pqInnerData, padding]); const dataPadReversed = Buffer.from(dataWithPadding).reverse(); let encryptedData; for (let i = 0; i < RETRIES; i++) { const tempKey = (0, Helpers_1.generateRandomBytes)(32); const shaDigestKeyWithData = await (0, Helpers_1.sha256)(Buffer.concat([tempKey, dataWithPadding])); const dataWithHash = Buffer.concat([ dataPadReversed, shaDigestKeyWithData ]); const ige2 = new IGE_1.IGE(tempKey, Buffer.alloc(32)); const aesEncrypted = ige2.encryptIge(dataWithHash); const tempKeyXor = (0, Helpers_1.bufferXor)(tempKey, await (0, Helpers_1.sha256)(aesEncrypted)); const keyAesEncrypted = Buffer.concat([tempKeyXor, aesEncrypted]); const keyAesEncryptedInt = (0, Helpers_1.readBigIntFromBuffer)(keyAesEncrypted, false, false); if (keyAesEncryptedInt.greaterOrEquals(targetKey.n)) { log.debug("Aes key greater than RSA. retrying"); continue; } const encryptedDataBuffer = (0, Helpers_1.modExp)(keyAesEncryptedInt, (0, big_integer_1.default)(targetKey.e), targetKey.n); encryptedData = (0, Helpers_1.readBufferFromBigInt)(encryptedDataBuffer, 256, false, false); break; } if (encryptedData === void 0) { throw new errors_1.SecurityError("Step 2 could create a secure encrypted key"); } log.debug("Step 2 : Generated a secure aes encrypted data"); const serverDhParams = await sender.send(new tl_1.Api.ReqDHParams({ nonce: resPQ.nonce, serverNonce: resPQ.serverNonce, p: pBuffer, q: qBuffer, publicKeyFingerprint: targetFingerprint, encryptedData })); if (!(serverDhParams instanceof tl_1.Api.ServerDHParamsOk || serverDhParams instanceof tl_1.Api.ServerDHParamsFail)) { throw new Error(`Step 2.1 answer was ${serverDhParams}`); } if (serverDhParams.nonce.neq(resPQ.nonce)) { throw new errors_1.SecurityError("Step 2 invalid nonce from server"); } if (serverDhParams.serverNonce.neq(resPQ.serverNonce)) { throw new errors_1.SecurityError("Step 2 invalid server nonce from server"); } if (serverDhParams instanceof tl_1.Api.ServerDHParamsFail) { const sh = await (0, Helpers_1.sha1)((0, Helpers_1.toSignedLittleBuffer)(newNonce, 32).slice(4, 20)); const nnh = (0, Helpers_1.readBigIntFromBuffer)(sh, true, true); if (serverDhParams.newNonceHash.neq(nnh)) { throw new errors_1.SecurityError("Step 2 invalid DH fail nonce from server"); } } if (!(serverDhParams instanceof tl_1.Api.ServerDHParamsOk)) { throw new Error(`Step 2.2 answer was ${serverDhParams}`); } log.debug("Finished authKey generation step 2"); log.debug("Starting authKey generation step 3"); const { key, iv } = await (0, Helpers_1.generateKeyDataFromNonce)(resPQ.serverNonce, newNonce); if (serverDhParams.encryptedAnswer.length % 16 !== 0) { throw new errors_1.SecurityError("Step 3 AES block size mismatch"); } const ige = new IGE_1.IGE(key, iv); const plainTextAnswer = ige.decryptIge(serverDhParams.encryptedAnswer); const reader = new extensions_1.BinaryReader(plainTextAnswer); reader.read(20); const serverDhInner = reader.tgReadObject(); if (!(serverDhInner instanceof tl_1.Api.ServerDHInnerData)) { throw new Error(`Step 3 answer was ${serverDhInner}`); } if (serverDhInner.nonce.neq(resPQ.nonce)) { throw new errors_1.SecurityError("Step 3 Invalid nonce in encrypted answer"); } if (serverDhInner.serverNonce.neq(resPQ.serverNonce)) { throw new errors_1.SecurityError("Step 3 Invalid server nonce in encrypted answer"); } const dhPrime = (0, Helpers_1.readBigIntFromBuffer)(serverDhInner.dhPrime, false, false); const ga = (0, Helpers_1.readBigIntFromBuffer)(serverDhInner.gA, false, false); const timeOffset = serverDhInner.serverTime - Math.floor((/* @__PURE__ */ new Date()).getTime() / 1e3); const b = (0, Helpers_1.readBigIntFromBuffer)((0, Helpers_1.generateRandomBytes)(256), false, false); const gb = (0, Helpers_1.modExp)((0, big_integer_1.default)(serverDhInner.g), b, dhPrime); const gab = (0, Helpers_1.modExp)(ga, b, dhPrime); const clientDhInner = new tl_1.Api.ClientDHInnerData({ nonce: resPQ.nonce, serverNonce: resPQ.serverNonce, retryId: big_integer_1.default.zero, // TODO Actual retry ID gB: (0, Helpers_1.getByteArray)(gb, false) }).getBytes(); const clientDdhInnerHashed = Buffer.concat([ await (0, Helpers_1.sha1)(clientDhInner), clientDhInner ]); const clientDhEncrypted = ige.encryptIge(clientDdhInnerHashed); const dhGen = await sender.send(new tl_1.Api.SetClientDHParams({ nonce: resPQ.nonce, serverNonce: resPQ.serverNonce, encryptedData: clientDhEncrypted })); const nonceTypes = [tl_1.Api.DhGenOk, tl_1.Api.DhGenRetry, tl_1.Api.DhGenFail]; const nonceTypesString = ["DhGenOk", "DhGenRetry", "DhGenFail"]; if (!(dhGen instanceof nonceTypes[0] || dhGen instanceof nonceTypes[1] || dhGen instanceof nonceTypes[2])) { throw new Error(`Step 3.1 answer was ${dhGen}`); } const { name } = dhGen.constructor; if (dhGen.nonce.neq(resPQ.nonce)) { throw new errors_1.SecurityError(`Step 3 invalid ${name} nonce from server`); } if (dhGen.serverNonce.neq(resPQ.serverNonce)) { throw new errors_1.SecurityError(`Step 3 invalid ${name} server nonce from server`); } const authKey = new AuthKey_1.AuthKey(); await authKey.setKey((0, Helpers_1.getByteArray)(gab)); const nonceNumber = 1 + nonceTypesString.indexOf(dhGen.className); const newNonceHash = await authKey.calcNewNonceHash(newNonce, nonceNumber); const dhHash = dhGen[`newNonceHash${nonceNumber}`]; if (dhHash.neq(newNonceHash)) { throw new errors_1.SecurityError("Step 3 invalid new nonce hash"); } if (!(dhGen instanceof tl_1.Api.DhGenOk)) { throw new Error(`Step 3.2 answer was ${dhGen}`); } log.debug("Finished authKey generation step 3"); return { authKey, timeOffset }; } } }); // node_modules/telegram/extensions/PendingState.js var require_PendingState = __commonJS({ "node_modules/telegram/extensions/PendingState.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.PendingState = void 0; var PendingState = class { constructor() { this._pending = /* @__PURE__ */ new Map(); } set(msgId, state2) { this._pending.set(msgId.toString(), state2); } get(msgId) { return this._pending.get(msgId.toString()); } getAndDelete(msgId) { const state2 = this.get(msgId); this.delete(msgId); return state2; } values() { return Array.from(this._pending.values()); } delete(msgId) { this._pending.delete(msgId.toString()); } clear() { this._pending.clear(); } }; exports2.PendingState = PendingState; } }); // node_modules/telegram/network/MTProtoSender.js var require_MTProtoSender = __commonJS({ "node_modules/telegram/network/MTProtoSender.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.MTProtoSender = void 0; var AuthKey_1 = require_AuthKey(); var MTProtoState_1 = require_MTProtoState(); var extensions_1 = require_extensions(); var core_1 = require_core(); var tl_1 = require_tl(); var big_integer_1 = __importDefault2(require_BigInteger()); var Helpers_1 = require_Helpers(); var RequestState_1 = require_RequestState(); var Authenticator_1 = require_Authenticator(); var MTProtoPlainSender_1 = require_MTProtoPlainSender(); var errors_1 = require_errors(); var _1 = require_network(); var Logger_1 = require_Logger(); var async_mutex_1 = require_lib16(); var PendingState_1 = require_PendingState(); var MsgsAck = tl_1.Api.MsgsAck; var MTProtoSender = class _MTProtoSender { /** * @param authKey * @param opts */ constructor(authKey, opts) { this._exportedSenderPromises = /* @__PURE__ */ new Map(); const args = Object.assign(Object.assign({}, _MTProtoSender.DEFAULT_OPTIONS), opts); this._finishedConnecting = false; this._cancelSend = false; this._connection = void 0; this._log = args.logger; this._dcId = args.dcId; this._retries = args.retries; this._currentRetries = 0; this._reconnectRetries = args.reconnectRetries; this._delay = args.delay; this._autoReconnect = args.autoReconnect; this._connectTimeout = args.connectTimeout; this._authKeyCallback = args.authKeyCallback; this._updateCallback = args.updateCallback; this._autoReconnectCallback = args.autoReconnectCallback; this._isMainSender = args.isMainSender; this._senderCallback = args.senderCallback; this._client = args.client; this._onConnectionBreak = args.onConnectionBreak; this._securityChecks = args.securityChecks; this._connectMutex = new async_mutex_1.Mutex(); this._exportedSenderPromises = args._exportedSenderPromises; this.userDisconnected = false; this.isConnecting = false; this._authenticated = false; this._userConnected = false; this.isReconnecting = false; this._reconnecting = false; this._disconnected = true; this._sendLoopHandle = null; this._recvLoopHandle = null; this.authKey = authKey || new AuthKey_1.AuthKey(); this._state = new MTProtoState_1.MTProtoState(this.authKey, this._log, this._securityChecks); this._sendQueue = new extensions_1.MessagePacker(this._state, this._log); this._pendingState = new PendingState_1.PendingState(); this._pendingAck = /* @__PURE__ */ new Set(); this._lastAcks = []; this._handlers = { [core_1.RPCResult.CONSTRUCTOR_ID.toString()]: this._handleRPCResult.bind(this), [core_1.MessageContainer.CONSTRUCTOR_ID.toString()]: this._handleContainer.bind(this), [core_1.GZIPPacked.CONSTRUCTOR_ID.toString()]: this._handleGzipPacked.bind(this), [tl_1.Api.Pong.CONSTRUCTOR_ID.toString()]: this._handlePong.bind(this), [tl_1.Api.BadServerSalt.CONSTRUCTOR_ID.toString()]: this._handleBadServerSalt.bind(this), [tl_1.Api.BadMsgNotification.CONSTRUCTOR_ID.toString()]: this._handleBadNotification.bind(this), [tl_1.Api.MsgDetailedInfo.CONSTRUCTOR_ID.toString()]: this._handleDetailedInfo.bind(this), [tl_1.Api.MsgNewDetailedInfo.CONSTRUCTOR_ID.toString()]: this._handleNewDetailedInfo.bind(this), [tl_1.Api.NewSessionCreated.CONSTRUCTOR_ID.toString()]: this._handleNewSessionCreated.bind(this), [tl_1.Api.MsgsAck.CONSTRUCTOR_ID.toString()]: this._handleAck.bind(this), [tl_1.Api.FutureSalts.CONSTRUCTOR_ID.toString()]: this._handleFutureSalts.bind(this), [tl_1.Api.MsgsStateReq.CONSTRUCTOR_ID.toString()]: this._handleStateForgotten.bind(this), [tl_1.Api.MsgResendReq.CONSTRUCTOR_ID.toString()]: this._handleStateForgotten.bind(this), [tl_1.Api.MsgsAllInfo.CONSTRUCTOR_ID.toString()]: this._handleMsgAll.bind(this) }; } set dcId(dcId) { this._dcId = dcId; } get dcId() { return this._dcId; } // Public API /** * Connects to the specified given connection using the given auth key. */ async connect(connection, force) { this.userDisconnected = false; if (this._userConnected && !force) { this._log.info("User is already connected!"); return false; } this.isConnecting = true; this._connection = connection; this._finishedConnecting = false; for (let attempt = 0; attempt < this._retries; attempt++) { try { await this._connect(); if (this._updateCallback) { this._updateCallback(this._client, new _1.UpdateConnectionState(_1.UpdateConnectionState.connected)); } this._finishedConnecting = true; break; } catch (err) { if (this._updateCallback && attempt === 0) { this._updateCallback(this._client, new _1.UpdateConnectionState(_1.UpdateConnectionState.disconnected)); } this._log.error(`WebSocket connection failed attempt: ${attempt + 1}`); if (this._client._errorHandler) { await this._client._errorHandler(err); } if (this._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(err); } await (0, Helpers_1.sleep)(this._delay); } } this.isConnecting = false; return this._finishedConnecting; } isConnected() { return this._userConnected; } _transportConnected() { return !this._reconnecting && this._connection && this._connection._connected; } /** * Cleanly disconnects the instance from the network, cancels * all pending requests, and closes the send and receive loops. */ async disconnect() { this.userDisconnected = true; this._log.warn("Disconnecting..."); await this._disconnect(); } /** * This method enqueues the given request to be sent. Its send state will be saved until a response arrives, and a ``Future`` that will be resolved when the response arrives will be returned: .. code-block:: javascript async def method(): # Sending (enqueued for the send loop) future = sender.send(request) # Receiving (waits for the receive loop to read the result) result = await future Designed like this because Telegram may send the response at any point, and it can send other items while one waits for it. Once the response for this future arrives, it is set with the received result, quite similar to how a ``receive()`` call would otherwise work. Since the receiving part is "built in" the future, it's impossible to await receive a result that was never sent. * @param request * @returns {RequestState} */ send(request) { const state2 = new RequestState_1.RequestState(request); this._log.debug(`Send ${request.className}`); this._sendQueue.append(state2); return state2.promise; } addStateToQueue(state2) { this._sendQueue.append(state2); } /** * Performs the actual connection, retrying, generating the * authorization key if necessary, and starting the send and * receive loops. * @returns {Promise<void>} * @private */ async _connect() { const connection = this._connection; if (!connection.isConnected()) { this._log.info("Connecting to {0}...".replace("{0}", connection.toString())); await connection.connect(); this._log.debug("Connection success!"); } if (!this.authKey.getKey()) { const plain = new MTProtoPlainSender_1.MTProtoPlainSender(connection, this._log); this._log.debug("New auth_key attempt ..."); const res = await (0, Authenticator_1.doAuthentication)(plain, this._log); this._log.debug("Generated new auth_key successfully"); await this.authKey.setKey(res.authKey); this._state.timeOffset = res.timeOffset; if (this._authKeyCallback) { await this._authKeyCallback(this.authKey, this._dcId); } } else { this._authenticated = true; this._log.debug("Already have an auth key ..."); } this._userConnected = true; this.isReconnecting = false; if (!this._sendLoopHandle) { this._log.debug("Starting send loop"); this._sendLoopHandle = this._sendLoop(); } if (!this._recvLoopHandle) { this._log.debug("Starting receive loop"); this._recvLoopHandle = this._recvLoop(); } this._log.info("Connection to %s complete!".replace("%s", connection.toString())); } async _disconnect() { const connection = this._connection; if (this._updateCallback) { this._updateCallback(this._client, new _1.UpdateConnectionState(_1.UpdateConnectionState.disconnected)); } if (connection === void 0) { this._log.info("Not disconnecting (already have no connection)"); return; } this._log.info("Disconnecting from %s...".replace("%s", connection.toString())); this._userConnected = false; this._log.debug("Closing current connection..."); await connection.disconnect(); } _cancelLoops() { this._cancelSend = true; this.cancellableRecvLoopPromise.cancel(); } /** * This loop is responsible for popping items off the send * queue, encrypting them, and sending them over the network. * Besides `connect`, only this method ever sends data. * @returns {Promise<void>} * @private */ async _sendLoop() { this._sendQueue.prepend(this._pendingState.values()); this._pendingState.clear(); while (this._userConnected && !this.isReconnecting) { const appendAcks = () => { if (this._pendingAck.size) { const ack = new RequestState_1.RequestState(new MsgsAck({ msgIds: Array(...this._pendingAck) })); this._sendQueue.append(ack); this._lastAcks.push(ack); if (this._lastAcks.length >= 10) { this._lastAcks.shift(); } this._pendingAck.clear(); } }; appendAcks(); this._log.debug(`Waiting for messages to send... ${this.isReconnecting}`); await this._sendQueue.wait(); appendAcks(); const res = await this._sendQueue.get(); this._log.debug(`Got ${res === null || res === void 0 ? void 0 : res.batch.length} message(s) to send`); if (this.isReconnecting) { this._log.debug("Reconnecting"); this._sendLoopHandle = void 0; return; } if (!res) { continue; } let { data } = res; const { batch } = res; this._log.debug(`Encrypting ${batch.length} message(s) in ${data.length} bytes for sending`); this._log.debug(`Sending ${batch.map((m) => m.request.className)}`); data = await this._state.encryptMessageData(data); for (const state2 of batch) { if (!Array.isArray(state2)) { if (state2.request.classType === "request") { this._pendingState.set(state2.msgId, state2); } } else { for (const s of state2) { if (s.request.classType === "request") { this._pendingState.set(s.msgId, s); } } } } try { await this._connection.send(data); } catch (e) { if (!this.userDisconnected) { this._log.debug(`Connection closed while sending data ${e}`); if (this._log.canSend(Logger_1.LogLevel.DEBUG)) { console.error(e); } this.reconnect(); } this._sendLoopHandle = void 0; return; } this._log.debug("Encrypted messages put in a queue to be sent"); } this._sendLoopHandle = void 0; } async _recvLoop() { let body; let message; while (this._userConnected && !this.isReconnecting) { this._log.debug("Receiving items from the network..."); try { body = await this._connection.recv(); } catch (e) { if (this._currentRetries > this._reconnectRetries) { for (const state2 of this._pendingState.values()) { state2.reject("Maximum reconnection retries reached. Aborting!"); } this.userDisconnected = true; return; } if (!this.userDisconnected) { this._log.warn("Connection closed while receiving data"); if (this._log.canSend(Logger_1.LogLevel.WARN)) { console.error(e); } this.reconnect(); } this._recvLoopHandle = void 0; return; } try { message = await this._state.decryptMessageData(body); } catch (e) { this._log.debug(`Error while receiving items from the network ${e}`); if (e instanceof errors_1.TypeNotFoundError) { this._log.info(`Type ${e.invalidConstructorId} not found, remaining data ${e.remaining}`); continue; } else if (e instanceof errors_1.SecurityError) { this._log.warn(`Security error while unpacking a received message: ${e}`); continue; } else if (e instanceof errors_1.InvalidBufferError) { if (e.code === 404) { this._handleBadAuthKey(); } else { this._log.warn(`Invalid buffer ${e.code} for dc ${this._dcId}`); this.reconnect(); } this._recvLoopHandle = void 0; return; } else { this._log.error("Unhandled error while receiving data"); if (this._client._errorHandler) { await this._client._errorHandler(e); } if (this._log.canSend(Logger_1.LogLevel.ERROR)) { console.log(e); } this.reconnect(); this._recvLoopHandle = void 0; return; } } try { await this._processMessage(message); } catch (e) { if (e instanceof errors_1.RPCError) { if (e.message === "AUTH_KEY_UNREGISTERED" || e.message === "SESSION_REVOKED") { this._handleBadAuthKey(true); } } else { this._log.error("Unhandled error while receiving data"); if (this._client._errorHandler) { await this._client._errorHandler(e); } if (this._log.canSend(Logger_1.LogLevel.ERROR)) { console.log(e); } } } this._currentRetries = 0; } this._recvLoopHandle = void 0; } // Response Handlers _handleBadAuthKey(shouldSkipForMain = false) { if (shouldSkipForMain && this._isMainSender) { return; } this._log.warn(`Broken authorization key for dc ${this._dcId}, resetting...`); if (this._isMainSender && this._updateCallback) { this._updateCallback(this._client, new _1.UpdateConnectionState(_1.UpdateConnectionState.broken)); } else if (!this._isMainSender && this._onConnectionBreak) { this._onConnectionBreak(this._dcId); } } /** * Adds the given message to the list of messages that must be * acknowledged and dispatches control to different ``_handle_*`` * method based on its type. * @param message * @returns {Promise<void>} * @private */ async _processMessage(message) { this._pendingAck.add(message.msgId); message.obj = await message.obj; let handler = this._handlers[message.obj.CONSTRUCTOR_ID.toString()]; if (!handler) { handler = this._handleUpdate.bind(this); } await handler(message); } /** * Pops the states known to match the given ID from pending messages. * This method should be used when the response isn't specific. * @param msgId * @returns {*[]} * @private */ _popStates(msgId) { var _a; const state2 = this._pendingState.getAndDelete(msgId); if (state2) { return [state2]; } const toPop = []; for (const pendingState of this._pendingState.values()) { if ((_a = pendingState.containerId) === null || _a === void 0 ? void 0 : _a.equals(msgId)) { toPop.push(pendingState.msgId); } } if (toPop.length) { const temp = []; for (const x of toPop) { temp.push(this._pendingState.getAndDelete(x)); } return temp; } for (const ack of this._lastAcks) { if (ack.msgId === msgId) { return [ack]; } } return []; } /** * Handles the result for Remote Procedure Calls: * rpc_result#f35c6d01 req_msg_id:long result:bytes = RpcResult; * This is where the future results for sent requests are set. * @param message * @returns {Promise<void>} * @private */ _handleRPCResult(message) { const result = message.obj; const state2 = this._pendingState.getAndDelete(result.reqMsgId); this._log.debug(`Handling RPC result for message ${result.reqMsgId}`); if (!state2) { try { const reader = new extensions_1.BinaryReader(result.body); if (!(reader.tgReadObject() instanceof tl_1.Api.upload.File)) { throw new errors_1.TypeNotFoundError(0, Buffer.alloc(0)); } } catch (e) { if (e instanceof errors_1.TypeNotFoundError) { this._log.info(`Received response without parent request: ${result.body}`); return; } throw e; } return; } if (result.error) { const error = (0, errors_1.RPCMessageToError)(result.error, state2.request); this._sendQueue.append(new RequestState_1.RequestState(new MsgsAck({ msgIds: [state2.msgId] }))); state2.reject(error); throw error; } else { try { const reader = new extensions_1.BinaryReader(result.body); const read = state2.request.readResult(reader); this._log.debug(`Handling RPC result ${read === null || read === void 0 ? void 0 : read.className}`); state2.resolve(read); } catch (err) { state2.reject(err); throw err; } } } /** * Processes the inner messages of a container with many of them: * msg_container#73f1f8dc messages:vector<%Message> = MessageContainer; * @param message * @returns {Promise<void>} * @private */ async _handleContainer(message) { this._log.debug("Handling container"); for (const innerMessage of message.obj.messages) { await this._processMessage(innerMessage); } } /** * Unpacks the data from a gzipped object and processes it: * gzip_packed#3072cfa1 packed_data:bytes = Object; * @param message * @returns {Promise<void>} * @private */ async _handleGzipPacked(message) { this._log.debug("Handling gzipped data"); const reader = new extensions_1.BinaryReader(message.obj.data); message.obj = reader.tgReadObject(); await this._processMessage(message); } async _handleUpdate(message) { if (message.obj.SUBCLASS_OF_ID !== 2331323052) { this._log.warn(`Note: ${message.obj.className} is not an update, not dispatching it`); return; } this._log.debug("Handling update " + message.obj.className); if (this._updateCallback) { this._updateCallback(this._client, message.obj); } } /** * Handles pong results, which don't come inside a ``RPCResult`` * but are still sent through a request: * pong#347773c5 msg_id:long ping_id:long = Pong; * @param message * @returns {Promise<void>} * @private */ async _handlePong(message) { const pong = message.obj; this._log.debug(`Handling pong for message ${pong.msgId}`); const state2 = this._pendingState.get(pong.msgId.toString()); this._pendingState.delete(pong.msgId.toString()); if (state2) { state2.resolve(pong); } } /** * Corrects the currently used server salt to use the right value * before enqueuing the rejected message to be re-sent: * bad_server_salt#edab447b bad_msg_id:long bad_msg_seqno:int * error_code:int new_server_salt:long = BadMsgNotification; * @param message * @returns {Promise<void>} * @private */ async _handleBadServerSalt(message) { const badSalt = message.obj; this._log.debug(`Handling bad salt for message ${badSalt.badMsgId}`); this._state.salt = badSalt.newServerSalt; const states = this._popStates(badSalt.badMsgId); this._sendQueue.extend(states); this._log.debug(`${states.length} message(s) will be resent`); } /** * Adjusts the current state to be correct based on the * received bad message notification whenever possible: * bad_msg_notification#a7eff811 bad_msg_id:long bad_msg_seqno:int * error_code:int = BadMsgNotification; * @param message * @returns {Promise<void>} * @private */ async _handleBadNotification(message) { const badMsg = message.obj; const states = this._popStates(badMsg.badMsgId); this._log.debug(`Handling bad msg ${JSON.stringify(badMsg)}`); if ([16, 17].includes(badMsg.errorCode)) { const to = this._state.updateTimeOffset((0, big_integer_1.default)(message.msgId)); this._log.info(`System clock is wrong, set time offset to ${to}s`); } else if (badMsg.errorCode === 32) { this._state._sequence += 64; } else if (badMsg.errorCode === 33) { this._state._sequence -= 16; } else { for (const state2 of states) { state2.reject(new errors_1.BadMessageError(state2.request, badMsg.errorCode)); } return; } this._sendQueue.extend(states); this._log.debug(`${states.length} messages will be resent due to bad msg`); } /** * Updates the current status with the received detailed information: * msg_detailed_info#276d3ec6 msg_id:long answer_msg_id:long * bytes:int status:int = MsgDetailedInfo; * @param message * @returns {Promise<void>} * @private */ async _handleDetailedInfo(message) { const msgId = message.obj.answerMsgId; this._log.debug(`Handling detailed info for message ${msgId}`); this._pendingAck.add(msgId); } /** * Updates the current status with the received detailed information: * msg_new_detailed_info#809db6df answer_msg_id:long * bytes:int status:int = MsgDetailedInfo; * @param message * @returns {Promise<void>} * @private */ async _handleNewDetailedInfo(message) { const msgId = message.obj.answerMsgId; this._log.debug(`Handling new detailed info for message ${msgId}`); this._pendingAck.add(msgId); } /** * Updates the current status with the received session information: * new_session_created#9ec20908 first_msg_id:long unique_id:long * server_salt:long = NewSession; * @param message * @returns {Promise<void>} * @private */ async _handleNewSessionCreated(message) { this._log.debug("Handling new session created"); this._state.salt = message.obj.serverSalt; } /** * Handles a server acknowledge about our messages. Normally these can be ignored */ _handleAck() { } /** * Handles future salt results, which don't come inside a * ``rpc_result`` but are still sent through a request: * future_salts#ae500895 req_msg_id:long now:int * salts:vector<future_salt> = FutureSalts; * @param message * @returns {Promise<void>} * @private */ async _handleFutureSalts(message) { this._log.debug(`Handling future salts for message ${message.msgId}`); const state2 = this._pendingState.getAndDelete(message.msgId); if (state2) { state2.resolve(message.obj); } } /** * Handles both :tl:`MsgsStateReq` and :tl:`MsgResendReq` by * enqueuing a :tl:`MsgsStateInfo` to be sent at a later point. * @param message * @returns {Promise<void>} * @private */ async _handleStateForgotten(message) { this._sendQueue.append(new RequestState_1.RequestState(new tl_1.Api.MsgsStateInfo({ reqMsgId: message.msgId, info: String.fromCharCode(1).repeat(message.obj.msgIds) }))); } /** * Handles :tl:`MsgsAllInfo` by doing nothing (yet). * @param message * @returns {Promise<void>} * @private */ async _handleMsgAll(message) { } reconnect() { if (this._userConnected && !this.isReconnecting) { this.isReconnecting = true; this._currentRetries++; if (this._isMainSender) { this._log.debug("Reconnecting all senders"); for (const promise of this._exportedSenderPromises.values()) { promise.then((sender) => { if (sender && !sender._isMainSender) { sender.reconnect(); } }).catch((error) => { this._log.warn("Error getting sender to reconnect to"); }); } } (0, Helpers_1.sleep)(1e3).then(() => { this._log.info("Started reconnecting"); this._reconnect(); }); } } async _reconnect() { try { this._log.warn("[Reconnect] Closing current connection..."); await this._disconnect(); } catch (err) { this._log.warn("Error happened while disconnecting"); if (this._client._errorHandler) { await this._client._errorHandler(err); } if (this._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(err); } } this._log.debug(`Adding ${this._sendQueue._pendingStates.length} old request to resend`); for (let i = 0; i < this._sendQueue._pendingStates.length; i++) { if (this._sendQueue._pendingStates[i].msgId != void 0) { this._pendingState.set(this._sendQueue._pendingStates[i].msgId, this._sendQueue._pendingStates[i]); } } this._sendQueue.clear(); this._state.reset(); const connection = this._connection; const newConnection = new connection.constructor({ ip: connection._ip, port: connection._port, dcId: connection._dcId, loggers: connection._log, proxy: connection._proxy, testServers: connection._testServers, socket: this._client.networkSocket }); await this.connect(newConnection, true); this.isReconnecting = false; this._sendQueue.prepend(this._pendingState.values()); this._pendingState.clear(); if (this._autoReconnectCallback) { await this._autoReconnectCallback(); } } }; exports2.MTProtoSender = MTProtoSender; MTProtoSender.DEFAULT_OPTIONS = { logger: null, reconnectRetries: Infinity, retries: Infinity, delay: 2e3, autoReconnect: true, connectTimeout: null, authKeyCallback: null, updateCallback: null, autoReconnectCallback: null, isMainSender: null, senderCallback: null, onConnectionBreak: void 0, securityChecks: true }; } }); // node_modules/telegram/network/index.js var require_network = __commonJS({ "node_modules/telegram/network/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ConnectionTCPObfuscated = exports2.ConnectionTCPAbridged = exports2.ConnectionTCPFull = exports2.Connection = exports2.UpdateConnectionState = exports2.MTProtoSender = exports2.doAuthentication = exports2.MTProtoPlainSender = void 0; var MTProtoPlainSender_1 = require_MTProtoPlainSender(); Object.defineProperty(exports2, "MTProtoPlainSender", { enumerable: true, get: function() { return MTProtoPlainSender_1.MTProtoPlainSender; } }); var Authenticator_1 = require_Authenticator(); Object.defineProperty(exports2, "doAuthentication", { enumerable: true, get: function() { return Authenticator_1.doAuthentication; } }); var MTProtoSender_1 = require_MTProtoSender(); Object.defineProperty(exports2, "MTProtoSender", { enumerable: true, get: function() { return MTProtoSender_1.MTProtoSender; } }); var UpdateConnectionState = class { constructor(state2) { this.state = state2; } }; exports2.UpdateConnectionState = UpdateConnectionState; UpdateConnectionState.disconnected = -1; UpdateConnectionState.connected = 1; UpdateConnectionState.broken = 0; var connection_1 = require_connection(); Object.defineProperty(exports2, "Connection", { enumerable: true, get: function() { return connection_1.Connection; } }); Object.defineProperty(exports2, "ConnectionTCPFull", { enumerable: true, get: function() { return connection_1.ConnectionTCPFull; } }); Object.defineProperty(exports2, "ConnectionTCPAbridged", { enumerable: true, get: function() { return connection_1.ConnectionTCPAbridged; } }); Object.defineProperty(exports2, "ConnectionTCPObfuscated", { enumerable: true, get: function() { return connection_1.ConnectionTCPObfuscated; } }); } }); // node_modules/telegram/network/connection/TCPMTProxy.js var require_TCPMTProxy = __commonJS({ "node_modules/telegram/network/connection/TCPMTProxy.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ConnectionTCPMTProxyAbridged = exports2.TCPMTProxy = void 0; var Connection_1 = require_Connection(); var TCPAbridged_1 = require_TCPAbridged(); var Helpers_1 = require_Helpers(); var CTR_1 = require_CTR(); var MTProxyIO = class { constructor(connection) { this.header = void 0; this.connection = connection.socket; this._packetClass = connection.PacketCodecClass; this._secret = connection._secret; this._dcId = connection._dcId; } async initHeader() { let secret = this._secret; const isDD = secret.length == 17 && secret[0] == 221; secret = isDD ? secret.slice(1) : secret; if (secret.length != 16) { throw new Error("MTProxy secret must be a hex-string representing 16 bytes"); } const keywords = [ Buffer.from("50567247", "hex"), Buffer.from("474554", "hex"), Buffer.from("504f5354", "hex"), Buffer.from("eeeeeeee", "hex") ]; let random; while (true) { random = (0, Helpers_1.generateRandomBytes)(64); if (random[0] !== 239 && !random.slice(4, 8).equals(Buffer.alloc(4))) { let ok = true; for (const key of keywords) { if (key.equals(random.slice(0, 4))) { ok = false; break; } } if (ok) { break; } } } random = random.toJSON().data; const randomReversed = Buffer.from(random.slice(8, 56)).reverse(); const encryptKey = await (0, Helpers_1.sha256)(Buffer.concat([Buffer.from(random.slice(8, 40)), secret])); const encryptIv = Buffer.from(random.slice(40, 56)); const decryptKey = await (0, Helpers_1.sha256)(Buffer.concat([Buffer.from(randomReversed.slice(0, 32)), secret])); const decryptIv = Buffer.from(randomReversed.slice(32, 48)); const encryptor = new CTR_1.CTR(encryptKey, encryptIv); const decryptor = new CTR_1.CTR(decryptKey, decryptIv); random = Buffer.concat([ Buffer.from(random.slice(0, 56)), this._packetClass.obfuscateTag, Buffer.from(random.slice(60)) ]); const dcIdBytes = Buffer.alloc(2); dcIdBytes.writeInt8(this._dcId, 0); random = Buffer.concat([ Buffer.from(random.slice(0, 60)), dcIdBytes, Buffer.from(random.slice(62)) ]); random = Buffer.concat([ Buffer.from(random.slice(0, 56)), Buffer.from(encryptor.encrypt(random).slice(56, 64)), Buffer.from(random.slice(64)) ]); this.header = random; this._encrypt = encryptor; this._decrypt = decryptor; } async read(n) { const data = await this.connection.readExactly(n); return this._decrypt.encrypt(data); } write(data) { this.connection.write(this._encrypt.encrypt(data)); } }; var TCPMTProxy = class extends Connection_1.ObfuscatedConnection { constructor({ ip, port, dcId, loggers, proxy, socket, testServers }) { super({ ip: proxy.ip, port: proxy.port, dcId, loggers, socket, proxy, testServers }); this.ObfuscatedIO = MTProxyIO; if (!("MTProxy" in proxy)) { throw new Error("This connection only supports MPTProxies"); } if (!proxy.secret) { throw new Error("You need to provide the secret for the MTProxy"); } if (proxy.secret && proxy.secret.match(/^[0-9a-f]+$/i)) { this._secret = Buffer.from(proxy.secret, "hex"); } else { this._secret = Buffer.from(proxy.secret, "base64"); } } }; exports2.TCPMTProxy = TCPMTProxy; var ConnectionTCPMTProxyAbridged = class extends TCPMTProxy { constructor() { super(...arguments); this.PacketCodecClass = TCPAbridged_1.AbridgedPacketCodec; } }; exports2.ConnectionTCPMTProxyAbridged = ConnectionTCPMTProxyAbridged; } }); // node_modules/telegram/client/telegramBaseClient.js var require_telegramBaseClient = __commonJS({ "node_modules/telegram/client/telegramBaseClient.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.TelegramBaseClient = void 0; var __1 = require_telegram(); var Helpers_1 = require_Helpers(); var connection_1 = require_connection(); var sessions_1 = require_sessions(); var extensions_1 = require_extensions(); var tl_1 = require_tl(); var os_1 = __importDefault2(require_os()); var entityCache_1 = require_entityCache(); var markdown_1 = require_markdown(); var network_1 = require_network(); var AllTLObjects_1 = require_AllTLObjects(); var TCPMTProxy_1 = require_TCPMTProxy(); var async_mutex_1 = require_lib16(); var Logger_1 = require_Logger(); var platform_1 = require_platform(); var Deferred_1 = __importDefault2(require_Deferred()); var EXPORTED_SENDER_RECONNECT_TIMEOUT = 1e3; var EXPORTED_SENDER_RELEASE_TIMEOUT = 3e4; var DEFAULT_DC_ID = 4; var DEFAULT_IPV4_IP = platform_1.isNode ? "149.154.167.91" : "vesta.web.telegram.org"; var DEFAULT_IPV6_IP = "2001:067c:04e8:f004:0000:0000:0000:000a"; var clientParamsDefault = { connection: platform_1.isNode ? connection_1.ConnectionTCPFull : connection_1.ConnectionTCPObfuscated, networkSocket: platform_1.isNode ? extensions_1.PromisedNetSockets : extensions_1.PromisedWebSockets, useIPV6: false, timeout: 10, requestRetries: 5, connectionRetries: Infinity, retryDelay: 1e3, downloadRetries: 5, autoReconnect: true, sequentialUpdates: false, floodSleepThreshold: 60, deviceModel: "", systemVersion: "", appVersion: "", langCode: "en", systemLangCode: "en", _securityChecks: true, useWSS: platform_1.isBrowser ? window.location.protocol == "https:" : false, testServers: false }; var TelegramBaseClient = class { constructor(session2, apiId, apiHash, clientParams) { this.__version__ = __1.version; this._ALBUMS = /* @__PURE__ */ new Map(); this._exportedSenderPromises = /* @__PURE__ */ new Map(); this._exportedSenderReleaseTimeouts = /* @__PURE__ */ new Map(); clientParams = Object.assign(Object.assign({}, clientParamsDefault), clientParams); if (!apiId || !apiHash) { throw new Error("Your API ID or Hash cannot be empty or undefined"); } if (clientParams.baseLogger) { this._log = clientParams.baseLogger; } else { this._log = new extensions_1.Logger(); } this._log.info("Running gramJS version " + __1.version); if (session2 && typeof session2 == "string") { session2 = new sessions_1.StoreSession(session2); } if (!(session2 instanceof sessions_1.Session)) { throw new Error("Only StringSession and StoreSessions are supported currently :( "); } this._floodSleepThreshold = clientParams.floodSleepThreshold; this.session = session2; this.apiId = apiId; this.apiHash = apiHash; this._useIPV6 = clientParams.useIPV6; this._requestRetries = clientParams.requestRetries; this._downloadRetries = clientParams.downloadRetries; this._connectionRetries = clientParams.connectionRetries; this._reconnectRetries = clientParams.reconnectRetries; this._retryDelay = clientParams.retryDelay || 0; this._timeout = clientParams.timeout; this._autoReconnect = clientParams.autoReconnect; this._proxy = clientParams.proxy; this._semaphore = new async_mutex_1.Semaphore(clientParams.maxConcurrentDownloads || 1); this.testServers = clientParams.testServers || false; this.networkSocket = clientParams.networkSocket || extensions_1.PromisedNetSockets; if (!(clientParams.connection instanceof Function)) { throw new Error("Connection should be a class not an instance"); } this._connection = clientParams.connection; let initProxy; if (this._proxy && "MTProxy" in this._proxy) { this._connection = TCPMTProxy_1.ConnectionTCPMTProxyAbridged; initProxy = new tl_1.Api.InputClientProxy({ address: this._proxy.ip, port: this._proxy.port }); } this._initRequest = new tl_1.Api.InitConnection({ apiId: this.apiId, deviceModel: clientParams.deviceModel || os_1.default.type().toString() || "Unknown", systemVersion: clientParams.systemVersion || os_1.default.release().toString() || "1.0", appVersion: clientParams.appVersion || "1.0", langCode: clientParams.langCode, langPack: "", // this should be left empty. systemLangCode: clientParams.systemLangCode, proxy: initProxy }); this._eventBuilders = []; this._floodWaitedRequests = {}; this._borrowedSenderPromises = {}; this._bot = void 0; this._selfInputPeer = void 0; this.useWSS = clientParams.useWSS; this._securityChecks = !!clientParams.securityChecks; if (this.useWSS && this._proxy) { throw new Error("Cannot use SSL with proxies. You need to disable the useWSS client param in TelegramClient"); } this._entityCache = new entityCache_1.EntityCache(); this._config = void 0; this._loopStarted = false; this._reconnecting = false; this._destroyed = false; this._isSwitchingDc = false; this._connectedDeferred = new Deferred_1.default(); this._parseMode = markdown_1.MarkdownParser; } get floodSleepThreshold() { return this._floodSleepThreshold; } set floodSleepThreshold(value) { this._floodSleepThreshold = Math.min(value || 0, 24 * 60 * 60); } set maxConcurrentDownloads(value) { this._semaphore._value = value; } // region connecting async _initSession() { await this.session.load(); if (!this.session.serverAddress) { this.session.setDC(DEFAULT_DC_ID, this._useIPV6 ? DEFAULT_IPV6_IP : DEFAULT_IPV4_IP, this.useWSS ? 443 : 80); } else { this._useIPV6 = this.session.serverAddress.includes(":"); } } get connected() { return this._sender && this._sender.isConnected(); } async disconnect() { await this._disconnect(); await Promise.all(Object.values(this._exportedSenderPromises).map((promises) => { return Object.values(promises).map((promise) => { return promise && promise.then((sender) => { if (sender) { return sender.disconnect(); } return void 0; }); }); }).flat()); Object.values(this._exportedSenderReleaseTimeouts).forEach((timeouts) => { Object.values(timeouts).forEach((releaseTimeout) => { clearTimeout(releaseTimeout); }); }); this._exportedSenderPromises.clear(); } get disconnected() { return !this._sender || this._sender._disconnected; } async _disconnect() { var _a; await ((_a = this._sender) === null || _a === void 0 ? void 0 : _a.disconnect()); } /** * Disconnects all senders and removes all handlers * Disconnect is safer as it will not remove your event handlers */ async destroy() { this._destroyed = true; await Promise.all([ this.disconnect(), ...Object.values(this._borrowedSenderPromises).map((promise) => { return promise.then((sender) => sender.disconnect()); }) ]); this._eventBuilders = []; } /** @hidden */ async _authKeyCallback(authKey, dcId) { this.session.setAuthKey(authKey, dcId); await this.session.save(); } /** @hidden */ async _cleanupExportedSender(dcId) { if (this.session.dcId !== dcId) { this.session.setAuthKey(void 0, dcId); } let sender = await this._exportedSenderPromises.get(dcId); this._exportedSenderPromises.delete(dcId); await (sender === null || sender === void 0 ? void 0 : sender.disconnect()); } /** @hidden */ async _connectSender(sender, dcId) { const dc = await this.getDC(dcId, !!sender.authKey.getKey()); while (true) { try { await sender.connect(new this._connection({ ip: dc.ipAddress, port: dc.port, dcId, loggers: this._log, proxy: this._proxy, testServers: this.testServers, socket: this.networkSocket }), false); if (this.session.dcId !== dcId && !sender._authenticated) { this._log.info(`Exporting authorization for data center ${dc.ipAddress} with layer ${AllTLObjects_1.LAYER}`); const auth = await this.invoke(new tl_1.Api.auth.ExportAuthorization({ dcId })); this._initRequest.query = new tl_1.Api.auth.ImportAuthorization({ id: auth.id, bytes: auth.bytes }); const req = new tl_1.Api.InvokeWithLayer({ layer: AllTLObjects_1.LAYER, query: this._initRequest }); await sender.send(req); sender._authenticated = true; } sender.dcId = dcId; sender.userDisconnected = false; return sender; } catch (err) { if (err.errorMessage === "DC_ID_INVALID") { sender._authenticated = true; sender.userDisconnected = false; return sender; } if (this._errorHandler) { await this._errorHandler(err); } else if (this._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(err); } await (0, Helpers_1.sleep)(1e3); await sender.disconnect(); } } } /** @hidden */ async _borrowExportedSender(dcId, shouldReconnect, existingSender) { if (!this._exportedSenderPromises.get(dcId) || shouldReconnect) { this._exportedSenderPromises.set(dcId, this._connectSender(existingSender || this._createExportedSender(dcId), dcId)); } let sender; try { sender = await this._exportedSenderPromises.get(dcId); if (!sender.isConnected()) { if (sender.isConnecting) { await (0, Helpers_1.sleep)(EXPORTED_SENDER_RECONNECT_TIMEOUT); return this._borrowExportedSender(dcId, false, sender); } else { return this._borrowExportedSender(dcId, true, sender); } } } catch (err) { if (this._errorHandler) { await this._errorHandler(err); } if (this._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(err); } return this._borrowExportedSender(dcId, true); } if (this._exportedSenderReleaseTimeouts.get(dcId)) { clearTimeout(this._exportedSenderReleaseTimeouts.get(dcId)); this._exportedSenderReleaseTimeouts.delete(dcId); } this._exportedSenderReleaseTimeouts.set(dcId, setTimeout(() => { this._exportedSenderReleaseTimeouts.delete(dcId); if (sender._pendingState.values().length) { console.log("sender already has some hanging states. reconnecting"); sender._reconnect(); this._borrowExportedSender(dcId, false, sender); } else { sender.disconnect(); } }, EXPORTED_SENDER_RELEASE_TIMEOUT)); return sender; } /** @hidden */ _createExportedSender(dcId) { return new network_1.MTProtoSender(this.session.getAuthKey(dcId), { logger: this._log, dcId, retries: this._connectionRetries, delay: this._retryDelay, autoReconnect: this._autoReconnect, connectTimeout: this._timeout, authKeyCallback: this._authKeyCallback.bind(this), isMainSender: dcId === this.session.dcId, onConnectionBreak: this._cleanupExportedSender.bind(this), client: this, securityChecks: this._securityChecks, _exportedSenderPromises: this._exportedSenderPromises, reconnectRetries: this._reconnectRetries }); } /** @hidden */ getSender(dcId) { return dcId ? this._borrowExportedSender(dcId) : Promise.resolve(this._sender); } // endregion async getDC(dcId, download) { throw new Error("Cannot be called from here!"); } invoke(request) { throw new Error("Cannot be called from here!"); } setLogLevel(level) { this._log.setLevel(level); } get logger() { return this._log; } /** * Custom error handler for the client * @example * ```ts * client.onError = async (error)=>{ * console.log("error is",error) * } * ``` */ set onError(handler) { this._errorHandler = async (error) => { try { await handler(error); } catch (e) { if (this._log.canSend(Logger_1.LogLevel.ERROR)) { e.message = `Error ${e.message} thrown while handling top-level error: ${error.message}`; console.error(e); } } }; } }; exports2.TelegramBaseClient = TelegramBaseClient; } }); // node_modules/telegram/client/auth.js var require_auth = __commonJS({ "node_modules/telegram/client/auth.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.start = start; exports2.checkAuthorization = checkAuthorization; exports2.signInUser = signInUser; exports2.signInUserWithQrCode = signInUserWithQrCode; exports2.sendCode = sendCode; exports2.signInWithPassword = signInWithPassword; exports2.signInBot = signInBot; exports2._authFlow = _authFlow; var tl_1 = require_tl(); var utils = __importStar2(require_Utils()); var Helpers_1 = require_Helpers(); var Password_1 = require_Password(); var QR_CODE_TIMEOUT = 3e4; async function start(client2, authParams) { if (!client2.connected) { await client2.connect(); } if (await client2.checkAuthorization()) { return; } const apiCredentials = { apiId: client2.apiId, apiHash: client2.apiHash }; await _authFlow(client2, apiCredentials, authParams); } async function checkAuthorization(client2) { try { await client2.invoke(new tl_1.Api.updates.GetState()); return true; } catch (e) { return false; } } async function signInUser(client2, apiCredentials, authParams) { let phoneNumber; let phoneCodeHash; let isCodeViaApp = false; while (1) { try { if (typeof authParams.phoneNumber === "function") { try { phoneNumber = await authParams.phoneNumber(); } catch (err) { if (err.errorMessage === "RESTART_AUTH_WITH_QR") { return client2.signInUserWithQrCode(apiCredentials, authParams); } throw err; } } else { phoneNumber = authParams.phoneNumber; } const sendCodeResult = await client2.sendCode(apiCredentials, phoneNumber, authParams.forceSMS); phoneCodeHash = sendCodeResult.phoneCodeHash; isCodeViaApp = sendCodeResult.isCodeViaApp; if (typeof phoneCodeHash !== "string") { throw new Error("Failed to retrieve phone code hash"); } break; } catch (err) { if (typeof authParams.phoneNumber !== "function") { throw err; } const shouldWeStop = await authParams.onError(err); if (shouldWeStop) { throw new Error("AUTH_USER_CANCEL"); } } } let phoneCode; let isRegistrationRequired = false; let termsOfService; while (1) { try { try { phoneCode = await authParams.phoneCode(isCodeViaApp); } catch (err) { if (err.errorMessage === "RESTART_AUTH") { return client2.signInUser(apiCredentials, authParams); } } if (!phoneCode) { throw new Error("Code is empty"); } const result = await client2.invoke(new tl_1.Api.auth.SignIn({ phoneNumber, phoneCodeHash, phoneCode })); if (result instanceof tl_1.Api.auth.AuthorizationSignUpRequired) { isRegistrationRequired = true; termsOfService = result.termsOfService; break; } return result.user; } catch (err) { if (err.errorMessage === "SESSION_PASSWORD_NEEDED") { return client2.signInWithPassword(apiCredentials, authParams); } else { const shouldWeStop = await authParams.onError(err); if (shouldWeStop) { throw new Error("AUTH_USER_CANCEL"); } } } } if (isRegistrationRequired) { while (1) { try { let lastName; let firstName = "first name"; if (authParams.firstAndLastNames) { const result = await authParams.firstAndLastNames(); firstName = result[0]; lastName = result[1]; } if (!firstName) { throw new Error("First name is required"); } const { user } = await client2.invoke(new tl_1.Api.auth.SignUp({ phoneNumber, phoneCodeHash, firstName, lastName })); if (termsOfService) { await client2.invoke(new tl_1.Api.help.AcceptTermsOfService({ id: termsOfService.id })); } return user; } catch (err) { const shouldWeStop = await authParams.onError(err); if (shouldWeStop) { throw new Error("AUTH_USER_CANCEL"); } } } } await authParams.onError(new Error("Auth failed")); return client2.signInUser(apiCredentials, authParams); } async function signInUserWithQrCode(client2, apiCredentials, authParams) { let isScanningComplete = false; if (authParams.qrCode == void 0) { throw new Error("qrCode callback not defined"); } const inputPromise = (async () => { while (1) { if (isScanningComplete) { break; } const result = await client2.invoke(new tl_1.Api.auth.ExportLoginToken({ apiId: Number(apiCredentials.apiId), apiHash: apiCredentials.apiHash, exceptIds: [] })); if (!(result instanceof tl_1.Api.auth.LoginToken)) { throw new Error("Unexpected"); } const { token, expires } = result; await Promise.race([ authParams.qrCode({ token, expires }), (0, Helpers_1.sleep)(QR_CODE_TIMEOUT) ]); await (0, Helpers_1.sleep)(QR_CODE_TIMEOUT); } })(); const updatePromise = new Promise((resolve) => { client2.addEventHandler((update) => { if (update instanceof tl_1.Api.UpdateLoginToken) { resolve(void 0); } }); }); try { await Promise.race([updatePromise, inputPromise]); } catch (err) { throw err; } finally { isScanningComplete = true; } try { const result2 = await client2.invoke(new tl_1.Api.auth.ExportLoginToken({ apiId: Number(apiCredentials.apiId), apiHash: apiCredentials.apiHash, exceptIds: [] })); if (result2 instanceof tl_1.Api.auth.LoginTokenSuccess && result2.authorization instanceof tl_1.Api.auth.Authorization) { return result2.authorization.user; } else if (result2 instanceof tl_1.Api.auth.LoginTokenMigrateTo) { await client2._switchDC(result2.dcId); const migratedResult = await client2.invoke(new tl_1.Api.auth.ImportLoginToken({ token: result2.token })); if (migratedResult instanceof tl_1.Api.auth.LoginTokenSuccess && migratedResult.authorization instanceof tl_1.Api.auth.Authorization) { return migratedResult.authorization.user; } else { client2._log.error(`Received unknown result while scanning QR ${result2.className}`); throw new Error(`Received unknown result while scanning QR ${result2.className}`); } } else { client2._log.error(`Received unknown result while scanning QR ${result2.className}`); throw new Error(`Received unknown result while scanning QR ${result2.className}`); } } catch (err) { if (err.errorMessage === "SESSION_PASSWORD_NEEDED") { return client2.signInWithPassword(apiCredentials, authParams); } throw err; } await authParams.onError(new Error("QR auth failed")); throw new Error("QR auth failed"); } async function sendCode(client2, apiCredentials, phoneNumber, forceSMS = false) { try { const { apiId, apiHash } = apiCredentials; const sendResult = await client2.invoke(new tl_1.Api.auth.SendCode({ phoneNumber, apiId, apiHash, settings: new tl_1.Api.CodeSettings({}) })); if (sendResult instanceof tl_1.Api.auth.SentCodeSuccess) throw new Error("logged in right after sending the code"); if (!forceSMS || sendResult.type instanceof tl_1.Api.auth.SentCodeTypeSms) { return { phoneCodeHash: sendResult.phoneCodeHash, isCodeViaApp: sendResult.type instanceof tl_1.Api.auth.SentCodeTypeApp }; } const resendResult = await client2.invoke(new tl_1.Api.auth.ResendCode({ phoneNumber, phoneCodeHash: sendResult.phoneCodeHash })); if (resendResult instanceof tl_1.Api.auth.SentCodeSuccess) throw new Error("logged in right after resending the code"); return { phoneCodeHash: resendResult.phoneCodeHash, isCodeViaApp: resendResult.type instanceof tl_1.Api.auth.SentCodeTypeApp }; } catch (err) { if (err.errorMessage === "AUTH_RESTART") { return client2.sendCode(apiCredentials, phoneNumber, forceSMS); } else { throw err; } } } async function signInWithPassword(client2, apiCredentials, authParams) { let emptyPassword = false; while (1) { try { const passwordSrpResult = await client2.invoke(new tl_1.Api.account.GetPassword()); if (!authParams.password) { emptyPassword = true; break; } const password = await authParams.password(passwordSrpResult.hint); if (!password) { throw new Error("Password is empty"); } const passwordSrpCheck = await (0, Password_1.computeCheck)(passwordSrpResult, password); const { user } = await client2.invoke(new tl_1.Api.auth.CheckPassword({ password: passwordSrpCheck })); return user; } catch (err) { const shouldWeStop = await authParams.onError(err); if (shouldWeStop) { throw new Error("AUTH_USER_CANCEL"); } } } if (emptyPassword) { throw new Error("Account has 2FA enabled."); } return void 0; } async function signInBot(client2, apiCredentials, authParams) { const { apiId, apiHash } = apiCredentials; let { botAuthToken } = authParams; if (!botAuthToken) { throw new Error("a valid BotToken is required"); } if (typeof botAuthToken === "function") { let token; while (true) { token = await botAuthToken(); if (token) { botAuthToken = token; break; } } } const { user } = await client2.invoke(new tl_1.Api.auth.ImportBotAuthorization({ apiId, apiHash, botAuthToken })); return user; } async function _authFlow(client2, apiCredentials, authParams) { const me = "phoneNumber" in authParams ? await client2.signInUser(apiCredentials, authParams) : await client2.signInBot(apiCredentials, authParams); client2._log.info("Signed in successfully as " + utils.getDisplayName(me)); } } }); // node_modules/telegram/tl/custom/inlineResult.js var require_inlineResult = __commonJS({ "node_modules/telegram/tl/custom/inlineResult.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.InlineResult = void 0; var api_1 = require_api(); var Helpers_1 = require_Helpers(); var inspect_1 = require_inspect(); var Utils_1 = require_Utils(); var InlineResult = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(client2, original, queryId, entity) { this._ARTICLE = "article"; this._PHOTO = "photo"; this._GIF = "gif"; this._VIDEO = "video"; this._VIDEO_GIF = "mpeg4_gif"; this._AUDIO = "audio"; this._DOCUMENT = "document"; this._LOCATION = "location"; this._VENUE = "venue"; this._CONTACT = "contact"; this._GAME = "game"; this._client = client2; this.result = original; this._queryId = queryId; this._entity = entity; } get type() { return this.result.type; } get message() { return this.result.sendMessage; } get description() { return this.result.description; } get url() { if (this.result instanceof api_1.Api.BotInlineResult) { return this.result.url; } } get photo() { if (this.result instanceof api_1.Api.BotInlineResult) { return this.result.thumb; } else { return this.result.photo; } } get document() { if (this.result instanceof api_1.Api.BotInlineResult) { return this.result.content; } else { return this.result.document; } } async click(entity, replyTo, silent = false, clearDraft = false, hideVia = false) { if (entity) { entity = await this._client.getInputEntity(entity); } else if (this._entity) { entity = this._entity; } else { throw new Error("You must provide the entity where the result should be sent to"); } let replyObject = void 0; if (replyTo != void 0) { replyObject = new api_1.Api.InputReplyToMessage({ replyToMsgId: (0, Utils_1.getMessageId)(replyTo) }); } const request = new api_1.Api.messages.SendInlineBotResult({ peer: entity, queryId: this._queryId, id: this.result.id, silent, clearDraft, hideVia, replyTo: replyObject }); return await this._client.invoke(request); } }; exports2.InlineResult = InlineResult; } }); // node_modules/telegram/tl/custom/inlineResults.js var require_inlineResults = __commonJS({ "node_modules/telegram/tl/custom/inlineResults.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.InlineResults = void 0; var inlineResult_1 = require_inlineResult(); var Helpers_1 = require_Helpers(); var inspect_1 = require_inspect(); var InlineResults = class extends Array { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(client2, original, entity) { super(...original.results.map((res) => new inlineResult_1.InlineResult(client2, res, original.queryId, entity))); this.result = original; this.queryId = original.queryId; this.cacheTime = original.cacheTime; this._validUntil = (/* @__PURE__ */ new Date()).getTime() / 1e3 + this.cacheTime; this.users = original.users; this.gallery = Boolean(original.gallery); this.nextOffset = original.nextOffset; this.switchPm = original.switchPm; } resultsValid() { return (/* @__PURE__ */ new Date()).getTime() / 1e3 < this._validUntil; } }; exports2.InlineResults = InlineResults; } }); // node_modules/telegram/client/bots.js var require_bots = __commonJS({ "node_modules/telegram/client/bots.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.inlineQuery = inlineQuery; var tl_1 = require_tl(); var inlineResults_1 = require_inlineResults(); var GetInlineBotResults = tl_1.Api.messages.GetInlineBotResults; async function inlineQuery(client2, bot, query, entity, offset, geoPoint) { bot = await client2.getInputEntity(bot); let peer = new tl_1.Api.InputPeerSelf(); if (entity) { peer = await client2.getInputEntity(entity); } const result = await client2.invoke(new GetInlineBotResults({ bot, peer, query, offset: offset || "", geoPoint })); return new inlineResults_1.InlineResults(client2, result, entity ? peer : void 0); } } }); // node_modules/telegram/client/buttons.js var require_buttons = __commonJS({ "node_modules/telegram/client/buttons.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.buildReplyMarkup = buildReplyMarkup; var tl_1 = require_tl(); var button_1 = require_button(); var messageButton_1 = require_messageButton(); var Helpers_1 = require_Helpers(); function buildReplyMarkup(buttons, inlineOnly = false) { if (buttons == void 0) { return void 0; } if ("SUBCLASS_OF_ID" in buttons) { if (buttons.SUBCLASS_OF_ID == 3806400242) { return buttons; } } if (!(0, Helpers_1.isArrayLike)(buttons)) { buttons = [[buttons]]; } else if (!buttons || !(0, Helpers_1.isArrayLike)(buttons[0])) { buttons = [buttons]; } let isInline = false; let isNormal = false; let resize = void 0; const singleUse = false; const selective = false; const rows = []; for (const row of buttons) { const current = []; for (let button of row) { if (button instanceof button_1.Button) { if (button.resize != void 0) { resize = button.resize; } if (button.singleUse != void 0) { resize = button.singleUse; } if (button.selective != void 0) { resize = button.selective; } button = button.button; } else if (button instanceof messageButton_1.MessageButton) { button = button.button; } const inline = button_1.Button._isInline(button); if (!isInline && inline) { isInline = true; } if (!isNormal && inline) { isNormal = false; } if (button.SUBCLASS_OF_ID == 195916963) { current.push(button); } } if (current) { rows.push(new tl_1.Api.KeyboardButtonRow({ buttons: current })); } } if (inlineOnly && isNormal) { throw new Error("You cannot use non-inline buttons here"); } else if (isInline === isNormal && isNormal) { throw new Error("You cannot mix inline with normal buttons"); } else if (isInline) { return new tl_1.Api.ReplyInlineMarkup({ rows }); } return new tl_1.Api.ReplyKeyboardMarkup({ rows, resize, singleUse, selective }); } } }); // node_modules/telegram/requestIter.js var require_requestIter = __commonJS({ "node_modules/telegram/requestIter.js"(exports2) { "use strict"; init_define_import_meta_env(); var __asyncValues2 = exports2 && exports2.__asyncValues || function(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; 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); 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); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve({ value: v2, done: d }); }, reject); } }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.RequestIter = void 0; var Helpers_1 = require_Helpers(); var _1 = require_telegram(); var RequestIter = class { constructor(client2, limit, params = {}, args = {}) { this.client = client2; this.reverse = params.reverse; this.waitTime = params.waitTime; this.limit = Math.max(!limit ? Number.MAX_SAFE_INTEGER : limit, 0); this.left = this.limit; this.buffer = void 0; this.kwargs = args; this.index = 0; this.total = void 0; this.lastLoad = 0; } async _init(kwargs) { } [Symbol.asyncIterator]() { this.buffer = void 0; this.index = 0; this.lastLoad = 0; this.left = this.limit; return { next: async () => { if (this.buffer == void 0) { this.buffer = []; if (await this._init(this.kwargs)) { this.left = this.buffer.length; } } if (this.left <= 0) { return { value: void 0, done: true }; } if (this.index == this.buffer.length) { if (this.waitTime) { await (0, Helpers_1.sleep)(this.waitTime - ((/* @__PURE__ */ new Date()).getTime() / 1e3 - this.lastLoad)); } this.lastLoad = (/* @__PURE__ */ new Date()).getTime() / 1e3; this.index = 0; this.buffer = []; const nextChunk = await this._loadNextChunk(); if (nextChunk === false) { return { value: void 0, done: true }; } if (nextChunk) { this.left = this.buffer.length; } } if (!this.buffer || !this.buffer.length) { return { value: void 0, done: true }; } const result = this.buffer[this.index]; this.left -= 1; this.index += 1; return { value: result, done: false }; } }; } async collect() { var _a, e_1, _b, _c; const result = new _1.helpers.TotalList(); try { for (var _d = true, _e = __asyncValues2(this), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; const message = _c; result.push(message); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (!_d && !_a && (_b = _e.return)) await _b.call(_e); } finally { if (e_1) throw e_1.error; } } result.total = this.total; return result; } async _loadNextChunk() { throw new Error("Not Implemented"); } }; exports2.RequestIter = RequestIter; } }); // node_modules/telegram/client/fs.js var require_fs = __commonJS({ "node_modules/telegram/client/fs.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __exportStar2 = exports2 && exports2.__exportStar || function(m, exports3) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports3, p)) __createBinding2(exports3, m, p); }; Object.defineProperty(exports2, "__esModule", { value: true }); __exportStar2(require("fs"), exports2); } }); // node_modules/telegram/client/path.js var require_path = __commonJS({ "node_modules/telegram/client/path.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); var path_1 = __importDefault2(require("path")); exports2.default = path_1.default; } }); // node_modules/telegram/client/downloads.js var require_downloads = __commonJS({ "node_modules/telegram/client/downloads.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; var __asyncValues2 = exports2 && exports2.__asyncValues || function(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; 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); 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); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve({ value: v2, done: d }); }, reject); } }; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.GenericDownloadIter = exports2.DirectDownloadIter = void 0; exports2.iterDownload = iterDownload; exports2.downloadFileV2 = downloadFileV2; exports2.downloadMedia = downloadMedia; exports2._downloadDocument = _downloadDocument; exports2._downloadContact = _downloadContact; exports2._downloadWebDocument = _downloadWebDocument; exports2._downloadCachedPhotoSize = _downloadCachedPhotoSize; exports2._downloadPhoto = _downloadPhoto; exports2.downloadProfilePhoto = downloadProfilePhoto; var tl_1 = require_tl(); var Utils_1 = require_Utils(); var Helpers_1 = require_Helpers(); var __1 = require_telegram(); var requestIter_1 = require_requestIter(); var errors_1 = require_errors(); var fs_1 = require_fs(); var extensions_1 = require_extensions(); var fs = __importStar2(require_fs()); var path_1 = __importDefault2(require_path()); var big_integer_1 = __importDefault2(require_BigInteger()); var MIN_CHUNK_SIZE = 4096; var ONE_MB = 1024 * 1024; var TIMED_OUT_SLEEP = 1e3; var MAX_CHUNK_SIZE = 512 * 1024; var DirectDownloadIter = class extends requestIter_1.RequestIter { constructor() { super(...arguments); this._timedOut = false; } async _init({ fileLocation, dcId, offset, stride, chunkSize, requestSize, fileSize, msgData }) { this.request = new tl_1.Api.upload.GetFile({ location: fileLocation, offset, limit: requestSize }); this.total = fileSize; this._stride = stride; this._chunkSize = chunkSize; this._lastPart = void 0; this._timedOut = false; this._sender = await this.client.getSender(dcId); } async _loadNextChunk() { const current = await this._request(); this.buffer.push(current); if (current.length < this.request.limit) { this.left = this.buffer.length; await this.close(); return true; } else { this.request.offset = this.request.offset.add(this._stride); } } async _request() { try { this._sender = await this.client.getSender(this._sender.dcId); const result = await this.client.invokeWithSender(this.request, this._sender); this._timedOut = false; if (result instanceof tl_1.Api.upload.FileCdnRedirect) { throw new Error("CDN Not supported. Please Add an issue in github"); } return result.bytes; } catch (e) { if (e.errorMessage == "TIMEOUT") { if (this._timedOut) { this.client._log.warn("Got two timeouts in a row while downloading file"); throw e; } this._timedOut = true; this.client._log.info("Got timeout while downloading file, retrying once"); await (0, Helpers_1.sleep)(TIMED_OUT_SLEEP); return await this._request(); } else if (e instanceof errors_1.FileMigrateError) { this.client._log.info("File lives in another DC"); this._sender = await this.client.getSender(e.newDc); return await this._request(); } else if (e.errorMessage == "FILEREF_UPGRADE_NEEDED") { throw e; } else { throw e; } } } async close() { this.client._log.debug("Finished downloading file ..."); } [Symbol.asyncIterator]() { return super[Symbol.asyncIterator](); } }; exports2.DirectDownloadIter = DirectDownloadIter; var GenericDownloadIter = class extends DirectDownloadIter { async _loadNextChunk() { let data = Buffer.alloc(0); const bad = this.request.offset.mod(this.request.limit).toJSNumber(); const before = this.request.offset; this.request.offset = this.request.offset.subtract(bad); let done = false; while (!done && data.length - bad < this._chunkSize) { const current = await this._request(); this.request.offset = this.request.offset.add(this.request.limit); data = Buffer.concat([data, current]); done = current.length < this.request.limit; } this.request.offset = before; for (let i = bad; i < data.length; i += this._stride) { this.buffer.push(data.slice(i, i + this._chunkSize)); this.request.offset = this.request.offset.add(this._stride); } if (done) { this.left = this.buffer.length; await this.close(); return; } if (this.buffer[this.buffer.length - 1].length != this._chunkSize) { this._lastPart = this.buffer.pop(); this.request.offset = this.request.offset.subtract(this._stride); } } }; exports2.GenericDownloadIter = GenericDownloadIter; function iterDownload(client2, { file, offset = big_integer_1.default.zero, stride, limit, chunkSize, requestSize = MAX_CHUNK_SIZE, fileSize, dcId, msgData }) { const info = __1.utils.getFileInfo(file); if (info.dcId != void 0) { dcId = info.dcId; } if (fileSize == void 0) { fileSize = info.size; } file = info.location; if (chunkSize == void 0) { chunkSize = requestSize; } if (limit == void 0 && fileSize != void 0) { limit = Math.floor(fileSize.add(chunkSize).subtract(1).divide(chunkSize).toJSNumber()); } if (stride == void 0) { stride = chunkSize; } else if (stride < chunkSize) { throw new Error("Stride must be >= chunkSize"); } requestSize -= requestSize % MIN_CHUNK_SIZE; if (requestSize < MIN_CHUNK_SIZE) { requestSize = MIN_CHUNK_SIZE; } else if (requestSize > MAX_CHUNK_SIZE) { requestSize = MAX_CHUNK_SIZE; } let cls; if (chunkSize == requestSize && offset.divide(MAX_CHUNK_SIZE).eq(big_integer_1.default.zero) && stride % MIN_CHUNK_SIZE == 0 && (limit == void 0 || offset.divide(limit).eq(big_integer_1.default.zero))) { cls = DirectDownloadIter; client2._log.info(`Starting direct file download in chunks of ${requestSize} at ${offset}, stride ${stride}`); } else { cls = GenericDownloadIter; client2._log.info(`Starting indirect file download in chunks of ${requestSize} at ${offset}, stride ${stride}`); } return new cls(client2, limit, {}, { fileLocation: file, dcId, offset, stride, chunkSize, requestSize, fileSize, msgData }); } function getWriter(outputFile) { if (!outputFile || Buffer.isBuffer(outputFile)) { return new extensions_1.BinaryWriter(Buffer.alloc(0)); } else if (typeof outputFile == "string") { return (0, fs_1.createWriteStream)(outputFile); } else { return outputFile; } } function closeWriter(writer) { if ("close" in writer && writer.close) { writer.close(); } } function returnWriterValue(writer) { if (writer instanceof extensions_1.BinaryWriter) { return writer.getValue(); } if (writer instanceof fs.WriteStream) { if (typeof writer.path == "string") { return path_1.default.resolve(writer.path); } else { return Buffer.from(writer.path); } } } async function downloadFileV2(client2, inputLocation, { outputFile = void 0, partSizeKb = void 0, fileSize = void 0, progressCallback = void 0, dcId = void 0, msgData = void 0 }) { var _a, e_1, _b, _c; if (!partSizeKb) { if (!fileSize) { partSizeKb = 64; } else { partSizeKb = __1.utils.getAppropriatedPartSize(fileSize); } } const partSize = Math.floor(partSizeKb * 1024); if (partSize % MIN_CHUNK_SIZE != 0) { throw new Error("The part size must be evenly divisible by 4096"); } const writer = getWriter(outputFile); let downloaded = big_integer_1.default.zero; try { try { for (var _d = true, _e = __asyncValues2(iterDownload(client2, { file: inputLocation, requestSize: partSize, dcId, msgData })), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; const chunk = _c; await writer.write(chunk); downloaded = downloaded.add(chunk.length); if (progressCallback) { await progressCallback(downloaded, (0, big_integer_1.default)(fileSize || big_integer_1.default.zero)); } } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (!_d && !_a && (_b = _e.return)) await _b.call(_e); } finally { if (e_1) throw e_1.error; } } return returnWriterValue(writer); } finally { closeWriter(writer); } } async function downloadMedia(client2, messageOrMedia, outputFile, thumb, progressCallback) { let msgData; let date; let media; if (messageOrMedia instanceof tl_1.Api.Message) { media = messageOrMedia.media; date = messageOrMedia.date; msgData = messageOrMedia.inputChat ? [messageOrMedia.inputChat, messageOrMedia.id] : void 0; } else { media = messageOrMedia; date = Date.now(); } if (typeof media == "string") { throw new Error("not implemented"); } if (media instanceof tl_1.Api.MessageMediaWebPage) { if (media.webpage instanceof tl_1.Api.WebPage) { media = media.webpage.document || media.webpage.photo; } } if (media instanceof tl_1.Api.MessageMediaPhoto || media instanceof tl_1.Api.Photo) { return _downloadPhoto(client2, media, outputFile, date, thumb, progressCallback); } else if (media instanceof tl_1.Api.MessageMediaDocument || media instanceof tl_1.Api.Document) { return _downloadDocument(client2, media, outputFile, date, thumb, progressCallback, msgData); } else if (media instanceof tl_1.Api.MessageMediaContact) { return _downloadContact(client2, media, {}); } else if (media instanceof tl_1.Api.WebDocument || media instanceof tl_1.Api.WebDocumentNoProxy) { return _downloadWebDocument(client2, media, {}); } else { return Buffer.alloc(0); } } async function _downloadDocument(client2, doc, outputFile, date, thumb, progressCallback, msgData) { if (doc instanceof tl_1.Api.MessageMediaDocument) { if (!doc.document) { return Buffer.alloc(0); } doc = doc.document; } if (!(doc instanceof tl_1.Api.Document)) { return Buffer.alloc(0); } let size; if (thumb == void 0) { outputFile = getProperFilename(outputFile, "document", "." + (__1.utils.getExtension(doc) || "bin"), date); } else { outputFile = getProperFilename(outputFile, "photo", ".jpg", date); size = getThumb(doc.thumbs || [], thumb); if (size instanceof tl_1.Api.PhotoCachedSize || size instanceof tl_1.Api.PhotoStrippedSize) { return _downloadCachedPhotoSize(size, outputFile); } } return await downloadFileV2(client2, new tl_1.Api.InputDocumentFileLocation({ id: doc.id, accessHash: doc.accessHash, fileReference: doc.fileReference, thumbSize: size && "type" in size ? size.type : "" }), { outputFile, fileSize: size && "size" in size ? (0, big_integer_1.default)(size.size) : doc.size, progressCallback, msgData }); } async function _downloadContact(client2, media, args) { throw new Error("not implemented"); } async function _downloadWebDocument(client2, media, args) { throw new Error("not implemented"); } function getThumb(thumbs, thumb) { function sortThumb(thumb2) { if (thumb2 instanceof tl_1.Api.PhotoStrippedSize) { return thumb2.bytes.length; } if (thumb2 instanceof tl_1.Api.PhotoCachedSize) { return thumb2.bytes.length; } if (thumb2 instanceof tl_1.Api.PhotoSize) { return thumb2.size; } if (thumb2 instanceof tl_1.Api.PhotoSizeProgressive) { return Math.max(...thumb2.sizes); } if (thumb2 instanceof tl_1.Api.VideoSize) { return thumb2.size; } return 0; } thumbs = thumbs.sort((a, b) => sortThumb(a) - sortThumb(b)); const correctThumbs = []; for (const t of thumbs) { if (!(t instanceof tl_1.Api.PhotoPathSize)) { correctThumbs.push(t); } } if (thumb == void 0) { return correctThumbs.pop(); } else if (typeof thumb == "number") { return correctThumbs[thumb]; } else if (typeof thumb == "string") { for (const t of correctThumbs) { if ("type" in t && t.type == thumb) { return t; } } } else if (thumb instanceof tl_1.Api.PhotoSize || thumb instanceof tl_1.Api.PhotoCachedSize || thumb instanceof tl_1.Api.PhotoStrippedSize || thumb instanceof tl_1.Api.VideoSize) { return thumb; } } async function _downloadCachedPhotoSize(size, outputFile) { let data; if (size instanceof tl_1.Api.PhotoStrippedSize) { data = (0, Utils_1.strippedPhotoToJpg)(size.bytes); } else { data = size.bytes; } const writer = getWriter(outputFile); try { await writer.write(data); } finally { closeWriter(writer); } return returnWriterValue(writer); } function getProperFilename(file, fileType, extension, date) { if (!file || typeof file != "string") { return file; } if (fs.existsSync(file) && fs.lstatSync(file).isDirectory()) { let fullName = fileType + date + extension; return path_1.default.join(file, fullName); } return file; } async function _downloadPhoto(client2, photo, file, date, thumb, progressCallback) { if (photo instanceof tl_1.Api.MessageMediaPhoto) { if (photo.photo instanceof tl_1.Api.PhotoEmpty || !photo.photo) { return Buffer.alloc(0); } photo = photo.photo; } if (!(photo instanceof tl_1.Api.Photo)) { return Buffer.alloc(0); } const photoSizes = [...photo.sizes || [], ...photo.videoSizes || []]; const size = getThumb(photoSizes, thumb); if (!size || size instanceof tl_1.Api.PhotoSizeEmpty) { return Buffer.alloc(0); } if (!date) { date = Date.now(); } file = getProperFilename(file, "photo", ".jpg", date); if (size instanceof tl_1.Api.PhotoCachedSize || size instanceof tl_1.Api.PhotoStrippedSize) { return _downloadCachedPhotoSize(size, file); } let fileSize; if (size instanceof tl_1.Api.PhotoSizeProgressive) { fileSize = Math.max(...size.sizes); } else { fileSize = "size" in size ? size.size : 512; } return downloadFileV2(client2, new tl_1.Api.InputPhotoFileLocation({ id: photo.id, accessHash: photo.accessHash, fileReference: photo.fileReference, thumbSize: "type" in size ? size.type : "" }), { outputFile: file, fileSize: (0, big_integer_1.default)(fileSize), progressCallback, dcId: photo.dcId }); } async function downloadProfilePhoto(client2, entity, fileParams) { let photo; if (typeof entity == "object" && "photo" in entity) { photo = entity.photo; } else { entity = await client2.getEntity(entity); if ("photo" in entity) { photo = entity.photo; } else { throw new Error(`Could not get photo from ${entity ? entity.className : void 0}`); } } let dcId; let loc; if (photo instanceof tl_1.Api.UserProfilePhoto || photo instanceof tl_1.Api.ChatPhoto) { dcId = photo.dcId; loc = new tl_1.Api.InputPeerPhotoFileLocation({ peer: __1.utils.getInputPeer(entity), photoId: photo.photoId, big: fileParams.isBig }); } else { return Buffer.alloc(0); } return client2.downloadFile(loc, { outputFile: fileParams.outputFile, dcId }); } } }); // node_modules/telegram/client/uploads.js var require_uploads = __commonJS({ "node_modules/telegram/client/uploads.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.CustomFile = void 0; exports2.uploadFile = uploadFile; exports2._fileToMedia = _fileToMedia; exports2._sendAlbum = _sendAlbum; exports2.sendFile = sendFile; var tl_1 = require_tl(); var Helpers_1 = require_Helpers(); var Utils_1 = require_Utils(); var path_1 = __importDefault2(require_path()); var fs_1 = require_fs(); var index_1 = require_telegram(); var messageParse_1 = require_messageParse(); var messages_1 = require_messages2(); var big_integer_1 = __importDefault2(require_BigInteger()); var CustomFile = class { constructor(name, size, path2, buffer) { this.name = name; this.size = size; this.path = path2; this.buffer = buffer; } }; exports2.CustomFile = CustomFile; var CustomBuffer = class { constructor(options) { this.options = options; if (!options.buffer && !options.filePath) { throw new Error("Either one of `buffer` or `filePath` should be specified"); } } async slice(begin, end) { const { buffer, filePath } = this.options; if (buffer) { return buffer.slice(begin, end); } else if (filePath) { const buffSize = end - begin; const buff = Buffer.alloc(buffSize); const fHandle = await fs_1.promises.open(filePath, "r"); await fHandle.read(buff, 0, buffSize, begin); await fHandle.close(); return Buffer.from(buff); } return Buffer.alloc(0); } }; var KB_TO_BYTES = 1024; var LARGE_FILE_THRESHOLD = 10 * 1024 * 1024; var UPLOAD_TIMEOUT = 15 * 1e3; var DISCONNECT_SLEEP = 1e3; var BUFFER_SIZE_2GB = 2 ** 31; var BUFFER_SIZE_20MB = 20 * 1024 * 1024; async function getFileBuffer(file, fileSize, maxBufferSize) { const options = {}; if (fileSize > maxBufferSize && file instanceof CustomFile) { options.filePath = file.path; } else { options.buffer = Buffer.from(await fileToBuffer(file)); } return new CustomBuffer(options); } async function uploadFile(client2, fileParams) { const { file, onProgress } = fileParams; let { workers } = fileParams; const { name, size } = file; const fileId = (0, Helpers_1.readBigIntFromBuffer)((0, Helpers_1.generateRandomBytes)(8), true, true); const isLarge = size > LARGE_FILE_THRESHOLD; const partSize = (0, Utils_1.getAppropriatedPartSize)((0, big_integer_1.default)(size)) * KB_TO_BYTES; const partCount = Math.floor((size + partSize - 1) / partSize); const buffer = await getFileBuffer(file, size, fileParams.maxBufferSize || BUFFER_SIZE_20MB - 1); await client2.getSender(client2.session.dcId); if (!workers || !size) { workers = 1; } if (workers >= partCount) { workers = partCount; } let progress = 0; if (onProgress) { onProgress(progress); } for (let i = 0; i < partCount; i += workers) { const sendingParts = []; let end = i + workers; if (end > partCount) { end = partCount; } for (let j = i; j < end; j++) { let endPart = (j + 1) * partSize; if (endPart > size) { endPart = size; } if (endPart == j * partSize) { break; } const bytes = await buffer.slice(j * partSize, endPart); sendingParts.push((async (jMemo, bytesMemo) => { while (true) { let sender; try { sender = await client2.getSender(client2.session.dcId); await sender.send(isLarge ? new tl_1.Api.upload.SaveBigFilePart({ fileId, filePart: jMemo, fileTotalParts: partCount, bytes: bytesMemo }) : new tl_1.Api.upload.SaveFilePart({ fileId, filePart: jMemo, bytes: bytesMemo })); } catch (err) { if (sender && !sender.isConnected()) { await (0, Helpers_1.sleep)(DISCONNECT_SLEEP); continue; } else if (err instanceof index_1.errors.FloodWaitError) { await (0, Helpers_1.sleep)(err.seconds * 1e3); continue; } throw err; } if (onProgress) { if (onProgress.isCanceled) { throw new Error("USER_CANCELED"); } progress += 1 / partCount; onProgress(progress); } break; } })(j, bytes)); } await Promise.all(sendingParts); } return isLarge ? new tl_1.Api.InputFileBig({ id: fileId, parts: partCount, name }) : new tl_1.Api.InputFile({ id: fileId, parts: partCount, name, md5Checksum: "" // This is not a "flag", so not sure if we can make it optional. }); } async function _fileToMedia(client2, { file, forceDocument, fileSize, progressCallback, attributes, thumb, voiceNote = false, videoNote = false, supportsStreaming = false, mimeType, asImage, workers = 1 }) { if (!file) { return { fileHandle: void 0, media: void 0, image: void 0 }; } const isImage = index_1.utils.isImage(file); if (asImage == void 0) { asImage = isImage && !forceDocument; } if (typeof file == "object" && !Buffer.isBuffer(file) && !(file instanceof tl_1.Api.InputFile) && !(file instanceof tl_1.Api.InputFileBig) && !(file instanceof CustomFile) && !("read" in file)) { try { return { fileHandle: void 0, media: index_1.utils.getInputMedia(file, { isPhoto: asImage, attributes, forceDocument, voiceNote, videoNote, supportsStreaming }), image: asImage }; } catch (e) { return { fileHandle: void 0, media: void 0, image: isImage }; } } let media; let fileHandle; let createdFile; if (file instanceof tl_1.Api.InputFile || file instanceof tl_1.Api.InputFileBig) { fileHandle = file; } else if (typeof file == "string" && (file.startsWith("https://") || file.startsWith("http://"))) { if (asImage) { media = new tl_1.Api.InputMediaPhotoExternal({ url: file }); } else { media = new tl_1.Api.InputMediaDocumentExternal({ url: file }); } } else if (!(typeof file == "string") || (await fs_1.promises.lstat(file)).isFile()) { if (typeof file == "string") { createdFile = new CustomFile(path_1.default.basename(file), (await fs_1.promises.stat(file)).size, file); } else if (typeof File !== "undefined" && file instanceof File || file instanceof CustomFile) { createdFile = file; } else { let name; if ("name" in file) { name = file.name; } else { name = "unnamed"; } if (Buffer.isBuffer(file)) { createdFile = new CustomFile(name, file.length, "", file); } } if (!createdFile) { throw new Error(`Could not create file from ${JSON.stringify(file)}`); } fileHandle = await uploadFile(client2, { file: createdFile, onProgress: progressCallback, workers }); } else { throw new Error(`"Not a valid path nor a url ${file}`); } if (media != void 0) { } else if (fileHandle == void 0) { throw new Error(`Failed to convert ${file} to media. Not an existing file or an HTTP URL`); } else if (asImage) { media = new tl_1.Api.InputMediaUploadedPhoto({ file: fileHandle }); } else { let res = index_1.utils.getAttributes(file, { mimeType, attributes, forceDocument: forceDocument && !isImage, voiceNote, videoNote, supportsStreaming, thumb }); attributes = res.attrs; mimeType = res.mimeType; let uploadedThumb; if (!thumb) { uploadedThumb = void 0; } else { if (typeof thumb == "string") { uploadedThumb = new CustomFile(path_1.default.basename(thumb), (await fs_1.promises.stat(thumb)).size, thumb); } else if (typeof File !== "undefined" && thumb instanceof File) { uploadedThumb = thumb; } else { let name; if ("name" in thumb) { name = thumb.name; } else { name = "unnamed"; } if (Buffer.isBuffer(thumb)) { uploadedThumb = new CustomFile(name, thumb.length, "", thumb); } } if (!uploadedThumb) { throw new Error(`Could not create file from ${file}`); } uploadedThumb = await uploadFile(client2, { file: uploadedThumb, workers: 1 }); } media = new tl_1.Api.InputMediaUploadedDocument({ file: fileHandle, mimeType, attributes, thumb: uploadedThumb, forceFile: forceDocument && !isImage }); } return { fileHandle, media, image: asImage }; } async function _sendAlbum(client2, entity, { file, caption, forceDocument = false, fileSize, clearDraft = false, progressCallback, replyTo, attributes, thumb, parseMode, voiceNote = false, videoNote = false, silent, supportsStreaming = false, scheduleDate, workers = 1, noforwards, commentTo, topMsgId }) { entity = await client2.getInputEntity(entity); let files = []; if (!Array.isArray(file)) { files = [file]; } else { files = file; } if (!Array.isArray(caption)) { if (!caption) { caption = ""; } caption = [caption]; } const captions = []; for (const c of caption) { captions.push(await (0, messageParse_1._parseMessageText)(client2, c, parseMode)); } if (commentTo != void 0) { const discussionData = await (0, messages_1.getCommentData)(client2, entity, commentTo); entity = discussionData.entity; replyTo = discussionData.replyTo; } else { replyTo = index_1.utils.getMessageId(replyTo); } if (!attributes) { attributes = []; } let index2 = 0; const albumFiles = []; for (const file2 of files) { let { fileHandle, media, image } = await _fileToMedia(client2, { file: file2, forceDocument, fileSize, progressCallback, // @ts-ignore attributes: attributes[index2], thumb, voiceNote, videoNote, supportsStreaming, workers }); index2++; if (media instanceof tl_1.Api.InputMediaUploadedPhoto || media instanceof tl_1.Api.InputMediaPhotoExternal) { const r = await client2.invoke(new tl_1.Api.messages.UploadMedia({ peer: entity, media })); if (r instanceof tl_1.Api.MessageMediaPhoto) { media = (0, Utils_1.getInputMedia)(r.photo); } } else if (media instanceof tl_1.Api.InputMediaUploadedDocument) { const r = await client2.invoke(new tl_1.Api.messages.UploadMedia({ peer: entity, media })); if (r instanceof tl_1.Api.MessageMediaDocument) { media = (0, Utils_1.getInputMedia)(r.document); } } let text = ""; let msgEntities = []; if (captions.length) { [text, msgEntities] = captions.shift(); } albumFiles.push(new tl_1.Api.InputSingleMedia({ media, message: text, entities: msgEntities })); } let replyObject = void 0; if (replyTo != void 0) { replyObject = new tl_1.Api.InputReplyToMessage({ replyToMsgId: (0, Utils_1.getMessageId)(replyTo), topMsgId: (0, Utils_1.getMessageId)(topMsgId) }); } const result = await client2.invoke(new tl_1.Api.messages.SendMultiMedia({ peer: entity, replyTo: replyObject, multiMedia: albumFiles, silent, scheduleDate, clearDraft, noforwards })); const randomIds = albumFiles.map((m) => m.randomId); return client2._getResponseMessage(randomIds, result, entity); } async function sendFile(client2, entity, { file, caption, forceDocument = false, fileSize, clearDraft = false, progressCallback, replyTo, attributes, thumb, parseMode, formattingEntities, voiceNote = false, videoNote = false, buttons, silent, supportsStreaming = false, scheduleDate, workers = 1, noforwards, commentTo, topMsgId }) { if (!file) { throw new Error("You need to specify a file"); } if (!caption) { caption = ""; } entity = await client2.getInputEntity(entity); if (commentTo != void 0) { const discussionData = await (0, messages_1.getCommentData)(client2, entity, commentTo); entity = discussionData.entity; replyTo = discussionData.replyTo; } else { replyTo = index_1.utils.getMessageId(replyTo); } if (Array.isArray(file)) { return await _sendAlbum(client2, entity, { file, caption, replyTo, parseMode, attributes, silent, scheduleDate, supportsStreaming, clearDraft, forceDocument, noforwards, topMsgId }); } if (Array.isArray(caption)) { caption = caption[0] || ""; } let msgEntities; if (formattingEntities != void 0) { msgEntities = formattingEntities; } else { [caption, msgEntities] = await (0, messageParse_1._parseMessageText)(client2, caption, parseMode); } const { fileHandle, media, image } = await _fileToMedia(client2, { file, forceDocument, fileSize, progressCallback, // @ts-ignore attributes, thumb, voiceNote, videoNote, supportsStreaming, workers }); if (media == void 0) { throw new Error(`Cannot use ${file} as file.`); } const markup = client2.buildReplyMarkup(buttons); let replyObject = void 0; if (replyTo != void 0) { replyObject = new tl_1.Api.InputReplyToMessage({ replyToMsgId: (0, Utils_1.getMessageId)(replyTo), topMsgId: (0, Utils_1.getMessageId)(topMsgId) }); } const request = new tl_1.Api.messages.SendMedia({ peer: entity, media, replyTo: replyObject, message: caption, entities: msgEntities, replyMarkup: markup, silent, scheduleDate, clearDraft, noforwards }); const result = await client2.invoke(request); return client2._getResponseMessage(request, result, entity); } function fileToBuffer(file) { if (typeof File !== "undefined" && file instanceof File) { return new Response(file).arrayBuffer(); } else if (file instanceof CustomFile) { if (file.buffer != void 0) { return file.buffer; } else { return fs_1.promises.readFile(file.path); } } else { throw new Error("Could not create buffer from file " + file); } } } }); // node_modules/telegram/client/messages.js var require_messages2 = __commonJS({ "node_modules/telegram/client/messages.js"(exports2) { "use strict"; init_define_import_meta_env(); var __asyncValues2 = exports2 && exports2.__asyncValues || function(o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator], i; 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); 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); }); }; } function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v2) { resolve({ value: v2, done: d }); }, reject); } }; var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2._IDsIter = exports2._MessagesIter = void 0; exports2.iterMessages = iterMessages; exports2.getMessages = getMessages; exports2.sendMessage = sendMessage; exports2.forwardMessages = forwardMessages; exports2.editMessage = editMessage; exports2.deleteMessages = deleteMessages; exports2.pinMessage = pinMessage; exports2.unpinMessage = unpinMessage; exports2._pin = _pin; exports2.markAsRead = markAsRead; exports2.getCommentData = getCommentData; var tl_1 = require_tl(); var requestIter_1 = require_requestIter(); var Helpers_1 = require_Helpers(); var Utils_1 = require_Utils(); var __1 = require_telegram(); var messageParse_1 = require_messageParse(); var users_1 = require_users(); var big_integer_1 = __importDefault2(require_BigInteger()); var uploads_1 = require_uploads(); var _MAX_CHUNK_SIZE = 100; var _MessagesIter = class extends requestIter_1.RequestIter { async _init({ entity, offsetId, minId, maxId, fromUser, offsetDate, addOffset, filter: filter2, search, replyTo }) { var _a, e_1, _b, _c; if (entity) { this.entity = await this.client.getInputEntity(entity); } else { this.entity = void 0; if (this.reverse) { throw new Error("Cannot reverse global search"); } } if (this.reverse) { offsetId = Math.max(offsetId, minId); if (offsetId && maxId) { if (maxId - offsetId <= 1) { return false; } } if (!maxId) { maxId = Number.MAX_SAFE_INTEGER; } } else { offsetId = Math.max(offsetId, maxId); if (offsetId && minId) { if (offsetId - minId <= 1) { return false; } } } if (this.reverse) { if (offsetId) { offsetId += 1; } else if (!offsetDate) { offsetId = 1; } } if (fromUser) { fromUser = await this.client.getInputEntity(fromUser); } if (!this.entity && fromUser) { this.entity = new tl_1.Api.InputPeerEmpty(); } if (!filter2) { filter2 = new tl_1.Api.InputMessagesFilterEmpty(); } if (!this.entity) { this.request = new tl_1.Api.messages.SearchGlobal({ q: search || "", filter: filter2, minDate: void 0, // TODO fix this smh maxDate: offsetDate, offsetRate: void 0, offsetPeer: new tl_1.Api.InputPeerEmpty(), offsetId, limit: 1 }); } else if (replyTo !== void 0) { this.request = new tl_1.Api.messages.GetReplies({ peer: this.entity, msgId: replyTo, offsetId, offsetDate, addOffset, limit: 0, maxId: 0, minId: 0, hash: big_integer_1.default.zero }); } else if (search !== void 0 || !(filter2 instanceof tl_1.Api.InputMessagesFilterEmpty) || fromUser !== void 0) { this.request = new tl_1.Api.messages.Search({ peer: this.entity, q: search || "", filter: typeof filter2 === "function" ? new filter2() : filter2, minDate: void 0, maxDate: offsetDate, offsetId, addOffset, limit: 0, maxId: 0, minId: 0, hash: (0, Helpers_1.generateRandomBigInt)(), fromId: fromUser }); if (!(filter2 instanceof tl_1.Api.InputMessagesFilterEmpty) && offsetDate && !search && !offsetId) { try { for (var _d = true, _e = __asyncValues2(this.client.iterMessages(this.entity, { limit: 1, offsetDate })), _f; _f = await _e.next(), _a = _f.done, !_a; _d = true) { _c = _f.value; _d = false; const m = _c; this.request.offsetId = m.id + 1; } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (!_d && !_a && (_b = _e.return)) await _b.call(_e); } finally { if (e_1) throw e_1.error; } } } } else { this.request = new tl_1.Api.messages.GetHistory({ peer: this.entity, limit: 1, offsetDate, offsetId, minId: 0, maxId: 0, addOffset, hash: big_integer_1.default.zero }); } if (this.limit <= 0) { const result = await this.client.invoke(this.request); if (result instanceof tl_1.Api.messages.MessagesNotModified) { this.total = result.count; } else { if ("count" in result) { this.total = result.count; } else { this.total = result.messages.length; } } return false; } if (!this.waitTime) { this.waitTime = this.limit > 3e3 ? 1 : 0; } if (this.reverse && !(this.request instanceof tl_1.Api.messages.SearchGlobal)) { this.request.addOffset -= _MAX_CHUNK_SIZE; } this.addOffset = addOffset; this.maxId = maxId; this.minId = minId; this.lastId = this.reverse ? 0 : Number.MAX_SAFE_INTEGER; } async _loadNextChunk() { var _a; if (!this.request) { throw new Error("Request not set yet"); } this.request.limit = Math.min(this.left, _MAX_CHUNK_SIZE); if (this.reverse && this.request.limit != _MAX_CHUNK_SIZE) { if (!(this.request instanceof tl_1.Api.messages.SearchGlobal)) { this.request.addOffset = this.addOffset - this.request.limit; } } const r = await this.client.invoke(this.request); if (r instanceof tl_1.Api.messages.MessagesNotModified) { return true; } if ("count" in r) { this.total = r.count; } else { this.total = r.messages.length; } const entities2 = /* @__PURE__ */ new Map(); for (const x of [...r.users, ...r.chats]) { entities2.set((0, Utils_1.getPeerId)(x), x); } const messages = this.reverse ? r.messages.reverse() : r.messages; for (const message of messages) { if (!this._messageInRange(message)) { return true; } this.lastId = message.id; try { message._finishInit(this.client, entities2, this.entity); } catch (e) { } message._entities = entities2; (_a = this.buffer) === null || _a === void 0 ? void 0 : _a.push(message); } if (r.messages.length < this.request.limit) { return true; } if (this.buffer) { this._updateOffset(this.buffer[this.buffer.length - 1], r); } else { return true; } } _messageInRange(message) { if (this.entity) { if (this.reverse) { if (message.id <= this.lastId || message.id >= this.maxId) { return false; } } else { if (message.id >= this.lastId || message.id <= this.minId) { return false; } } } return true; } [Symbol.asyncIterator]() { return super[Symbol.asyncIterator](); } _updateOffset(lastMessage, response) { if (!this.request) { throw new Error("Request not set yet"); } this.request.offsetId = Number(lastMessage.id); if (this.reverse) { this.request.offsetId += 1; } if (this.request instanceof tl_1.Api.messages.Search) { this.request.maxDate = -1; } else { if (!(this.request instanceof tl_1.Api.messages.SearchGlobal)) { this.request.offsetDate = lastMessage.date; } } if (this.request instanceof tl_1.Api.messages.SearchGlobal) { if (lastMessage.inputChat) { this.request.offsetPeer = lastMessage.inputChat; } else { this.request.offsetPeer = new tl_1.Api.InputPeerEmpty(); } this.request.offsetRate = response.nextRate; } } }; exports2._MessagesIter = _MessagesIter; var _IDsIter = class extends requestIter_1.RequestIter { async _init({ entity, ids }) { this.total = ids.length; this._ids = this.reverse ? ids.reverse() : ids; this._offset = 0; this._entity = entity ? await this.client.getInputEntity(entity) : void 0; this._ty = this._entity ? (0, Helpers_1._entityType)(this._entity) : void 0; if (!this.waitTime) { this.waitTime = this.limit > 300 ? 10 : 0; } } [Symbol.asyncIterator]() { return super[Symbol.asyncIterator](); } async _loadNextChunk() { var _a, _b, _c; const ids = this._ids.slice(this._offset, this._offset + _MAX_CHUNK_SIZE); if (!ids.length) { return false; } this._offset += _MAX_CHUNK_SIZE; let fromId; let r; if (this._ty == Helpers_1._EntityType.CHANNEL) { try { r = await this.client.invoke(new tl_1.Api.channels.GetMessages({ channel: this._entity, id: ids })); } catch (e) { if (e.errorMessage == "MESSAGE_IDS_EMPTY") { r = new tl_1.Api.messages.MessagesNotModified({ count: ids.length }); } else { throw e; } } } else { r = await this.client.invoke(new tl_1.Api.messages.GetMessages({ id: ids })); if (this._entity) { fromId = await (0, users_1._getPeer)(this.client, this._entity); } } if (r instanceof tl_1.Api.messages.MessagesNotModified) { (_a = this.buffer) === null || _a === void 0 ? void 0 : _a.push(...Array(ids.length)); return; } const entities2 = /* @__PURE__ */ new Map(); for (const entity of [...r.users, ...r.chats]) { entities2.set(__1.utils.getPeerId(entity), entity); } let message; for (message of r.messages) { if (message instanceof tl_1.Api.MessageEmpty || fromId && __1.utils.getPeerId(message.peerId) != __1.utils.getPeerId(fromId)) { (_b = this.buffer) === null || _b === void 0 ? void 0 : _b.push(void 0); } else { const temp = message; temp._finishInit(this.client, entities2, this._entity); temp._entities = entities2; (_c = this.buffer) === null || _c === void 0 ? void 0 : _c.push(temp); } } } }; exports2._IDsIter = _IDsIter; var IterMessagesDefaults = { limit: void 0, offsetDate: void 0, offsetId: 0, maxId: 0, minId: 0, addOffset: 0, search: void 0, filter: void 0, fromUser: void 0, waitTime: void 0, ids: void 0, reverse: false, replyTo: void 0, scheduled: false }; function iterMessages(client2, entity, options) { const { limit, offsetDate, offsetId, maxId, minId, addOffset, search, filter: filter2, fromUser, waitTime, ids, reverse, replyTo } = Object.assign(Object.assign({}, IterMessagesDefaults), options); if (ids) { let idsArray; if (!(0, Helpers_1.isArrayLike)(ids)) { idsArray = [ids]; } else { idsArray = ids; } return new _IDsIter(client2, idsArray.length, { reverse, waitTime }, { entity, ids: idsArray }); } return new _MessagesIter(client2, limit, { waitTime, reverse }, { entity, offsetId, minId, maxId, fromUser, offsetDate, addOffset, filter: filter2, search, replyTo }); } async function getMessages(client2, entity, params) { var _a, e_2, _b, _c; if (Object.keys(params).length == 1 && params.limit === void 0) { if (params.minId === void 0 && params.maxId === void 0) { params.limit = void 0; } else { params.limit = 1; } } const it = client2.iterMessages(entity, params); const ids = params.ids; if (ids && !(0, Helpers_1.isArrayLike)(ids)) { try { for (var _d = true, it_1 = __asyncValues2(it), it_1_1; it_1_1 = await it_1.next(), _a = it_1_1.done, !_a; _d = true) { _c = it_1_1.value; _d = false; const message = _c; return [message]; } } catch (e_2_1) { e_2 = { error: e_2_1 }; } finally { try { if (!_d && !_a && (_b = it_1.return)) await _b.call(it_1); } finally { if (e_2) throw e_2.error; } } return []; } return await it.collect(); } async function sendMessage(client2, entity, { message, replyTo, attributes, parseMode, formattingEntities, linkPreview = true, file, thumb, forceDocument, clearDraft, buttons, silent, supportStreaming, schedule, noforwards, commentTo, topMsgId } = {}) { if (file) { return client2.sendFile(entity, { file, caption: message ? typeof message == "string" ? message : message.message : "", forceDocument, clearDraft, replyTo, attributes, thumb, supportsStreaming: supportStreaming, parseMode, formattingEntities, silent, scheduleDate: schedule, buttons, noforwards, commentTo, topMsgId }); } entity = await client2.getInputEntity(entity); if (commentTo != void 0) { const discussionData = await getCommentData(client2, entity, commentTo); entity = discussionData.entity; replyTo = discussionData.replyTo; } let markup, request; let replyObject = void 0; if (replyTo != void 0) { replyObject = new tl_1.Api.InputReplyToMessage({ replyToMsgId: (0, Utils_1.getMessageId)(replyTo), topMsgId: (0, Utils_1.getMessageId)(topMsgId) }); } if (message && message instanceof tl_1.Api.Message) { if (buttons == void 0) { markup = message.replyMarkup; } else { markup = client2.buildReplyMarkup(buttons); } if (silent == void 0) { silent = message.silent; } if (message.media && !(message.media instanceof tl_1.Api.MessageMediaWebPage)) { return client2.sendFile(entity, { file: message.media, caption: message.message, silent, replyTo, buttons: markup, formattingEntities: message.entities, scheduleDate: schedule }); } request = new tl_1.Api.messages.SendMessage({ peer: entity, message: message.message || "", silent, replyTo: replyObject, replyMarkup: markup, entities: message.entities, clearDraft, noWebpage: !(message.media instanceof tl_1.Api.MessageMediaWebPage), scheduleDate: schedule, noforwards }); message = message.message; } else { if (formattingEntities == void 0) { [message, formattingEntities] = await (0, messageParse_1._parseMessageText)(client2, message || "", parseMode); } if (!message) { throw new Error("The message cannot be empty unless a file is provided"); } request = new tl_1.Api.messages.SendMessage({ peer: entity, message: message.toString(), entities: formattingEntities, noWebpage: !linkPreview, replyTo: replyObject, clearDraft, silent, replyMarkup: client2.buildReplyMarkup(buttons), scheduleDate: schedule, noforwards }); } const result = await client2.invoke(request); if (result instanceof tl_1.Api.UpdateShortSentMessage) { const msg = new tl_1.Api.Message({ id: result.id, peerId: await (0, users_1._getPeer)(client2, entity), message, date: result.date, out: result.out, media: result.media, entities: result.entities, replyMarkup: request.replyMarkup, ttlPeriod: result.ttlPeriod }); msg._finishInit(client2, /* @__PURE__ */ new Map(), entity); return msg; } return client2._getResponseMessage(request, result, entity); } async function forwardMessages(client2, entity, { messages, fromPeer, silent, schedule, noforwards, dropAuthor }) { if (!(0, Helpers_1.isArrayLike)(messages)) { messages = [messages]; } entity = await client2.getInputEntity(entity); let fromPeerId; if (fromPeer) { fromPeer = await client2.getInputEntity(fromPeer); fromPeerId = await client2.getPeerId(fromPeer); } const getKey = (m) => { if (m instanceof tl_1.Api.Message) { return m.chatId; } let msgId = (0, Utils_1.parseID)(m); if (msgId) { if (fromPeerId !== void 0) { return fromPeerId; } throw new Error("fromPeer must be given if integer IDs are used"); } else { throw new Error(`Cannot forward ${m}`); } }; const sent = []; for (let [chatId, chunk] of (0, Helpers_1.groupBy)(messages, getKey)) { let chat; let numbers = []; if (typeof chunk[0] == "number") { chat = fromPeer; numbers = chunk; } else { chat = await chunk[0].getInputChat(); numbers = chunk.map((m) => m.id); } chunk.push(); const request = new tl_1.Api.messages.ForwardMessages({ fromPeer: chat, id: numbers, toPeer: entity, silent, scheduleDate: schedule, noforwards, dropAuthor }); const result = await client2.invoke(request); sent.push(client2._getResponseMessage(request, result, entity)); } return sent; } async function editMessage(client2, entity, { message, text, parseMode, formattingEntities, linkPreview = true, file, forceDocument, buttons, schedule }) { if (typeof message === "number" && typeof text === "undefined" && !file && !schedule) { throw Error("You have to provide either file or text or schedule property."); } entity = await client2.getInputEntity(entity); let id; let markup; let entities2; let inputMedia; if (file) { const { fileHandle, media, image } = await (0, uploads_1._fileToMedia)(client2, { file, forceDocument }); inputMedia = media; } if (message instanceof tl_1.Api.Message) { id = (0, Utils_1.getMessageId)(message); text = message.message; entities2 = message.entities; if (buttons == void 0) { markup = message.replyMarkup; } else { markup = client2.buildReplyMarkup(buttons); } if (message.media) { inputMedia = (0, Utils_1.getInputMedia)(message.media, { forceDocument }); } } else { if (typeof message !== "number") { throw Error("editMessageParams.message must be either a number or a Api.Message type"); } id = message; if (formattingEntities == void 0) { [text, entities2] = await (0, messageParse_1._parseMessageText)(client2, text || "", parseMode); } else { entities2 = formattingEntities; } markup = client2.buildReplyMarkup(buttons); } const request = new tl_1.Api.messages.EditMessage({ peer: entity, id, message: text, noWebpage: !linkPreview, entities: entities2, media: inputMedia, replyMarkup: markup, scheduleDate: schedule }); const result = await client2.invoke(request); return client2._getResponseMessage(request, result, entity); } async function deleteMessages(client2, entity, messageIds, { revoke = false }) { let ty = Helpers_1._EntityType.USER; if (entity) { entity = await client2.getInputEntity(entity); ty = (0, Helpers_1._entityType)(entity); } const ids = []; for (const messageId of messageIds) { if (messageId instanceof tl_1.Api.Message || messageId instanceof tl_1.Api.MessageService || messageId instanceof tl_1.Api.MessageEmpty) { ids.push(messageId.id); } else if (typeof messageId === "number") { ids.push(messageId); } else { throw new Error(`Cannot convert ${messageId} to an integer`); } } const results = []; if (ty == Helpers_1._EntityType.CHANNEL) { for (const chunk of __1.utils.chunks(ids)) { results.push(client2.invoke(new tl_1.Api.channels.DeleteMessages({ channel: entity, id: chunk }))); } } else { for (const chunk of __1.utils.chunks(ids)) { results.push(client2.invoke(new tl_1.Api.messages.DeleteMessages({ id: chunk, revoke }))); } } return Promise.all(results); } async function pinMessage(client2, entity, message, pinMessageParams) { return await _pin(client2, entity, message, false, pinMessageParams === null || pinMessageParams === void 0 ? void 0 : pinMessageParams.notify, pinMessageParams === null || pinMessageParams === void 0 ? void 0 : pinMessageParams.pmOneSide); } async function unpinMessage(client2, entity, message, unpinMessageParams) { return await _pin(client2, entity, message, true, unpinMessageParams === null || unpinMessageParams === void 0 ? void 0 : unpinMessageParams.notify, unpinMessageParams === null || unpinMessageParams === void 0 ? void 0 : unpinMessageParams.pmOneSide); } async function _pin(client2, entity, message, unpin, notify = false, pmOneSide = false) { message = __1.utils.getMessageId(message) || 0; if (message === 0) { return await client2.invoke(new tl_1.Api.messages.UnpinAllMessages({ peer: entity })); } entity = await client2.getInputEntity(entity); const request = new tl_1.Api.messages.UpdatePinnedMessage({ silent: !notify, unpin, pmOneside: pmOneSide, peer: entity, id: message }); const result = await client2.invoke(request); if (unpin || !("updates" in result) || "updates" in result && !result.updates) { return; } return client2._getResponseMessage(request, result, entity); } async function markAsRead(client2, entity, message, markAsReadParams) { let maxId = (markAsReadParams === null || markAsReadParams === void 0 ? void 0 : markAsReadParams.maxId) || 0; const maxIdIsUndefined = (markAsReadParams === null || markAsReadParams === void 0 ? void 0 : markAsReadParams.maxId) === void 0; if (maxIdIsUndefined) { if (message) { if (Array.isArray(message)) { maxId = Math.max(...message.map((v) => __1.utils.getMessageId(v))); } else { maxId = __1.utils.getMessageId(message); } } } entity = await client2.getInputEntity(entity); if (markAsReadParams && !markAsReadParams.clearMentions) { await client2.invoke(new tl_1.Api.messages.ReadMentions({ peer: entity })); if (maxIdIsUndefined && message === void 0) { return true; } } if ((0, Helpers_1._entityType)(entity) === Helpers_1._EntityType.CHANNEL) { return await client2.invoke(new tl_1.Api.channels.ReadHistory({ channel: entity, maxId })); } else { await client2.invoke(new tl_1.Api.messages.ReadHistory({ peer: entity, maxId })); return true; } } async function getCommentData(client2, entity, message) { const result = await client2.invoke(new tl_1.Api.messages.GetDiscussionMessage({ peer: entity, msgId: __1.utils.getMessageId(message) })); const relevantMessage = result.messages.reduce((p, c) => p && p.id < c.id ? p : c); let chat; for (const c of result.chats) { if (relevantMessage.peerId instanceof tl_1.Api.PeerChannel && c.id.eq(relevantMessage.peerId.channelId)) { chat = c; break; } } return { entity: __1.utils.getInputPeer(chat), replyTo: relevantMessage.id }; } } }); // node_modules/telegram/tl/custom/index.js var require_custom = __commonJS({ "node_modules/telegram/tl/custom/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.ChatGetter = void 0; var chatGetter_1 = require_chatGetter(); Object.defineProperty(exports2, "ChatGetter", { enumerable: true, get: function() { return chatGetter_1.ChatGetter; } }); } }); // node_modules/telegram/events/common.js var require_common3 = __commonJS({ "node_modules/telegram/events/common.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.EventCommonSender = exports2.EventCommon = exports2.EventBuilder = void 0; exports2._intoIdSet = _intoIdSet; var tl_1 = require_tl(); var custom_1 = require_custom(); var Helpers_1 = require_Helpers(); var __1 = require_telegram(); var senderGetter_1 = require_senderGetter(); var big_integer_1 = __importDefault2(require_BigInteger()); var Utils_1 = require_Utils(); async function _intoIdSet(client2, chats) { if (chats == void 0) { return void 0; } if (!(0, Helpers_1.isArrayLike)(chats)) { chats = [chats]; } const result = /* @__PURE__ */ new Set(); for (let chat of chats) { if (typeof chat == "number" || typeof chat == "bigint" || typeof chat == "string" && (0, Utils_1.parseID)(chat) || big_integer_1.default.isInstance(chat)) { chat = (0, Helpers_1.returnBigInt)(chat); if (chat.lesser(0)) { result.add(chat.toString()); } else { result.add(__1.utils.getPeerId(new tl_1.Api.PeerUser({ userId: chat }))); result.add(__1.utils.getPeerId(new tl_1.Api.PeerChat({ chatId: chat }))); result.add(__1.utils.getPeerId(new tl_1.Api.PeerChannel({ channelId: chat }))); } } else if (typeof chat == "object" && chat.SUBCLASS_OF_ID == 47470215) { result.add(__1.utils.getPeerId(chat)); } else { chat = await client2.getInputEntity(chat); if (chat instanceof tl_1.Api.InputPeerSelf) { chat = await client2.getMe(true); } result.add(__1.utils.getPeerId(chat)); } } return Array.from(result); } var EventBuilder = class { constructor(eventParams) { var _a; this.chats = (_a = eventParams.chats) === null || _a === void 0 ? void 0 : _a.map((x) => x.toString()); this.blacklistChats = eventParams.blacklistChats || false; this.resolved = false; this.func = eventParams.func; } build(update, callback, selfId) { if (update) return update; } async resolve(client2) { if (this.resolved) { return; } await this._resolve(client2); this.resolved = true; } async _resolve(client2) { this.chats = await _intoIdSet(client2, this.chats); } filter(event) { if (!this.resolved) { return; } if (this.chats != void 0) { if (event.chatId == void 0) { return; } const inside = this.chats.includes(event.chatId.toString()); if (inside == this.blacklistChats) { return; } } if (this.func && !this.func(event)) { return; } return event; } }; exports2.EventBuilder = EventBuilder; var EventCommon = class extends custom_1.ChatGetter { constructor({ chatPeer = void 0, msgId = void 0, broadcast = void 0 }) { super(); this._eventName = "Event"; custom_1.ChatGetter.initChatClass(this, { chatPeer, broadcast }); this._entities = /* @__PURE__ */ new Map(); this._client = void 0; this._messageId = msgId; } _setClient(client2) { this._client = client2; } get client() { return this._client; } }; exports2.EventCommon = EventCommon; var EventCommonSender = class extends senderGetter_1.SenderGetter { constructor({ chatPeer = void 0, msgId = void 0, broadcast = void 0 }) { super(); this._eventName = "Event"; custom_1.ChatGetter.initChatClass(this, { chatPeer, broadcast }); senderGetter_1.SenderGetter.initChatClass(this, { chatPeer, broadcast }); this._entities = /* @__PURE__ */ new Map(); this._client = void 0; this._messageId = msgId; } _setClient(client2) { this._client = client2; } get client() { return this._client; } }; exports2.EventCommonSender = EventCommonSender; } }); // node_modules/telegram/events/Raw.js var require_Raw = __commonJS({ "node_modules/telegram/events/Raw.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Raw = void 0; var common_1 = require_common3(); var Raw = class extends common_1.EventBuilder { constructor(params) { super({ func: params.func }); this.types = params.types; } async resolve(client2) { this.resolved = true; } build(update) { return update; } filter(event) { if (this.types) { let correct = false; for (const type of this.types) { if (event instanceof type) { correct = true; break; } } if (!correct) { return; } } return super.filter(event); } }; exports2.Raw = Raw; } }); // node_modules/telegram/client/updates.js var require_updates = __commonJS({ "node_modules/telegram/client/updates.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.StopPropagation = void 0; exports2.on = on; exports2.addEventHandler = addEventHandler; exports2.removeEventHandler = removeEventHandler; exports2.listEventHandlers = listEventHandlers; exports2.catchUp = catchUp; exports2._handleUpdate = _handleUpdate; exports2._processUpdate = _processUpdate; exports2._dispatchUpdate = _dispatchUpdate; exports2._updateLoop = _updateLoop; var tl_1 = require_tl(); var network_1 = require_network(); var index_1 = require_telegram(); var Helpers_1 = require_Helpers(); var Logger_1 = require_Logger(); var PING_INTERVAL = 9e3; var PING_TIMEOUT = 1e4; var PING_FAIL_ATTEMPTS = 3; var PING_FAIL_INTERVAL = 100; var PING_DISCONNECT_DELAY = 6e4; var PING_INTERVAL_TO_WAKE_UP = 5e3; var PING_WAKE_UP_TIMEOUT = 3e3; var PING_WAKE_UP_WARNING_TIMEOUT = 1e3; var StopPropagation = class extends Error { }; exports2.StopPropagation = StopPropagation; function on(client2, event) { return (f) => { client2.addEventHandler(f, event); return f; }; } function addEventHandler(client2, callback, event) { if (event == void 0) { const raw = require_Raw().Raw; event = new raw({}); } event.client = client2; client2._eventBuilders.push([event, callback]); } function removeEventHandler(client2, callback, event) { client2._eventBuilders = client2._eventBuilders.filter(function(item) { return item[0] !== event && item[1] !== callback; }); } function listEventHandlers(client2) { return client2._eventBuilders; } function catchUp() { } function _handleUpdate(client2, update) { if (typeof update === "number") { if ([-1, 0, 1].includes(update)) { _dispatchUpdate(client2, { update: new network_1.UpdateConnectionState(update) }); return; } } client2._entityCache.add(update); client2.session.processEntities(update); if (update instanceof tl_1.Api.Updates || update instanceof tl_1.Api.UpdatesCombined) { const entities2 = /* @__PURE__ */ new Map(); for (const x of [...update.users, ...update.chats]) { entities2.set(index_1.utils.getPeerId(x), x); } for (const u of update.updates) { _processUpdate(client2, u, update.updates, entities2); } } else if (update instanceof tl_1.Api.UpdateShort) { _processUpdate(client2, update.update, null); } else { _processUpdate(client2, update, null); } } function _processUpdate(client2, update, others, entities2) { update._entities = entities2 || /* @__PURE__ */ new Map(); const args = { update, others }; _dispatchUpdate(client2, args); } async function _dispatchUpdate(client2, args) { for (const [builder, callback] of client2._eventBuilders) { if (!builder || !callback) { continue; } if (!builder.resolved) { await builder.resolve(client2); } let event = args.update; if (event) { if (!client2._selfInputPeer) { try { await client2.getMe(true); } catch (e) { } } if (!(event instanceof network_1.UpdateConnectionState)) { } event = builder.build(event, callback, client2._selfInputPeer ? (0, Helpers_1.returnBigInt)(client2._selfInputPeer.userId) : void 0); if (event) { event._client = client2; if ("_eventName" in event) { event._setClient(client2); event.originalUpdate = args.update; event._entities = args.update._entities; } const filter2 = await builder.filter(event); if (!filter2) { continue; } try { await callback(event); } catch (e) { if (e instanceof StopPropagation) { break; } if (client2._errorHandler) { await client2._errorHandler(e); } if (client2._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(e); } } } } } } async function _updateLoop(client2) { let lastPongAt; while (!client2._destroyed) { await (0, Helpers_1.sleep)(PING_INTERVAL, true); if (client2._destroyed) break; if (client2._sender.isReconnecting || client2._isSwitchingDc) { lastPongAt = void 0; continue; } try { const ping = () => { return client2._sender.send(new tl_1.Api.PingDelayDisconnect({ pingId: (0, Helpers_1.returnBigInt)((0, Helpers_1.getRandomInt)(Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER)), disconnectDelay: PING_DISCONNECT_DELAY })); }; const pingAt = Date.now(); const lastInterval = lastPongAt ? pingAt - lastPongAt : void 0; if (!lastInterval || lastInterval < PING_INTERVAL_TO_WAKE_UP) { await attempts(() => timeout(ping, PING_TIMEOUT), PING_FAIL_ATTEMPTS, PING_FAIL_INTERVAL); } else { let wakeUpWarningTimeout = setTimeout(() => { _handleUpdate(client2, network_1.UpdateConnectionState.disconnected); wakeUpWarningTimeout = void 0; }, PING_WAKE_UP_WARNING_TIMEOUT); await timeout(ping, PING_WAKE_UP_TIMEOUT); if (wakeUpWarningTimeout) { clearTimeout(wakeUpWarningTimeout); wakeUpWarningTimeout = void 0; } _handleUpdate(client2, network_1.UpdateConnectionState.connected); } lastPongAt = Date.now(); } catch (err) { if (client2._errorHandler) { await client2._errorHandler(err); } if (client2._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(err); } lastPongAt = void 0; if (client2._sender.isReconnecting || client2._isSwitchingDc) { continue; } client2._sender.reconnect(); } if (Date.now() - (client2._lastRequest || 0) > 30 * 60 * 1e3) { try { await client2.invoke(new tl_1.Api.updates.GetState()); } catch (e) { } lastPongAt = void 0; } } await client2.disconnect(); } async function attempts(cb, times, pause) { for (let i = 0; i < times; i++) { try { return await cb(); } catch (err) { if (i === times - 1) { throw err; } await (0, Helpers_1.sleep)(pause); } } return void 0; } function timeout(cb, ms) { let isResolved = false; return Promise.race([ cb(), (0, Helpers_1.sleep)(ms).then(() => isResolved ? void 0 : Promise.reject(new Error("TIMEOUT"))) ]).finally(() => { isResolved = true; }); } } }); // node_modules/telegram/client/chats.js var require_chats = __commonJS({ "node_modules/telegram/client/chats.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2._ParticipantsIter = void 0; exports2.iterParticipants = iterParticipants; exports2.getParticipants = getParticipants; exports2.kickParticipant = kickParticipant; var Helpers_1 = require_Helpers(); var requestIter_1 = require_requestIter(); var __1 = require_telegram(); var tl_1 = require_tl(); var big_integer_1 = __importDefault2(require_BigInteger()); var inspect_1 = require_inspect(); var Utils_1 = require_Utils(); var _MAX_PARTICIPANTS_CHUNK_SIZE = 200; var _MAX_ADMIN_LOG_CHUNK_SIZE = 100; var _ChatAction = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(client2, chat, action, params = { delay: 4, autoCancel: true }) { this._client = client2; this._chat = chat; this._action = action; this._delay = params.delay; this.autoCancel = params.autoCancel; this._request = void 0; this._task = null; this._running = false; } async start() { this._request = new tl_1.Api.messages.SetTyping({ peer: this._chat, action: this._action }); this._running = true; this._update(); } async stop() { this._running = false; if (this.autoCancel) { await this._client.invoke(new tl_1.Api.messages.SetTyping({ peer: this._chat, action: new tl_1.Api.SendMessageCancelAction() })); } } async _update() { while (this._running) { if (this._request != void 0) { await this._client.invoke(this._request); } await (0, Helpers_1.sleep)(this._delay * 1e3); } } progress(current, total) { if ("progress" in this._action) { this._action.progress = 100 * Math.round(current / total); } } }; _ChatAction._str_mapping = { typing: new tl_1.Api.SendMessageTypingAction(), contact: new tl_1.Api.SendMessageChooseContactAction(), game: new tl_1.Api.SendMessageGamePlayAction(), location: new tl_1.Api.SendMessageGeoLocationAction(), "record-audio": new tl_1.Api.SendMessageRecordAudioAction(), "record-voice": new tl_1.Api.SendMessageRecordAudioAction(), //alias "record-round": new tl_1.Api.SendMessageRecordRoundAction(), "record-video": new tl_1.Api.SendMessageRecordVideoAction(), audio: new tl_1.Api.SendMessageUploadAudioAction({ progress: 1 }), voice: new tl_1.Api.SendMessageUploadAudioAction({ progress: 1 }), // alias song: new tl_1.Api.SendMessageUploadAudioAction({ progress: 1 }), // alias round: new tl_1.Api.SendMessageUploadRoundAction({ progress: 1 }), video: new tl_1.Api.SendMessageUploadVideoAction({ progress: 1 }), photo: new tl_1.Api.SendMessageUploadPhotoAction({ progress: 1 }), document: new tl_1.Api.SendMessageUploadDocumentAction({ progress: 1 }), file: new tl_1.Api.SendMessageUploadDocumentAction({ progress: 1 }), // alias cancel: new tl_1.Api.SendMessageCancelAction() }; var _ParticipantsIter = class extends requestIter_1.RequestIter { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } async _init({ entity, filter: filter2, offset, search, showTotal }) { var _a, _b; if (!offset) { offset = 0; } if (filter2 && filter2.constructor === Function) { if ([ tl_1.Api.ChannelParticipantsBanned, tl_1.Api.ChannelParticipantsKicked, tl_1.Api.ChannelParticipantsSearch, tl_1.Api.ChannelParticipantsContacts ].includes(filter2)) { filter2 = new filter2({ q: "" }); } else { filter2 = new filter2(); } } entity = await this.client.getInputEntity(entity); const ty = __1.helpers._entityType(entity); if (search && (filter2 || ty != __1.helpers._EntityType.CHANNEL)) { search = search.toLowerCase(); this.filterEntity = (entity2) => { return __1.utils.getDisplayName(entity2).toLowerCase().includes(search) || ("username" in entity2 ? entity2.username || "" : "").toLowerCase().includes(search); }; } else { this.filterEntity = (entity2) => true; } this.requests = []; if (ty == __1.helpers._EntityType.CHANNEL) { if (showTotal) { const channel = await this.client.invoke(new tl_1.Api.channels.GetFullChannel({ channel: entity })); if (!(channel.fullChat instanceof tl_1.Api.ChatFull)) { this.total = channel.fullChat.participantsCount; } } if (this.total && this.total <= 0) { return false; } this.requests.push(new tl_1.Api.channels.GetParticipants({ channel: entity, filter: filter2 || new tl_1.Api.ChannelParticipantsSearch({ q: search || "" }), offset, limit: _MAX_PARTICIPANTS_CHUNK_SIZE, hash: big_integer_1.default.zero })); } else if (ty == __1.helpers._EntityType.CHAT) { if (!("chatId" in entity)) { throw new Error("Found chat without id " + JSON.stringify(entity)); } const full = await this.client.invoke(new tl_1.Api.messages.GetFullChat({ chatId: entity.chatId })); if (full.fullChat instanceof tl_1.Api.ChatFull) { if (!(full.fullChat.participants instanceof tl_1.Api.ChatParticipantsForbidden)) { this.total = full.fullChat.participants.participants.length; } else { this.total = 0; return false; } const users = /* @__PURE__ */ new Map(); for (const user of full.users) { users.set(user.id.toString(), user); } for (const participant of full.fullChat.participants.participants) { const user = users.get(participant.userId.toString()); if (!this.filterEntity(user)) { continue; } user.participant = participant; (_a = this.buffer) === null || _a === void 0 ? void 0 : _a.push(user); } return true; } } else { this.total = 1; if (this.limit != 0) { const user = await this.client.getEntity(entity); if (this.filterEntity(user)) { user.participant = void 0; (_b = this.buffer) === null || _b === void 0 ? void 0 : _b.push(user); } } return true; } } async _loadNextChunk() { var _a, _b; if (!((_a = this.requests) === null || _a === void 0 ? void 0 : _a.length)) { return true; } this.requests[0].limit = Math.min(this.limit - this.requests[0].offset, _MAX_PARTICIPANTS_CHUNK_SIZE); const results = []; for (const request of this.requests) { results.push(await this.client.invoke(request)); } for (let i = this.requests.length - 1; i >= 0; i--) { const participants = results[i]; if (participants instanceof tl_1.Api.channels.ChannelParticipantsNotModified || !participants.users.length) { this.requests.splice(i, 1); continue; } this.requests[i].offset += participants.participants.length; const users = /* @__PURE__ */ new Map(); for (const user of participants.users) { users.set(user.id.toString(), user); } for (const participant of participants.participants) { if (!("userId" in participant)) { continue; } const user = users.get(participant.userId.toString()); if (this.filterEntity && !this.filterEntity(user)) { continue; } user.participant = participant; (_b = this.buffer) === null || _b === void 0 ? void 0 : _b.push(user); } } return void 0; } [Symbol.asyncIterator]() { return super[Symbol.asyncIterator](); } }; exports2._ParticipantsIter = _ParticipantsIter; var _AdminLogIter = class extends requestIter_1.RequestIter { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } async _init(entity, searchArgs, filterArgs) { let eventsFilter = void 0; if (filterArgs && Object.values(filterArgs).find((element) => element === true)) { eventsFilter = new tl_1.Api.ChannelAdminLogEventsFilter(Object.assign({}, filterArgs)); } this.entity = await this.client.getInputEntity(entity); const adminList = []; if (searchArgs && searchArgs.admins) { for (const admin of searchArgs.admins) { adminList.push(await this.client.getInputEntity(admin)); } } this.request = new tl_1.Api.channels.GetAdminLog({ channel: this.entity, q: (searchArgs === null || searchArgs === void 0 ? void 0 : searchArgs.search) || "", minId: searchArgs === null || searchArgs === void 0 ? void 0 : searchArgs.minId, maxId: searchArgs === null || searchArgs === void 0 ? void 0 : searchArgs.maxId, limit: 0, eventsFilter, admins: adminList || void 0 }); } async _loadNextChunk() { if (!this.request) { return true; } this.request.limit = Math.min(this.left, _MAX_ADMIN_LOG_CHUNK_SIZE); const r = await this.client.invoke(this.request); const entities2 = /* @__PURE__ */ new Map(); for (const entity of [...r.users, ...r.chats]) { entities2.set(__1.utils.getPeerId(entity), entity); } const eventIds = []; for (const e of r.events) { eventIds.push(e.id); } this.request.maxId = (0, Helpers_1.getMinBigInt)([big_integer_1.default.zero, ...eventIds]); for (const ev of r.events) { if (ev.action instanceof tl_1.Api.ChannelAdminLogEventActionEditMessage) { } } } }; function iterParticipants(client2, entity, { limit, offset, search, filter: filter2, showTotal = true }) { return new _ParticipantsIter(client2, limit !== null && limit !== void 0 ? limit : Number.MAX_SAFE_INTEGER, {}, { entity, filter: filter2, offset: offset !== null && offset !== void 0 ? offset : 0, search, showTotal }); } async function getParticipants(client2, entity, params) { const it = client2.iterParticipants(entity, params); return await it.collect(); } async function kickParticipant(client2, entity, participant) { const peer = await client2.getInputEntity(entity); const user = await client2.getInputEntity(participant); let resp; let request; const type = __1.helpers._entityType(peer); if (type === __1.helpers._EntityType.CHAT) { request = new tl_1.Api.messages.DeleteChatUser({ chatId: (0, Helpers_1.returnBigInt)((0, Utils_1.getPeerId)(entity)), userId: (0, Helpers_1.returnBigInt)((0, Utils_1.getPeerId)(participant)) }); resp = await client2.invoke(request); } else if (type === __1.helpers._EntityType.CHANNEL) { if (user instanceof tl_1.Api.InputPeerSelf) { request = new tl_1.Api.channels.LeaveChannel({ channel: peer }); resp = await client2.invoke(request); } else { request = new tl_1.Api.channels.EditBanned({ channel: peer, participant: user, bannedRights: new tl_1.Api.ChatBannedRights({ untilDate: 0, viewMessages: true }) }); resp = await client2.invoke(request); await (0, Helpers_1.sleep)(500); await client2.invoke(new tl_1.Api.channels.EditBanned({ channel: peer, participant: user, bannedRights: new tl_1.Api.ChatBannedRights({ untilDate: 0 }) })); } } else { throw new Error("You must pass either a channel or a chat"); } return client2._getResponseMessage(request, resp, entity); } } }); // node_modules/telegram/tl/custom/draft.js var require_draft = __commonJS({ "node_modules/telegram/tl/custom/draft.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Draft = void 0; var Utils_1 = require_Utils(); var api_1 = require_api(); var Helpers_1 = require_Helpers(); var inspect_1 = require_inspect(); var Draft = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(client2, entity, draft) { this._client = client2; this._peer = (0, Utils_1.getPeer)(entity); this._entity = entity; this._inputEntity = entity ? (0, Utils_1.getInputPeer)(entity) : void 0; if (!draft || !(draft instanceof api_1.Api.DraftMessage)) { draft = new api_1.Api.DraftMessage({ message: "", date: -1 }); } if (!(draft instanceof api_1.Api.DraftMessageEmpty)) { this.linkPreview = !draft.noWebpage; this._text = client2.parseMode ? client2.parseMode.unparse(draft.message, draft.entities || []) : draft.message; this._rawText = draft.message; this.date = draft.date; const replyTo = draft.replyTo; if (replyTo != void 0) { if ("replyToMsgId" in replyTo) { this.replyToMsgId = replyTo.replyToMsgId; } } } } get entity() { return this._entity; } get inputEntity() { if (!this._inputEntity) { this._inputEntity = this._client._entityCache.get(this._peer); } return this._inputEntity; } }; exports2.Draft = Draft; } }); // node_modules/telegram/tl/custom/dialog.js var require_dialog = __commonJS({ "node_modules/telegram/tl/custom/dialog.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.Dialog = void 0; var api_1 = require_api(); var Utils_1 = require_Utils(); var draft_1 = require_draft(); var Helpers_1 = require_Helpers(); var inspect_1 = require_inspect(); var Dialog = class { [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } constructor(client2, dialog, entities2, message) { this._client = client2; this.dialog = dialog; this.pinned = !!dialog.pinned; this.folderId = dialog.folderId; this.archived = dialog.folderId != void 0; this.message = message; this.date = this.message.date; this.entity = entities2.get((0, Utils_1.getPeerId)(dialog.peer)); this.inputEntity = (0, Utils_1.getInputPeer)(this.entity); if (this.entity) { this.id = (0, Helpers_1.returnBigInt)((0, Utils_1.getPeerId)(this.entity)); this.name = this.title = (0, Utils_1.getDisplayName)(this.entity); } this.unreadCount = dialog.unreadCount; this.unreadMentionsCount = dialog.unreadMentionsCount; if (!this.entity) { throw new Error("Entity not found for dialog"); } this.draft = new draft_1.Draft(client2, this.entity, this.dialog.draft); this.isUser = this.entity instanceof api_1.Api.User; this.isGroup = !!(this.entity instanceof api_1.Api.Chat || this.entity instanceof api_1.Api.ChatForbidden || this.entity instanceof api_1.Api.Channel && this.entity.megagroup); this.isChannel = this.entity instanceof api_1.Api.Channel; } }; exports2.Dialog = Dialog; } }); // node_modules/telegram/client/dialogs.js var require_dialogs = __commonJS({ "node_modules/telegram/client/dialogs.js"(exports2) { "use strict"; init_define_import_meta_env(); var __importDefault2 = exports2 && exports2.__importDefault || function(mod) { return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2._DialogsIter = void 0; exports2.iterDialogs = iterDialogs; exports2.getDialogs = getDialogs; var tl_1 = require_tl(); var requestIter_1 = require_requestIter(); var index_1 = require_telegram(); var dialog_1 = require_dialog(); var big_integer_1 = __importDefault2(require_BigInteger()); var Logger_1 = require_Logger(); var _MAX_CHUNK_SIZE = 100; function _dialogMessageKey(peer, messageId) { return "" + [ peer instanceof tl_1.Api.PeerChannel ? peer.channelId : void 0, messageId ]; } var _DialogsIter = class extends requestIter_1.RequestIter { async _init({ offsetDate, offsetId, offsetPeer, ignorePinned, ignoreMigrated, folder }) { this.request = new tl_1.Api.messages.GetDialogs({ offsetDate, offsetId, offsetPeer, limit: 1, hash: big_integer_1.default.zero, excludePinned: ignorePinned, folderId: folder }); if (this.limit <= 0) { const dialogs = await this.client.invoke(this.request); if ("count" in dialogs) { this.total = dialogs.count; } else { this.total = dialogs.dialogs.length; } return true; } this.seen = /* @__PURE__ */ new Set(); this.offsetDate = offsetDate; this.ignoreMigrated = ignoreMigrated; } [Symbol.asyncIterator]() { return super[Symbol.asyncIterator](); } async _loadNextChunk() { var _a; if (!this.request || !this.seen || !this.buffer) { return; } this.request.limit = Math.min(this.left, _MAX_CHUNK_SIZE); const r = await this.client.invoke(this.request); if (r instanceof tl_1.Api.messages.DialogsNotModified) { return; } if ("count" in r) { this.total = r.count; } else { this.total = r.dialogs.length; } const entities2 = /* @__PURE__ */ new Map(); const messages = /* @__PURE__ */ new Map(); for (const entity of [...r.users, ...r.chats]) { if (entity instanceof tl_1.Api.UserEmpty || entity instanceof tl_1.Api.ChatEmpty) { continue; } entities2.set(index_1.utils.getPeerId(entity), entity); } for (const m of r.messages) { let message = m; try { if (message && "_finishInit" in message) { message._finishInit(this.client, entities2, void 0); } } catch (e) { console.log("msg", message); this.client._log.error("Got error while trying to finish init message with id " + m.id); if (this.client._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(e); } if (this.client._errorHandler) { await this.client._errorHandler(e); } } messages.set(_dialogMessageKey(message.peerId, message.id), message); } for (const d of r.dialogs) { if (d instanceof tl_1.Api.DialogFolder) { continue; } const message = messages.get(_dialogMessageKey(d.peer, d.topMessage)); if (this.offsetDate != void 0) { const date = message === null || message === void 0 ? void 0 : message.date; if (date == void 0 || date > this.offsetDate) { continue; } } const peerId = index_1.utils.getPeerId(d.peer); if (!this.seen.has(peerId)) { this.seen.add(peerId); if (!entities2.has(peerId)) { continue; } const cd = new dialog_1.Dialog(this.client, d, entities2, message); if (!this.ignoreMigrated || cd.entity != void 0 && "migratedTo" in cd.entity) { this.buffer.push(cd); } } } if (r.dialogs.length < this.request.limit || !(r instanceof tl_1.Api.messages.DialogsSlice)) { return true; } let lastMessage; for (let dialog of r.dialogs.reverse()) { lastMessage = messages.get(_dialogMessageKey(dialog.peer, dialog.topMessage)); if (lastMessage) { break; } } this.request.excludePinned = true; this.request.offsetId = lastMessage ? lastMessage.id : 0; this.request.offsetDate = lastMessage ? lastMessage.date : 0; this.request.offsetPeer = (_a = this.buffer[this.buffer.length - 1]) === null || _a === void 0 ? void 0 : _a.inputEntity; } }; exports2._DialogsIter = _DialogsIter; function iterDialogs(client2, { limit = void 0, offsetDate = void 0, offsetId = 0, offsetPeer = new tl_1.Api.InputPeerEmpty(), ignorePinned = false, ignoreMigrated = false, folder = void 0, archived = void 0 }) { if (archived != void 0) { folder = archived ? 1 : 0; } return new _DialogsIter(client2, limit, {}, { offsetDate, offsetId, offsetPeer, ignorePinned, ignoreMigrated, folder }); } async function getDialogs(client2, params) { return await client2.iterDialogs(params).collect(); } } }); // node_modules/telegram/client/2fa.js var require_fa = __commonJS({ "node_modules/telegram/client/2fa.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.updateTwoFaSettings = updateTwoFaSettings; var Helpers_1 = require_Helpers(); var Password_1 = require_Password(); var tl_1 = require_tl(); var index_1 = require_telegram(); async function updateTwoFaSettings(client2, { isCheckPassword, currentPassword, newPassword, hint = "", email, emailCodeCallback, onEmailCodeError }) { if (!newPassword && !currentPassword) { throw new Error("Neither `currentPassword` nor `newPassword` is present"); } if (email && !(emailCodeCallback && onEmailCodeError)) { throw new Error("`email` present without `emailCodeCallback` and `onEmailCodeError`"); } const pwd = await client2.invoke(new tl_1.Api.account.GetPassword()); if (!(pwd.newAlgo instanceof tl_1.Api.PasswordKdfAlgoUnknown)) { pwd.newAlgo.salt1 = Buffer.concat([ pwd.newAlgo.salt1, (0, Helpers_1.generateRandomBytes)(32) ]); } if (!pwd.hasPassword && currentPassword) { currentPassword = void 0; } const password = currentPassword ? await (0, Password_1.computeCheck)(pwd, currentPassword) : new tl_1.Api.InputCheckPasswordEmpty(); if (isCheckPassword) { await client2.invoke(new tl_1.Api.auth.CheckPassword({ password })); return; } if (pwd.newAlgo instanceof tl_1.Api.PasswordKdfAlgoUnknown) { throw new Error("Unknown password encryption method"); } try { await client2.invoke(new tl_1.Api.account.UpdatePasswordSettings({ password, newSettings: new tl_1.Api.account.PasswordInputSettings({ newAlgo: pwd.newAlgo, newPasswordHash: newPassword ? await (0, Password_1.computeDigest)(pwd.newAlgo, newPassword) : Buffer.alloc(0), hint, email, // not explained what it does and it seems to always be set to empty in tdesktop newSecureSettings: void 0 }) })); } catch (e) { if (e instanceof index_1.errors.EmailUnconfirmedError) { while (true) { try { const code = await emailCodeCallback(e.codeLength); if (!code) { throw new Error("Code is empty"); } await client2.invoke(new tl_1.Api.account.ConfirmPasswordEmail({ code })); break; } catch (err) { onEmailCodeError(err); } } } else { throw e; } } } } }); // node_modules/telegram/events/NewMessage.js var require_NewMessage = __commonJS({ "node_modules/telegram/events/NewMessage.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.NewMessageEvent = exports2.NewMessage = void 0; var common_1 = require_common3(); var tl_1 = require_tl(); var Logger_1 = require_Logger(); var NewMessage = class extends common_1.EventBuilder { constructor(newMessageParams = {}) { let { chats, func, incoming, outgoing, fromUsers, forwards, pattern, blacklistChats = false } = newMessageParams; if (incoming && outgoing) { incoming = outgoing = void 0; } else if (incoming != void 0 && outgoing == void 0) { outgoing = !incoming; } else if (outgoing != void 0 && incoming == void 0) { incoming = !outgoing; } else if (outgoing == false && incoming == false) { throw new Error("Don't create an event handler if you don't want neither incoming nor outgoing!"); } super({ chats, blacklistChats, func }); this.incoming = incoming; this.outgoing = outgoing; this.fromUsers = fromUsers; this.forwards = forwards; this.pattern = pattern; this._noCheck = [ incoming, outgoing, chats, pattern, fromUsers, forwards, func ].every((v) => v == void 0); } async _resolve(client2) { await super._resolve(client2); this.fromUsers = await (0, common_1._intoIdSet)(client2, this.fromUsers); } build(update, callback, selfId) { if (update instanceof tl_1.Api.UpdateNewMessage || update instanceof tl_1.Api.UpdateNewChannelMessage) { if (!(update.message instanceof tl_1.Api.Message)) { return void 0; } const event = new NewMessageEvent(update.message, update); this.addAttributes(event); return event; } else if (update instanceof tl_1.Api.UpdateShortMessage) { return new NewMessageEvent(new tl_1.Api.Message({ out: update.out, mentioned: update.mentioned, mediaUnread: update.mediaUnread, silent: update.silent, id: update.id, peerId: new tl_1.Api.PeerUser({ userId: update.userId }), fromId: new tl_1.Api.PeerUser({ userId: update.out ? selfId : update.userId }), message: update.message, date: update.date, fwdFrom: update.fwdFrom, viaBotId: update.viaBotId, replyTo: update.replyTo, entities: update.entities, ttlPeriod: update.ttlPeriod }), update); } else if (update instanceof tl_1.Api.UpdateShortChatMessage) { return new NewMessageEvent(new tl_1.Api.Message({ out: update.out, mentioned: update.mentioned, mediaUnread: update.mediaUnread, silent: update.silent, id: update.id, peerId: new tl_1.Api.PeerChat({ chatId: update.chatId }), fromId: new tl_1.Api.PeerUser({ userId: update.out ? selfId : update.fromId }), message: update.message, date: update.date, fwdFrom: update.fwdFrom, viaBotId: update.viaBotId, replyTo: update.replyTo, entities: update.entities, ttlPeriod: update.ttlPeriod }), update); } } filter(event) { var _a; if (this._noCheck) { return event; } if (this.incoming && event.message.out) { return; } if (this.outgoing && !event.message.out) { return; } if (this.forwards != void 0) { if (this.forwards != !!event.message.fwdFrom) { return; } } if (this.fromUsers != void 0) { if (!event.message.senderId || !this.fromUsers.includes(event.message.senderId.toString())) { return; } } if (this.pattern) { const match = (_a = event.message.message) === null || _a === void 0 ? void 0 : _a.match(this.pattern); if (!match) { return; } event.message.patternMatch = match; } return super.filter(event); } addAttributes(update) { } }; exports2.NewMessage = NewMessage; var NewMessageEvent = class extends common_1.EventCommon { constructor(message, originalUpdate) { super({ msgId: message.id, chatPeer: message.peerId, broadcast: message.post }); this.originalUpdate = originalUpdate; this.message = message; } _setClient(client2) { super._setClient(client2); const m = this.message; try { m._finishInit(client2, this.originalUpdate._entities || /* @__PURE__ */ new Map(), void 0); } catch (e) { client2._log.error("Got error while trying to finish init message with id " + m.id); if (client2._errorHandler) { client2._errorHandler(e); } if (client2._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(e); } } } }; exports2.NewMessageEvent = NewMessageEvent; } }); // node_modules/telegram/events/index.js var require_events = __commonJS({ "node_modules/telegram/events/index.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.NewMessageEvent = exports2.NewMessage = exports2.Raw = void 0; var Raw_1 = require_Raw(); Object.defineProperty(exports2, "Raw", { enumerable: true, get: function() { return Raw_1.Raw; } }); var NewMessage_1 = require_NewMessage(); Object.defineProperty(exports2, "NewMessage", { enumerable: true, get: function() { return NewMessage_1.NewMessage; } }); Object.defineProperty(exports2, "NewMessageEvent", { enumerable: true, get: function() { return NewMessage_1.NewMessageEvent; } }); } }); // node_modules/telegram/client/TelegramClient.js var require_TelegramClient = __commonJS({ "node_modules/telegram/client/TelegramClient.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.TelegramClient = void 0; var telegramBaseClient_1 = require_telegramBaseClient(); var authMethods = __importStar2(require_auth()); var botMethods = __importStar2(require_bots()); var buttonsMethods = __importStar2(require_buttons()); var downloadMethods = __importStar2(require_downloads()); var parseMethods = __importStar2(require_messageParse()); var messageMethods = __importStar2(require_messages2()); var updateMethods = __importStar2(require_updates()); var uploadMethods = __importStar2(require_uploads()); var userMethods = __importStar2(require_users()); var chatMethods = __importStar2(require_chats()); var dialogMethods = __importStar2(require_dialogs()); var twoFA = __importStar2(require_fa()); var tl_1 = require_tl(); var Utils_1 = require_Utils(); var network_1 = require_network(); var AllTLObjects_1 = require_AllTLObjects(); var Helpers_1 = require_Helpers(); var updates_1 = require_updates(); var Logger_1 = require_Logger(); var inspect_1 = require_inspect(); var platform_1 = require_platform(); var TelegramClient2 = class extends telegramBaseClient_1.TelegramBaseClient { /** * @param session - a session to be used to save the connection and auth key to. This can be a custom session that inherits MemorySession. * @param apiId - The API ID you obtained from https://my.telegram.org. * @param apiHash - The API hash you obtained from https://my.telegram.org. * @param clientParams - see {@link TelegramClientParams} */ constructor(session2, apiId, apiHash, clientParams) { super(session2, apiId, apiHash, clientParams); } // region auth /** * Used to handle all aspects of connecting to telegram.<br/> * This method will connect to the telegram servers and check if the user is already logged in.<br/> * in the case of a new connection this will sign in if the phone already exists or sign up otherwise<br/> * By using this method you are **agreeing to Telegram's Terms of Service** https://core.telegram.org/api/terms.<br/> * this method also calls {@link getMe} to tell telegram that we want to receive updates.<br/> * @param authParams - see UserAuthParams and BotAuthParams * @return nothing * @example * ```ts * // this example assumes you've installed and imported the input package. npm i input. * // This package uses CLI to receive input from the user. you can use your own callback function. * import { TelegramClient } from "telegram"; * import { StringSession } from "telegram/sessions"; * * const client = new TelegramClient(new StringSession(''), apiId, apiHash, {}); * // logging in as a bot account * await client.start(botToken="123456:abcdfgh123456789); * // logging in as a user account * await client.start({ * phoneNumber: async () => await input.text("number ?"), * password: async () => await input.text("password?"), * phoneCode: async () => await input.text("Code ?"), * onError: (err) => console.log(err), * }); * >Number ? +1234567897 * >Code ? 12345 * >password ? 111111 * Logged in as user... * * You can now use the client instance to call other api requests. */ start(authParams) { return authMethods.start(this, authParams); } /** * Checks whether the current client is authorized or not. (logged in as a user) * @example * ```ts * await client.connect(); * if (await client.checkAuthorization()){ * console.log("I am logged in!"); * }else{ * console.log("I am connected to telegram servers but not logged in with any account/bot"); * } * ``` * @return boolean (true of authorized else false) */ checkAuthorization() { return authMethods.checkAuthorization(this); } /** * Logs in as a user. Should only be used when not already logged in.<br/> * This method will send a code when needed.<br/> * This will also sign up if needed. * @example * ```ts * await client.connect(); * // we should only use this when we are not already authorized. * // This function is very similar to `client.start` * // The minor difference that start checks if already authorized and supports bots as well. * if (!await client.checkAuthorization()){ * const phoneNumber = "+123456789"; * await client.signIn({ * apiId:132456, * apiHash:"132456", * },{ * phoneNumber: async () => await input.text("number ?"), * password: async () => await input.text("password?"), * phoneCode: async () => await input.text("Code ?"), * onError: (err) => console.log(err), * }) * } * ``` * @param apiCredentials - credentials to be used. * @param authParams - user auth params. */ signInUser(apiCredentials, authParams) { return authMethods.signInUser(this, apiCredentials, authParams); } /** * logs the user using a QR code to be scanned.<br/> * this function generates the QR code that needs to be scanned by mobile. * @example * '''ts * await client.connect(); * const user = await client.signInUserWithQrCode({ apiId, apiHash }, * { * onError: async function(p1: Error) { * console.log("error", p1); * // true = stop the authentication processes * return true; * }, * qrCode: async (code) => { * console.log("Convert the next string to a QR code and scan it"); * console.log( * `tg://login?token=${code.token.toString("base64url")}` * ); * }, * password: async (hint) => { * // password if needed * return "1111"; * } * } * ); * console.log("user is", user); * * ''' * @param apiCredentials - credentials to be used. * @param authParams - user auth params. */ signInUserWithQrCode(apiCredentials, authParams) { return authMethods.signInUserWithQrCode(this, apiCredentials, authParams); } /** * Sends a telegram authentication code to the phone number. * @example * ```ts * await client.connect(); * const {phoneCodeHash,isCodeViaApp} = await client.sendCode({ * apiId:1234, * apiHash:"123456789abcfghj", * },"+123456798"}); * ``` * @param apiCredentials - credentials to be used. * @param phoneNumber - the phone number to send the code to * @param forceSMS - whether to send it as an SMS or a normal in app message * @return the phone code hash and whether it was sent via app */ sendCode(apiCredentials, phoneNumber, forceSMS = false) { return authMethods.sendCode(this, apiCredentials, phoneNumber, forceSMS); } /** * Uses the 2FA password to sign in the account.<br/> * This function should be used after the user has signed in with the code they received. * @param apiCredentials - credentials to be used. * @param authParams - user auth params. * @returns the logged in user. */ signInWithPassword(apiCredentials, authParams) { return authMethods.signInWithPassword(this, apiCredentials, authParams); } /** * Used to sign in as a bot. * @example * ```ts * await client.connect(); * const bot = await client.signInBot({ * apiId:1234, * apiHash:"12345", * },{ * botToken:"123456:abcdfghae4fg654", * }); * // we are now logged in as a bot * console.log("Logged in",bot); * ``` * @param apiCredentials - credentials to be used. * @param authParams - user auth params. * @return instance User of the logged in bot. */ signInBot(apiCredentials, authParams) { return authMethods.signInBot(this, apiCredentials, authParams); } /** * Changes the 2FA settings of the logged in user. Note that this method may be *incredibly* slow depending on the prime numbers that must be used during the process to make sure that everything is safe. Has no effect if both current and new password are omitted. * @param client: The telegram client instance * @param isCheckPassword: Must be ``true`` if you want to check the current password * @param currentPassword: The current password, to authorize changing to ``new_password``. Must be set if changing existing 2FA settings. Must **not** be set if 2FA is currently disabled. Passing this by itself will remove 2FA (if correct). * @param newPassword: The password to set as 2FA. If 2FA was already enabled, ``currentPassword`` **must** be set. Leaving this blank or `undefined` will remove the password. * @param hint: Hint to be displayed by Telegram when it asks for 2FA. Must be set when changing or creating a new password. Has no effect if ``newPassword`` is not set. * @param email: Recovery and verification email. If present, you must also set `emailCodeCallback`, else it raises an Error. * @param emailCodeCallback: If an email is provided, a callback that returns the code sent to it must also be set. This callback may be asynchronous. It should return a string with the code. The length of the code will be passed to the callback as an input parameter. * @param onEmailCodeError: Called when an error happens while sending an email. If the callback returns an invalid code, it will raise an rpc error with the message ``CODE_INVALID`` * @returns Promise<void> * @throws this method can throw: "PASSWORD_HASH_INVALID" if you entered a wrong password (or set it to undefined). "EMAIL_INVALID" if the entered email is wrong "EMAIL_HASH_EXPIRED" if the user took too long to verify their email */ async updateTwoFaSettings({ isCheckPassword, currentPassword, newPassword, hint = "", email, emailCodeCallback, onEmailCodeError }) { return twoFA.updateTwoFaSettings(this, { isCheckPassword, currentPassword, newPassword, hint, email, emailCodeCallback, onEmailCodeError }); } //endregion auth //region bot /** * Makes an inline query to the specified bot and gets the result list.<br/> * This is equivalent to writing `@pic something` in clients * @param bot - the bot entity to which the inline query should be made * @param query - the query string that should be made for that bot (up to 512 characters). can be empty * @param entity - The entity where the inline query is being made from.<br/> * Certain bots use this to display different results depending on where it's used, such as private chats, groups or channels.<br/> * If specified, it will also be the default entity where the message will be sent after clicked.<br/> * Otherwise, the “empty peer” will be used, which some bots may not handle correctly. * @param offset - String offset of the results to be returned. can be empty * @param geoPoint - The geo point location information to send to the bot for localised results. Available under some bots. * @return a list of InlineResults * @example * ```ts * // Makes the query to @pic * const results = await client.inlineQuery("pic", "something"); * // clicks on the first result * await results[0].click(); * ``` */ inlineQuery(bot, query, entity, offset, geoPoint) { return botMethods.inlineQuery(this, bot, query, entity, offset, geoPoint); } //endregion //region buttons /** * Builds a ReplyInlineMarkup or ReplyKeyboardMarkup for the given buttons.<br/><br/> * Does nothing if either no buttons are provided or the provided argument is already a reply markup.<br/><br/> * this function is called internally when passing an array of buttons. * @param buttons - The button, array of buttons, array of array of buttons or markup to convert into a markup. * @param inlineOnly - Whether the buttons **must** be inline buttons only or not. * @example * ```ts * import {Button} from "telegram/tl/custom/button"; * // PS this function is not async * const markup = client.buildReplyMarkup(Button.inline("Hello!")); * * await client.sendMessage(chat, { * message: "click me!", * buttons: markup, * } * * // The following example can also be used in a simpler way like so * * await client.sendMessage(chat, { * message: "click me!", * buttons: [Button.inline("Hello!")], * } * ``` */ buildReplyMarkup(buttons, inlineOnly = false) { return buttonsMethods.buildReplyMarkup(buttons, inlineOnly); } //endregion //region download /** * Low-level method to download files from their input location. * downloadMedia should generally be used over this. * @param inputLocation - The file location from which the file will be downloaded. See getInputLocation source for a complete list of supported types. * @param fileParams - {@link DownloadFileParams} * @return a Buffer downloaded from the inputFile. * @example * ```ts * const photo = message.photo; * const buffer = await client.downloadFile( * new Api.InputPhotoFileLocation({ * id: photo.id, * accessHash: photo.accessHash, * fileReference: photo.fileReference, * thumbSize: size.type * }), * { * dcId: photo.dcId, * fileSize: "m", * } * ); * ``` */ downloadFile(inputLocation, fileParams = {}) { return downloadMethods.downloadFileV2(this, inputLocation, fileParams); } /** * Iterates over a file download, yielding chunks of the file. * This method can be used to stream files in a more convenient way, since it offers more control (pausing, resuming, etc.) * @param iterFileParams - {@link IterDownloadFunction} * @return a Buffer downloaded from the inputFile. * @example * ```ts * const photo = message.photo; * for await (const chunk of client.iterDownload({ * file: new Api.InputPhotoFileLocation({ * id: photo.id, * accessHash: photo.accessHash, * fileReference: photo.fileReference, * thumbSize: size.type * }), * offset: start, * limit: end, * requestSize:2048*1024 * )){ * console.log("Downloaded chunk of size",chunk.length); * }; * ``` */ iterDownload(iterFileParams) { return downloadMethods.iterDownload(this, iterFileParams); } //region download /** * Downloads the profile photo from the given user,chat or channel.<br/> * This method will return an empty buffer in case of no profile photo. * @param entity - where to download the photo from. * @param downloadProfilePhotoParams - {@link DownloadProfilePhotoParams} * @return buffer containing the profile photo. can be empty in case of no profile photo. * @example * ```ts * // Download your own profile photo * const buffer = await client.downloadProfilePhoto('me') * console.log("Downloaded image is",buffer); * // if you want to save it as a file you can use the fs module on node for that. * import { promises as fs } from 'fs'; * await fs.writeFile("picture.jpg",buffer); * ``` */ downloadProfilePhoto(entity, downloadProfilePhotoParams = { isBig: false }) { return downloadMethods.downloadProfilePhoto(this, entity, downloadProfilePhotoParams); } /** * Downloads the given media from a message or a media object.<br/> * this will return an empty Buffer in case of wrong or empty media. * @param messageOrMedia - instance of a message or a media. * @param downloadParams {@link DownloadMediaInterface} * @return a buffer containing the downloaded data if outputFile is undefined else nothing. * @example ```ts * const buffer = await client.downloadMedia(message, {}) * // to save it to a file later on using fs. * import { promises as fs } from 'fs'; * await fs.writeFile("file",buffer); * // to use a progress callback you can pass it like so. * const buffer = await client.downloadMedia(message, { * progressCallback : console.log * }) * ``` */ downloadMedia(messageOrMedia, downloadParams) { return downloadMethods.downloadMedia(this, messageOrMedia, downloadParams === null || downloadParams === void 0 ? void 0 : downloadParams.outputFile, downloadParams === null || downloadParams === void 0 ? void 0 : downloadParams.thumb, downloadParams === null || downloadParams === void 0 ? void 0 : downloadParams.progressCallback); } //endregion //region message parse /** * This property is the default parse mode used when sending messages. Defaults to {@link MarkdownParser}.<br/> * It will always be either undefined or an object with parse and unparse methods.<br/> * When setting a different value it should be one of:<br/> *<br/> * - Object with parse and unparse methods.<br/> * - A str indicating the parse_mode. For Markdown 'md' or 'markdown' may be used. For HTML, 'html' may be used.<br/> * The parse method should be a function accepting a single parameter, the text to parse, and returning a tuple consisting of (parsed message str, [MessageEntity instances]).<br/> * <br/> * The unparse method should be the inverse of parse such that text == unparse(parse(text)).<br/> * <br/> * See {@link Api.TypeMessageEntity} for allowed message entities. * @example * ```ts * // gets the current parse mode. * console.log("parse mode is :", client.parseMode) * ``` */ get parseMode() { return this._parseMode; } /** Setter for parseMode. * {@link parseMode} * @param mode can be md,markdown for Markdown or html for html. can also pass a custom mode. * pass undefined for no parsing. * @example * // sets the mode to HTML * client.setParseMode("html"); * await client.sendMessage("me",{message:"<u>This is an underline text</u>"}); * // disable formatting * client.setParseMode(undefined); * await client.sendMessage("me",{message:"<u> this will be sent as it is</u> ** with no formatting **}); */ setParseMode(mode) { if (mode) { this._parseMode = (0, Utils_1.sanitizeParseMode)(mode); } else { this._parseMode = void 0; } } //endregion // region messages /** * Iterates over the messages for a given chat. * <br/> * The default order is from newest to oldest but can be changed with the reverse param.<br/> * If either `search`, `filter` or `fromUser` are provided this will use {@link Api.messages.Search} instead of {@link Api.messages.GetHistory}. * @remarks * Telegram limits GetHistory requests every 10 requests (1 000 messages) therefore a sleep of 1 seconds will be the default for this limit. * @param entity - The entity from whom to retrieve the message history.<br/> * It may be undefined to perform a global search, or to get messages by their ID from no particular chat<br/> * **Note** that some of the offsets will not work if this is the case.<br/> * **Note** that if you want to perform a global search, you must set a non-empty search string, a filter. or fromUser. * @param iterParams - {@link IterMessagesParams} * @yield Instances of custom {@link Message} * @example * ```ts * // From most-recent to oldest * for await (const message of client.iterMessages(chat,{}){ * console.log(message.id, message.text) * } * * // From oldest to most-recent * for await (const message of client.iterMessages(chat,{reverse:true}){ * console.log(message.id, message.text) * } * * // Filter by sender * for await (const message of client.iterMessages(chat,{fromUser:"me"}){ * console.log(message.id, message.text) * } * * // Server-side search with fuzzy text * for await (const message of client.iterMessages(chat,{search:"hello"}){ * console.log(message.id, message.text) * } * * // Filter by message type: * import { Api } from "telegram"; * for await (const message of client.iterMessages(chat,{filter: Api.InputMessagesFilterPhotos}){ * console.log(message.id, message.photo) * } * * // Getting comments from a post in a channel: * * for await (const message of client.iterMessages(chat,{replyTo: 123}){ * console.log(message.chat.title,, message.text) * } * ``` */ iterMessages(entity, iterParams = {}) { return messageMethods.iterMessages(this, entity, iterParams); } /** * Same as iterMessages() but returns a TotalList instead.<br/> * if the `limit` is not set, it will be 1 by default unless both `minId` **and** `maxId` are set. in which case the entire range will be returned.<br/> * @param entity - The entity from whom to retrieve the message history. see {@link iterMessages}.<br/> * @param getMessagesParams - see {@link IterMessagesParams}. * @return {@link TotalList} of messages. * @example * ```ts * // The totalList has a .total attribute which will show the complete number of messages even if none are fetched. * // Get 0 photos and print the total to show how many photos there are * import { Api } from "telegram"; * const photos = await client.getMessages(chat, {limit: 0, filter:Api.InputMessagesFilterPhotos}) * console.log(photos.total) * * // Get all the photos * const photos = await client.getMessages(chat, {limit: undefined, filter:Api.InputMessagesFilterPhotos}) * // Get messages by ID: * const messages = await client.getMessages(chat, {ids:1337}) * const message_1337 = messages[0]; * ``` */ getMessages(entity, getMessagesParams = {}) { return messageMethods.getMessages(this, entity, getMessagesParams); } /** * Sends a message to the specified user, chat or channel.<br/> * The default parse mode is the same as the official applications (a custom flavour of markdown). **bold**, `code` or __italic__ are available.<br/> * In addition you can send [links](https://example.com) and [mentions](@username) (or using IDs like in the Bot API: [mention](tg://user?id=123456789)) and pre blocks with three backticks.<br/> * <br/> * Sending a /start command with a parameter (like ?start=data) is also done through this method. Simply send '/start data' to the bot.<br/> * <br/> * See also Message.respond() and Message.reply(). * * @param entity - Who to sent the message to. * @param sendMessageParams - see {@link SendMessageParams} * @return * The sent custom Message. * @example * ```ts * // Markdown is the default. * await client.sendMessage("me",{message:"Hello **world!**}); * * // Defaults to another parse mode. * client.setParseMode("HTML"); * * await client.sendMessage('me', {message:'Some <b>bold</b> and <i>italic</i> text'}) * await client.sendMessage('me', {message:'An <a href="https://example.com">URL</a>'}) * await client.sendMessage('me', {message:'<a href="tg://user?id=me">Mentions</a>'}) * * // Explicit parse mode. * // No parse mode by default * client.setParseMode(undefined); * //...but here I want markdown * await client.sendMessage('me', {message:'Hello, **world**!', {parseMode:"md"}}) * * // ...and here I need HTML * await client.sendMessage('me', {message:'Hello, <i>world</i>!', {parseMode='html'}}) * * * // Scheduling a message to be sent after 5 minutes * * await client.sendMessage(chat, {message:'Hi, future!', schedule:(60 * 5) + (Date.now() / 1000)}) * * ``` */ sendMessage(entity, sendMessageParams = {}) { return messageMethods.sendMessage(this, entity, sendMessageParams); } /** * Forwards the given messages to the specified entity.<br/> *<br/> * If you want to "forward" a message without the forward header * (the "forwarded from" text), you should use `sendMessage` with * the original message instead. This will send a copy of it. *<br/> * See also {@link Message.forwardTo}`. * @param entity - To which entity the message(s) will be forwarded. * @param forwardMessagesParams - see {@link ForwardMessagesParams} * @return The list of forwarded Message, Note.<br/> * if some messages failed to be forwarded the returned list will have them as undefined. * @example ```ts * // a single one * await client.forwardMessages(chat, {messages: message}); * // or * await client.forwardMessages(chat, {messages:messageId,fromPeer:fromChat}); * // or * await message.forwardTo(chat) * * // multiple * await client.forwardMessages(chat, {messages:messages}); * // or * await client.forwardMessages(chat, {messages:messageIds,fromPeer:fromChat}); * * // Forwarding as a copy * await client.sendMessage(chat, {message:message}); * ``` */ forwardMessages(entity, forwardMessagesParams) { return messageMethods.forwardMessages(this, entity, forwardMessagesParams); } /** * Used to edit a message by changing it's text or media * message refers to the message to be edited not what to edit * text refers to the new text * See also Message.edit()<br/> * Notes: It is not possible to edit the media of a message that doesn't contain media. * @param entity - From which chat to edit the message.<br/> * This can also be the message to be edited, and the entity will be inferred from it, so the next parameter will be assumed to be the message text.<br/> * You may also pass a InputBotInlineMessageID, which is the only way to edit messages that were sent after the user selects an inline query result. Not supported yet! * @param editMessageParams - see {@link EditMessageParams}. * @return The edited Message. * @throws * `MESSAGE_AUTHOR_REQUIRED` if you're not the author of the message but tried editing it anyway. * `MESSAGE_NOT_MODIFIED` if the contents of the message were not modified at all. * `MESSAGE_ID_INVALID` if the ID of the message is invalid (the ID itself may be correct, but the message with that ID cannot be edited).<br/> * For example, when trying to edit messages with a reply markup (or clear markup) this error will be raised. * @example * ```ts * const message = await client.sendMessage(chat,{message:"Hi!"}); * * await client.editMessage(chat,{message:message,text:"Hello!"} * // or * await client.editMessage(chat,{message:message.id,text:"Hello!"} * ``` */ editMessage(entity, editMessageParams) { return messageMethods.editMessage(this, entity, editMessageParams); } /** * Deletes the given messages, optionally "for everyone". * * See also {@link Message.delete}`. * * @remarks This method does **not** validate that the message IDs belong to the chat that you passed! It's possible for the method to delete messages from different private chats and small group chats at once, so make sure to pass the right IDs. * @param entity - From who the message will be deleted. This can actually be `undefined` for normal chats, but **must** be present for channels and megagroups. * @param messageIds - The IDs (or ID) or messages to be deleted. * @param revoke - Whether the message should be deleted for everyone or not. * By default it has the opposite behaviour of official clients, * and it will delete the message for everyone. * Disabling this has no effect on channels or megagroups, * since it will unconditionally delete the message for everyone. * @return * A list of {@link AffectedMessages}, each item being the result for the delete calls of the messages in chunks of 100 each. * @example * ```ts * await client.deleteMessages(chat, messages); * * await client.deleteMessages(chat, messages, {revoke:false}); * ``` */ deleteMessages(entity, messageIds, { revoke = true }) { return messageMethods.deleteMessages(this, entity, messageIds, { revoke }); } pinMessage(entity, message, pinMessageParams) { return messageMethods.pinMessage(this, entity, message, pinMessageParams); } unpinMessage(entity, message, unpinMessageParams) { return messageMethods.unpinMessage(this, entity, message, unpinMessageParams); } /** * Marks messages as read and optionally clears mentions. <br/> * This effectively marks a message as read (or more than one) in the given conversation. <br /> * If a message or maximum ID is provided, all the messages up to and * including such ID will be marked as read (for all messages whose ID ≤ max_id). * * See also {@link Message.markRead}`. * * @remarks If neither message nor maximum ID are provided, all messages will be marked as read by assuming that `max_id = 0`. * @param entity - The chat where the message should be pinned. * @param message - The message or the message ID to pin. If it's `undefined`, all messages will be unpinned instead. * @param markAsReadParams - see {@link MarkAsReadParams}. * @return boolean * @example * ```ts * // using a Message object * const message = await client.sendMessage(chat, 'GramJS is awesome!'); * await client.markAsRead(chat, message) * // ...or using the int ID of a Message * await client.markAsRead(chat, message.id); * * // ...or passing a list of messages to mark as read * await client.markAsRead(chat, messages) * ``` */ markAsRead(entity, message, markAsReadParams) { return messageMethods.markAsRead(this, entity, message, markAsReadParams); } //endregion //region dialogs /** * Iterator over the dialogs (open conversations/subscribed channels) sequentially.<br/> * The order is the same as the one seen in official applications. (dialogs that had recent messages come first) * @param iterDialogsParams - see {@link IterDialogsParams} * @yield instances of custom {@link Dialog}. * @example * ```ts * // logs all dialog IDs and their title. * for await (const dialog of client.iterDialogs({})){ * console.log(`${dialog.id}: ${dialog.title}`); * } * ``` */ iterDialogs(iterDialogsParams = {}) { return dialogMethods.iterDialogs(this, iterDialogsParams); } /** * Same as iterDialogs but returns a TotalList instead of an iterator. * @param params - {@link IterDialogsParams} * @example * ```ts * // Get all open conversation, print the title of the first * const dialogs = await client.getDialogs({}); * const first = dialogs[0]; * console.log(first.title); * <br/> * // Use the dialog somewhere else * await client.sendMessage(first, {message: "hi"}); * <br/> * // Getting only non-archived dialogs (both equivalent) * non_archived = await client.get_dialogs({folder:0}) * non_archived = await client.get_dialogs({archived:false}) * <br/> * // Getting only archived dialogs (both equivalent) * archived = await client.get_dialogs({folder:1}) * archived = await client.get_dialogs({archived:true}) * ``` */ getDialogs(params = {}) { return dialogMethods.getDialogs(this, params); } //endregion //region chats /** * Iterates over the participants belonging to a specified chat , channel or supergroup.<br/> * <br/> * Channels can return a maximum of 200 users while supergroups can return up to 10 000.<br/> * You must be an admin to retrieve users from a channel.<br/> * @param entity - The entity from which to retrieve the participants list. * @param params - {@link IterParticipantsParams} * @remarks * The filter ChannelParticipantsBanned will return restricted users. If you want banned users you should use ChannelParticipantsKicked instead. * @yield The User objects returned by GetParticipants with an additional .participant attribute<br/> * which is the matched ChannelParticipant type for channels/supergroup or ChatParticipants for normal chats. * @example * ```ts * // logs all user IDs in a chat. * for await (const user of client.iterParticipants(chat)){ * console.log("User id",user.id); * } * * // Searches by name. * for await (const user of client.iterParticipants(chat, {search: "name"})){ * console.log("Username is ",user.username); // Some users don't have a username so this can be undefined. * } * * // Filter by admins. * import { Api } from "telegram"; * * for await (const user of client.iterParticipants(chat, {filter: Api.ChannelParticipantsAdmins})){ * console.log("admin first name is ",user.firstName); * } * ``` */ iterParticipants(entity, params = {}) { return chatMethods.iterParticipants(this, entity, params); } /** * Exact same as iterParticipants but returns a TotalList instead.<br/> * This can be used if you want to retrieve a list instead of iterating over the users. * @param entity - entity to get users from. * @param params - {@link IterParticipantsParams}. * @return */ getParticipants(entity, params = {}) { return chatMethods.getParticipants(this, entity, params); } /** * Kicks a user from a chat. * * Kicking yourself (`'me'`) will result in leaving the chat. * * @note * Attempting to kick someone who was banned will remove their * restrictions (and thus unbanning them), since kicking is just * ban + unban. * * @example * // Kick some user from some chat, and deleting the service message * const msg = await client.kickParticipant(chat, user); * await msg.delete(); * * // Leaving chat * await client.kickParticipant(chat, 'me'); */ kickParticipant(entity, participant) { return chatMethods.kickParticipant(this, entity, participant); } //endregion //region updates /** TODO */ on(event) { return updateMethods.on(this, event); } addEventHandler(callback, event) { return updateMethods.addEventHandler(this, callback, event); } /** * Inverse operation of addEventHandler().<br> * * @param callback - the callback function to be removed. * @param event - the type of the event. */ removeEventHandler(callback, event) { return updateMethods.removeEventHandler(this, callback, event); } /** * Lists all registered event handlers. * @return pair of [eventBuilder,CallableFunction] */ listEventHandlers() { return updateMethods.listEventHandlers(this); } // region uploads /** * Uploads a file to Telegram's servers, without sending it. * @remarks generally it's better to use {@link sendFile} instead. * This method returns a handle (an instance of InputFile or InputFileBig, as required) which can be later used before it expires (they are usable during less than a day).<br/> * Uploading a file will simply return a "handle" to the file stored remotely in the Telegram servers, * which can be later used on. This will not upload the file to your own chat or any chat at all. * This also can be used to update profile pictures * @param fileParams see {@link UploadFileParams} * @return {@link Api.InputFileBig} if the file size is larger than 10mb otherwise {@link Api.InputFile} * @example * ```ts * import { CustomFile } from "telegram/client/uploads"; * const toUpload = new CustomFile("photo.jpg", fs.statSync("../photo.jpg").size, "../photo.jpg"); * const file = await client.uploadFile({ * file: toUpload, * workers: 1, * }); * await client.invoke(new Api.photos.UploadProfilePhoto({ * file: file, * })); * ``` */ uploadFile(fileParams) { return uploadMethods.uploadFile(this, fileParams); } /** * Sends message with the given file to the specified entity. * This uses {@link uploadFile} internally so if you want more control over uploads you can use that. * @param entity - who will receive the file. * @param sendFileParams - see {@link SendFileInterface} * @example * ``` * // Normal files like photos * await client.sendFile(chat, {file:'/my/photos/me.jpg', caption:"It's me!"}) * // or * await client.sendMessage(chat, {message:"It's me!", file:'/my/photos/me.jpg'}) * * Voice notes or round videos * await client.sendFile(chat, {file: '/my/songs/song.mp3', voiceNote:True}) * await client.sendFile(chat, {file: '/my/videos/video.mp4', videoNote:True}) * * // Custom thumbnails * await client.sendFile(chat, {file:'/my/documents/doc.txt', thumb:'photo.jpg'}) * * // Only documents * await client.sendFile(chat, {file:'/my/photos/photo.png', forceDocument:True}) * * //logging progress * await client.sendFile(chat, {file: file, progressCallback=console.log}) * * // Dices, including dart and other future emoji * await client.sendFile(chat, {file:new Api.InputMediaDice("")}) * await client.sendFile(chat, {file:new Api.InputMediaDice("🎯")}) * * // Contacts * await client.sendFile(chat, {file: new Api.InputMediaContact({ * phoneNumber:'+1 123 456 789', * firstName:'Example', * lastName:'', * vcard:'' * })) * ``` */ sendFile(entity, sendFileParams) { return uploadMethods.sendFile(this, entity, sendFileParams); } // endregion //region user methods /** * invokes raw Telegram requests.<br/> * This is a low level method that can be used to call manually any Telegram API method.<br/> * Generally this should only be used when there isn't a friendly method that does what you need.<br/> * All available requests and types are found under the `Api.` namespace. * @param request - The request to send. this should be of type request. * @param dcId - Optional dc id to use when sending. * @return The response from Telegram. * @example * ```ts * // * const result = await client.invoke(new Api.account.CheckUsername({ * username: 'some string here' * })); * console.log("does this username exist?",result); * * ``` */ invoke(request, dcId) { return userMethods.invoke(this, request, dcId); } invokeWithSender(request, sender) { return userMethods.invoke(this, request, void 0, sender); } getMe(inputPeer = false) { return userMethods.getMe(this, inputPeer); } /** * Return true if the signed-in user is a bot, false otherwise. * @example * ```ts * if (await client.isBot()){ * console.log("I am a bot. PI is 3.14159265359); * } else { * console.log("I am a human. Pies are delicious); * } * ``` */ isBot() { return userMethods.isBot(this); } /** * Returns true if the user is authorized (logged in). * @example * if (await client.isUserAuthorized()){ * console.log("I am authorized. I can call functions and use requests"); * }else{ * console.log("I am not logged in. I need to sign in first before being able to call methods"); * } */ isUserAuthorized() { return userMethods.isUserAuthorized(this); } getEntity(entity) { return userMethods.getEntity(this, entity); } /** * Turns the given entity into its input entity version.<br/> * Almost all requests use this kind of InputPeer, so this is the most suitable call to make for those cases.<br/> * **Generally you should let the library do its job** and don't worry about getting the input entity first, but if you're going to use an entity often, consider making the call. * @param entity - If a username or invite link is given, the library will use the cache.<br/> * This means that it's possible to be using a username that changed or an old invite link (this only happens if an invite link for a small group chat is used after it was upgraded to a mega-group). *<br/> * - If the username or ID from the invite link is not found in the cache, it will be fetched. The same rules apply to phone numbers ('+34 123456789') from people in your contact list. *<br/> * - If an exact name is given, it must be in the cache too. This is not reliable as different people can share the same name and which entity is returned is arbitrary,<br/> * and should be used only for quick tests. *<br/> * - If a positive integer ID is given, the entity will be searched in cached users, chats or channels, without making any call. *<br/> * - If a negative integer ID is given, the entity will be searched exactly as either a chat (prefixed with -) or as a channel (prefixed with -100). *<br/> * - If a Peer is given, it will be searched exactly in the cache as either a user, chat or channel. *<br/> * - If the given object can be turned into an input entity directly, said operation will be done. *<br/> * -If the entity can't be found, this will throw an error. * @return * {@link Api.InputPeerUser} , {@link Api.InputPeerChat} , {@link Api.InputPeerChannel} or {@link Api.InputPeerSelf} if the parameter is "me" or "self" * @example * ```ts * // If you're going to use "username" often in your code * // (make a lot of calls), consider getting its input entity * // once, and then using the "user" everywhere instead. * user = await client.getInputEntity('username') * * // The same applies to IDs, chats or channels. * chat = await client.getInputEntity(-123456789) * ``` */ getInputEntity(entity) { return userMethods.getInputEntity(this, entity); } /** * Gets the ID for the given entity.<br/> * This method needs to be async because peer supports usernames, invite-links, phone numbers (from people in your contact list), etc.<br/> * <br/> * If addMark is false, then a positive ID will be returned instead. By default, bot-API style IDs (signed) are returned. * @param peer * @param addMark - whether to return a bot api style id. * @return the ID of the entity. * @example * ```ts * console.log(await client.getPeerId("me")); * ``` */ getPeerId(peer, addMark = true) { return userMethods.getPeerId(this, peer, addMark); } /** @hidden */ _getInputDialog(peer) { return userMethods._getInputDialog(this, peer); } /** @hidden */ _getInputNotify(notify) { return userMethods._getInputNotify(this, notify); } //endregion /** @hidden */ async _handleReconnect() { this._log.info("Handling reconnect!"); try { const res = await this.getMe(); } catch (e) { this._log.error(`Error while trying to reconnect`); if (this._errorHandler) { await this._errorHandler(e); } if (this._log.canSend(Logger_1.LogLevel.ERROR)) { console.error(e); } } } //region base methods async connect() { await this._initSession(); if (this._sender === void 0) { this._sender = new network_1.MTProtoSender(this.session.getAuthKey(), { logger: this._log, dcId: this.session.dcId || 4, retries: this._connectionRetries, delay: this._retryDelay, autoReconnect: this._autoReconnect, connectTimeout: this._timeout, authKeyCallback: this._authKeyCallback.bind(this), updateCallback: updates_1._handleUpdate.bind(this), isMainSender: true, client: this, securityChecks: this._securityChecks, autoReconnectCallback: this._handleReconnect.bind(this), _exportedSenderPromises: this._exportedSenderPromises, reconnectRetries: this._reconnectRetries }); } const connection = new this._connection({ ip: this.session.serverAddress, port: this.useWSS ? 443 : 80, dcId: this.session.dcId, loggers: this._log, proxy: this._proxy, socket: this.networkSocket, testServers: this.testServers }); if (!await this._sender.connect(connection, false)) { if (!this._loopStarted) { (0, updates_1._updateLoop)(this); this._loopStarted = true; } return false; } this.session.setAuthKey(this._sender.authKey); this.session.save(); this._initRequest.query = new tl_1.Api.help.GetConfig(); this._log.info(`Using LAYER ${AllTLObjects_1.LAYER} for initial connect`); await this._sender.send(new tl_1.Api.InvokeWithLayer({ layer: AllTLObjects_1.LAYER, query: this._initRequest })); if (!this._loopStarted) { (0, updates_1._updateLoop)(this); this._loopStarted = true; } this._connectedDeferred.resolve(); this._isSwitchingDc = false; return true; } //endregion // region Working with different connections/Data Centers /** @hidden */ async _switchDC(newDc) { this._log.info(`Reconnecting to new data center ${newDc}`); const DC = await this.getDC(newDc); this.session.setDC(newDc, DC.ipAddress, DC.port); await this._sender.authKey.setKey(void 0); this.session.setAuthKey(void 0); this.session.save(); this._isSwitchingDc = true; await this._disconnect(); this._sender = void 0; return await this.connect(); } /** * Returns the DC ip in case of node or the DC web address in case of browser.<br/> * This will do an API request to fill the cache if it's the first time it's called. * @param dcId The DC ID. * @param downloadDC whether to use -1 DCs or not * @param web if true this will get the web DCs. * TODO, hardcode IPs. * (These only support downloading/uploading and not creating a new AUTH key) */ async getDC(dcId, downloadDC = false, web = false) { this._log.debug(`Getting DC ${dcId}`); if (!platform_1.isNode || web) { switch (dcId) { case 1: return { id: 1, ipAddress: `pluto${downloadDC ? "-1" : ""}.web.telegram.org`, port: 443 }; case 2: return { id: 2, ipAddress: `venus${downloadDC ? "-1" : ""}.web.telegram.org`, port: 443 }; case 3: return { id: 3, ipAddress: `aurora${downloadDC ? "-1" : ""}.web.telegram.org`, port: 443 }; case 4: return { id: 4, ipAddress: `vesta${downloadDC ? "-1" : ""}.web.telegram.org`, port: 443 }; case 5: return { id: 5, ipAddress: `flora${downloadDC ? "-1" : ""}.web.telegram.org`, port: 443 }; default: throw new Error(`Cannot find the DC with the ID of ${dcId}`); } } if (!this._config) { this._config = await this.invoke(new tl_1.Api.help.GetConfig()); } for (const DC of this._config.dcOptions) { if (DC.id === dcId && !!DC.ipv6 === this._useIPV6) { return { id: DC.id, ipAddress: DC.ipAddress, port: 443 }; } } throw new Error(`Cannot find the DC with the ID of ${dcId}`); } /** @hidden */ _removeSender(dcId) { delete this._borrowedSenderPromises[dcId]; } /** @hidden */ _getResponseMessage(req, result, inputChat) { return parseMethods._getResponseMessage(this, req, result, inputChat); } /** @hidden */ [inspect_1.inspect.custom]() { return (0, Helpers_1.betterConsoleLog)(this); } /** * Small hack for using it in browsers */ static get events() { return require_events(); } }; exports2.TelegramClient = TelegramClient2; } }); // node_modules/telegram/Version.js var require_Version = __commonJS({ "node_modules/telegram/Version.js"(exports2) { "use strict"; init_define_import_meta_env(); Object.defineProperty(exports2, "__esModule", { value: true }); exports2.version = void 0; exports2.version = "2.26.21"; } }); // node_modules/telegram/client/index.js var require_client = __commonJS({ "node_modules/telegram/client/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.users = exports2.uploads = exports2.updates = exports2.tgClient = exports2.telegramBaseClient = exports2.message = exports2.messageParse = exports2.downloads = exports2.dialogs = exports2.chats = exports2.buttons = exports2.bots = exports2.auth = exports2.twoFA = void 0; var twoFA = __importStar2(require_fa()); exports2.twoFA = twoFA; var auth = __importStar2(require_auth()); exports2.auth = auth; var bots = __importStar2(require_bots()); exports2.bots = bots; var buttons = __importStar2(require_buttons()); exports2.buttons = buttons; var chats = __importStar2(require_chats()); exports2.chats = chats; var dialogs = __importStar2(require_dialogs()); exports2.dialogs = dialogs; var downloads = __importStar2(require_downloads()); exports2.downloads = downloads; var messageParse = __importStar2(require_messageParse()); exports2.messageParse = messageParse; var message = __importStar2(require_messages2()); exports2.message = message; var telegramBaseClient = __importStar2(require_telegramBaseClient()); exports2.telegramBaseClient = telegramBaseClient; var tgClient = __importStar2(require_TelegramClient()); exports2.tgClient = tgClient; var updates = __importStar2(require_updates()); exports2.updates = updates; var uploads = __importStar2(require_uploads()); exports2.uploads = uploads; var users = __importStar2(require_users()); exports2.users = users; } }); // node_modules/telegram/index.js var require_telegram = __commonJS({ "node_modules/telegram/index.js"(exports2) { "use strict"; init_define_import_meta_env(); var __createBinding2 = exports2 && exports2.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; })); var __setModuleDefault2 = exports2 && exports2.__setModuleDefault || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar2 = exports2 && exports2.__importStar || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) { for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding2(result, mod, k); } __setModuleDefault2(result, mod); return result; }; Object.defineProperty(exports2, "__esModule", { value: true }); exports2.client = exports2.password = exports2.tl = exports2.helpers = exports2.extensions = exports2.sessions = exports2.errors = exports2.utils = exports2.Logger = exports2.version = exports2.Connection = exports2.TelegramClient = exports2.Api = void 0; var tl_1 = require_tl(); Object.defineProperty(exports2, "Api", { enumerable: true, get: function() { return tl_1.Api; } }); var tl = __importStar2(require_tl()); exports2.tl = tl; var TelegramClient_1 = require_TelegramClient(); Object.defineProperty(exports2, "TelegramClient", { enumerable: true, get: function() { return TelegramClient_1.TelegramClient; } }); var network_1 = require_network(); Object.defineProperty(exports2, "Connection", { enumerable: true, get: function() { return network_1.Connection; } }); var Version_1 = require_Version(); Object.defineProperty(exports2, "version", { enumerable: true, get: function() { return Version_1.version; } }); var Logger_1 = require_Logger(); Object.defineProperty(exports2, "Logger", { enumerable: true, get: function() { return Logger_1.Logger; } }); var utils = __importStar2(require_Utils()); exports2.utils = utils; var errors = __importStar2(require_errors()); exports2.errors = errors; var sessions = __importStar2(require_sessions()); exports2.sessions = sessions; var extensions = __importStar2(require_extensions()); exports2.extensions = extensions; var helpers = __importStar2(require_Helpers()); exports2.helpers = helpers; var client2 = __importStar2(require_client()); exports2.client = client2; var password = __importStar2(require_Password()); exports2.password = password; } }); // server.ts init_define_import_meta_env(); var import_express = __toESM(require_express2()); var import_path = __toESM(require("path")); var import_crypto2 = __toESM(require("crypto")); var import_linkedom = __toESM(require_cjs2()); // ../frontend/src/lib/staticApi.ts init_define_import_meta_env(); // ../frontend/src/lib/auth.ts init_define_import_meta_env(); var KEY = "xiaoshuo_app_password"; function getPassword() { try { return localStorage.getItem(KEY) || ""; } catch { return ""; } } // ../frontend/src/lib/cloud.ts init_define_import_meta_env(); // ../frontend/node_modules/aws4fetch/dist/aws4fetch.esm.mjs init_define_import_meta_env(); var encoder = new TextEncoder(); var HOST_SERVICES = { appstream2: "appstream", cloudhsmv2: "cloudhsm", email: "ses", marketplace: "aws-marketplace", mobile: "AWSMobileHubService", pinpoint: "mobiletargeting", queue: "sqs", "git-codecommit": "codecommit", "mturk-requester-sandbox": "mturk-requester", "personalize-runtime": "personalize" }; var UNSIGNABLE_HEADERS = /* @__PURE__ */ new Set([ "authorization", "content-type", "content-length", "user-agent", "presigned-expires", "expect", "x-amzn-trace-id", "range", "connection" ]); var AwsClient = class { constructor({ accessKeyId, secretAccessKey, sessionToken, service, region, cache, retries, initRetryMs }) { if (accessKeyId == null) throw new TypeError("accessKeyId is a required option"); if (secretAccessKey == null) throw new TypeError("secretAccessKey is a required option"); this.accessKeyId = accessKeyId; this.secretAccessKey = secretAccessKey; this.sessionToken = sessionToken; this.service = service; this.region = region; this.cache = cache || /* @__PURE__ */ new Map(); this.retries = retries != null ? retries : 10; this.initRetryMs = initRetryMs || 50; } async sign(input, init) { if (input instanceof Request) { const { method, url, headers, body } = input; init = Object.assign({ method, url, headers }, init); if (init.body == null && headers.has("Content-Type")) { init.body = body != null && headers.has("X-Amz-Content-Sha256") ? body : await input.clone().arrayBuffer(); } input = url; } const signer = new AwsV4Signer(Object.assign({ url: input.toString() }, init, this, init && init.aws)); const signed = Object.assign({}, init, await signer.sign()); delete signed.aws; try { return new Request(signed.url.toString(), signed); } catch (e) { if (e instanceof TypeError) { return new Request(signed.url.toString(), Object.assign({ duplex: "half" }, signed)); } throw e; } } async fetch(input, init) { for (let i = 0; i <= this.retries; i++) { const fetched = fetch(await this.sign(input, init)); if (i === this.retries) { return fetched; } const res = await fetched; if (res.status < 500 && res.status !== 429) { return res; } await new Promise((resolve) => setTimeout(resolve, Math.random() * this.initRetryMs * Math.pow(2, i))); } throw new Error("An unknown error occurred, ensure retries is not negative"); } }; var AwsV4Signer = class { constructor({ method, url, headers, body, accessKeyId, secretAccessKey, sessionToken, service, region, cache, datetime, signQuery, appendSessionToken, allHeaders, singleEncode }) { if (url == null) throw new TypeError("url is a required option"); if (accessKeyId == null) throw new TypeError("accessKeyId is a required option"); if (secretAccessKey == null) throw new TypeError("secretAccessKey is a required option"); this.method = method || (body ? "POST" : "GET"); this.url = new URL(url); this.headers = new Headers(headers || {}); this.body = body; this.accessKeyId = accessKeyId; this.secretAccessKey = secretAccessKey; this.sessionToken = sessionToken; let guessedService, guessedRegion; if (!service || !region) { [guessedService, guessedRegion] = guessServiceRegion(this.url, this.headers); } this.service = service || guessedService || ""; this.region = region || guessedRegion || "us-east-1"; this.cache = cache || /* @__PURE__ */ new Map(); this.datetime = datetime || (/* @__PURE__ */ new Date()).toISOString().replace(/[:-]|\.\d{3}/g, ""); this.signQuery = signQuery; this.appendSessionToken = appendSessionToken || this.service === "iotdevicegateway"; this.headers.delete("Host"); if (this.service === "s3" && !this.signQuery && !this.headers.has("X-Amz-Content-Sha256")) { this.headers.set("X-Amz-Content-Sha256", "UNSIGNED-PAYLOAD"); } const params = this.signQuery ? this.url.searchParams : this.headers; params.set("X-Amz-Date", this.datetime); if (this.sessionToken && !this.appendSessionToken) { params.set("X-Amz-Security-Token", this.sessionToken); } this.signableHeaders = ["host", ...this.headers.keys()].filter((header) => allHeaders || !UNSIGNABLE_HEADERS.has(header)).sort(); this.signedHeaders = this.signableHeaders.join(";"); this.canonicalHeaders = this.signableHeaders.map((header) => header + ":" + (header === "host" ? this.url.host : (this.headers.get(header) || "").replace(/\s+/g, " "))).join("\n"); this.credentialString = [this.datetime.slice(0, 8), this.region, this.service, "aws4_request"].join("/"); if (this.signQuery) { if (this.service === "s3" && !params.has("X-Amz-Expires")) { params.set("X-Amz-Expires", "86400"); } params.set("X-Amz-Algorithm", "AWS4-HMAC-SHA256"); params.set("X-Amz-Credential", this.accessKeyId + "/" + this.credentialString); params.set("X-Amz-SignedHeaders", this.signedHeaders); } if (this.service === "s3") { try { this.encodedPath = decodeURIComponent(this.url.pathname.replace(/\+/g, " ")); } catch (e) { this.encodedPath = this.url.pathname; } } else { this.encodedPath = this.url.pathname.replace(/\/+/g, "/"); } if (!singleEncode) { this.encodedPath = encodeURIComponent(this.encodedPath).replace(/%2F/g, "/"); } this.encodedPath = encodeRfc3986(this.encodedPath); const seenKeys = /* @__PURE__ */ new Set(); this.encodedSearch = [...this.url.searchParams].filter(([k]) => { if (!k) return false; if (this.service === "s3") { if (seenKeys.has(k)) return false; seenKeys.add(k); } return true; }).map((pair) => pair.map((p) => encodeRfc3986(encodeURIComponent(p)))).sort(([k1, v1], [k2, v2]) => k1 < k2 ? -1 : k1 > k2 ? 1 : v1 < v2 ? -1 : v1 > v2 ? 1 : 0).map((pair) => pair.join("=")).join("&"); } async sign() { if (this.signQuery) { this.url.searchParams.set("X-Amz-Signature", await this.signature()); if (this.sessionToken && this.appendSessionToken) { this.url.searchParams.set("X-Amz-Security-Token", this.sessionToken); } } else { this.headers.set("Authorization", await this.authHeader()); } return { method: this.method, url: this.url, headers: this.headers, body: this.body }; } async authHeader() { return [ "AWS4-HMAC-SHA256 Credential=" + this.accessKeyId + "/" + this.credentialString, "SignedHeaders=" + this.signedHeaders, "Signature=" + await this.signature() ].join(", "); } async signature() { const date = this.datetime.slice(0, 8); const cacheKey = [this.secretAccessKey, date, this.region, this.service].join(); let kCredentials = this.cache.get(cacheKey); if (!kCredentials) { const kDate = await hmac("AWS4" + this.secretAccessKey, date); const kRegion = await hmac(kDate, this.region); const kService = await hmac(kRegion, this.service); kCredentials = await hmac(kService, "aws4_request"); this.cache.set(cacheKey, kCredentials); } return buf2hex(await hmac(kCredentials, await this.stringToSign())); } async stringToSign() { return [ "AWS4-HMAC-SHA256", this.datetime, this.credentialString, buf2hex(await hash(await this.canonicalString())) ].join("\n"); } async canonicalString() { return [ this.method.toUpperCase(), this.encodedPath, this.encodedSearch, this.canonicalHeaders + "\n", this.signedHeaders, await this.hexBodyHash() ].join("\n"); } async hexBodyHash() { let hashHeader = this.headers.get("X-Amz-Content-Sha256") || (this.service === "s3" && this.signQuery ? "UNSIGNED-PAYLOAD" : null); if (hashHeader == null) { if (this.body && typeof this.body !== "string" && !("byteLength" in this.body)) { throw new Error("body must be a string, ArrayBuffer or ArrayBufferView, unless you include the X-Amz-Content-Sha256 header"); } hashHeader = buf2hex(await hash(this.body || "")); } return hashHeader; } }; async function hmac(key, string) { const cryptoKey = await crypto.subtle.importKey( "raw", typeof key === "string" ? encoder.encode(key) : key, { name: "HMAC", hash: { name: "SHA-256" } }, false, ["sign"] ); return crypto.subtle.sign("HMAC", cryptoKey, encoder.encode(string)); } async function hash(content) { return crypto.subtle.digest("SHA-256", typeof content === "string" ? encoder.encode(content) : content); } var HEX_CHARS = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; function buf2hex(arrayBuffer) { const buffer = new Uint8Array(arrayBuffer); let out = ""; for (let idx = 0; idx < buffer.length; idx++) { const n = buffer[idx]; out += HEX_CHARS[n >>> 4 & 15]; out += HEX_CHARS[n & 15]; } return out; } function encodeRfc3986(urlEncodedStr) { return urlEncodedStr.replace(/[!'()*]/g, (c) => "%" + c.charCodeAt(0).toString(16).toUpperCase()); } function guessServiceRegion(url, headers) { const { hostname, pathname } = url; if (hostname.endsWith(".on.aws")) { const match2 = hostname.match(/^[^.]{1,63}\.lambda-url\.([^.]{1,63})\.on\.aws$/); return match2 != null ? ["lambda", match2[1] || ""] : ["", ""]; } if (hostname.endsWith(".r2.cloudflarestorage.com")) { return ["s3", "auto"]; } if (hostname.endsWith(".backblazeb2.com")) { const match2 = hostname.match(/^(?:[^.]{1,63}\.)?s3\.([^.]{1,63})\.backblazeb2\.com$/); return match2 != null ? ["s3", match2[1] || ""] : ["", ""]; } const match = hostname.replace("dualstack.", "").match(/([^.]{1,63})\.(?:([^.]{0,63})\.)?amazonaws\.com(?:\.cn)?$/); let service = match && match[1] || ""; let region = match && match[2]; if (region === "us-gov") { region = "us-gov-west-1"; } else if (region === "s3" || region === "s3-accelerate") { region = "us-east-1"; service = "s3"; } else if (service === "iot") { if (hostname.startsWith("iot.")) { service = "execute-api"; } else if (hostname.startsWith("data.jobs.iot.")) { service = "iot-jobs-data"; } else { service = pathname === "/mqtt" ? "iotdevicegateway" : "iotdata"; } } else if (service === "autoscaling") { const targetPrefix = (headers.get("X-Amz-Target") || "").split(".")[0]; if (targetPrefix === "AnyScaleFrontendService") { service = "application-autoscaling"; } else if (targetPrefix === "AnyScaleScalingPlannerFrontendService") { service = "autoscaling-plans"; } } else if (region == null && service.startsWith("s3-")) { region = service.slice(3).replace(/^fips-|^external-1/, ""); service = "s3"; } else if (service.endsWith("-fips")) { service = service.slice(0, -5); } else if (region && /-\d$/.test(service) && !/-\d$/.test(region)) { [service, region] = [region, service]; } return [HOST_SERVICES[service] || service, region || ""]; } // ../frontend/src/lib/cloud.ts var AuthError = class extends Error { }; var BASE = (define_import_meta_env_default.BASE_URL || "/") + "data/"; var rawFetch = (...a) => fetch(...a); var getRawFetch = () => rawFetch; var b64 = (s) => Uint8Array.from(atob(s), (c) => c.charCodeAt(0)); var metaP = null; function getMeta() { if (!metaP) { metaP = rawFetch(BASE + "meta.json", { cache: "no-cache" }).then((r) => { if (!r.ok) throw new Error("\u914D\u7F6E\u6587\u4EF6\u52A0\u8F7D\u5931\u8D25"); return r.json(); }); metaP.catch(() => metaP = null); } return metaP; } async function gunzipText(buf) { const stream = new Blob([buf]).stream().pipeThrough(new DecompressionStream("gzip")); return new Response(stream).text(); } async function gzip(text) { const stream = new Blob([text]).stream().pipeThrough(new CompressionStream("gzip")); return new Uint8Array(await new Response(stream).arrayBuffer()); } var session = null; async function unlock(pw) { if (!pw) throw new AuthError(); if (session?.pw === pw) return session; const m = await getMeta(); const base = await crypto.subtle.importKey("raw", new TextEncoder().encode(pw), "PBKDF2", false, ["deriveKey"]); const key = await crypto.subtle.deriveKey( { name: "PBKDF2", salt: b64(m.salt), iterations: m.iter, hash: "SHA-256" }, base, { name: "AES-GCM", length: 256 }, false, ["decrypt"] ); const buf = b64(m.cfg); let plain; try { plain = await crypto.subtle.decrypt({ name: "AES-GCM", iv: buf.slice(0, 12) }, key, buf.slice(12)); } catch { throw new AuthError(); } const cfg = JSON.parse(await gunzipText(plain)); const client2 = new AwsClient({ accessKeyId: cfg.accessKeyId, secretAccessKey: cfg.secretAccessKey, service: "s3", region: "auto" }); session = { pw, client: client2, base: `${cfg.endpoint.replace(/\/$/, "")}/${cfg.bucket}/${cfg.prefix || "v1"}/` }; return session; } function useCredentials(cfg) { const client2 = new AwsClient({ accessKeyId: cfg.accessKeyId, secretAccessKey: cfg.secretAccessKey, service: "s3", region: "auto" }); session = { pw: "\0server", client: client2, base: `${cfg.endpoint.replace(/\/$/, "")}/${cfg.bucket}/${cfg.prefix || "v1"}/` }; } function need() { if (!session) throw new AuthError(); return session; } async function r2(method, key, body, type) { const s = need(); const req = await s.client.sign(s.base + key, { method, body, headers: type ? { "Content-Type": type } : void 0 }); for (let i = 0; ; i++) { const r = await rawFetch(req.clone(), { cache: "no-store" }); if (r.ok || r.status === 404 || i >= 2) return r; await new Promise((res) => setTimeout(res, 800 * (i + 1))); } } async function getJSON(key, fallback) { const r = await r2("GET", key); if (r.status === 404) return fallback; if (!r.ok) throw new Error(`\u4E91\u7AEF\u8BFB\u53D6\u5931\u8D25 ${r.status}`); if (key.endsWith(".gz")) return JSON.parse(await gunzipText(await r.arrayBuffer())); return await r.json(); } async function putJSON(key, data) { const text = JSON.stringify(data); const r = key.endsWith(".gz") ? await r2("PUT", key, await gzip(text), "application/gzip") : await r2("PUT", key, text, "application/json"); if (!r.ok) throw new Error(`\u4E91\u7AEF\u4FDD\u5B58\u5931\u8D25 ${r.status}`); } var loadPrivate = (key, fallback) => getJSON(`private/${key}`, fallback); var storePrivate = (key, data) => putJSON(`private/${key}`, data); var deletePrivate = (key) => r2("DELETE", `private/${key}`); var loadIndex = () => getJSON("index.json", { updated_at: (/* @__PURE__ */ new Date()).toISOString(), channels: [] }); var loadPosts = (ch) => getJSON(`posts/${ch}.json.gz`, []); var loadNotes = (ch) => getJSON(`notes/${ch}.json.gz`, []); var loadSaves = () => getJSON("saves.json", {}); var storeSaves = (s) => putJSON("saves.json", s); var storePosts = (ch, posts) => putJSON(`posts/${ch}.json.gz`, posts); var saveIndex = (idx) => { idx.updated_at = (/* @__PURE__ */ new Date()).toISOString(); return putJSON("index.json", idx); }; async function deleteChannelData(ch) { await r2("DELETE", `posts/${ch}.json.gz`); await r2("DELETE", `notes/${ch}.json.gz`); } // ../frontend/src/lib/tg.ts init_define_import_meta_env(); var CATEGORIES = [ { key: "\u611F\u60C5\u604B\u7231", words: ["\u5973\u670B\u53CB", "\u7537\u670B\u53CB", "\u5973\u53CB", "\u7537\u53CB", "\u524D\u4EFB", "\u5206\u624B", "\u6697\u604B", "\u8868\u767D", "\u604B\u7231", "\u5BF9\u8C61", "\u559C\u6B22\u5979", "\u559C\u6B22\u4ED6", "\u51FA\u8F68", "\u5288\u817F", "\u8001\u5A46", "\u8001\u516C", "\u7ED3\u5A5A", "\u79BB\u5A5A", "\u76F8\u4EB2", "\u7EA6\u4F1A", "\u5F02\u5730", "\u590D\u5408", "\u524D\u5973\u53CB", "\u524D\u7537\u53CB", "\u7EFF\u5E3D", "\u6E23\u7537", "\u6E23\u5973"] }, { key: "\u5BB6\u5EAD\u4EB2\u60C5", words: ["\u6211\u5988", "\u6211\u7238", "\u7236\u6BCD", "\u5988\u5988", "\u7238\u7238", "\u5BB6\u91CC", "\u5BB6\u4EBA", "\u5976\u5976", "\u7237\u7237", "\u5916\u5A46", "\u5916\u516C", "\u59D0\u59D0", "\u54E5\u54E5", "\u5F1F\u5F1F", "\u59B9\u59B9", "\u4EB2\u621A", "\u5B69\u5B50", "\u513F\u5B50", "\u5973\u513F", "\u539F\u751F\u5BB6\u5EAD"] }, { key: "\u6821\u56ED\u540C\u5B66", words: ["\u5B66\u6821", "\u540C\u5B66", "\u5BBF\u820D", "\u8001\u5E08", "\u73ED\u4E3B\u4EFB", "\u9AD8\u4E2D", "\u521D\u4E2D", "\u5927\u5B66", "\u5BA4\u53CB", "\u8003\u8BD5", "\u9AD8\u8003", "\u8003\u7814", "\u6210\u7EE9", "\u6BD5\u4E1A", "\u5B66\u957F", "\u5B66\u59D0", "\u73ED\u4E0A", "\u4E0A\u8BFE"] }, { key: "\u5DE5\u4F5C\u804C\u573A", words: ["\u516C\u53F8", "\u8001\u677F", "\u540C\u4E8B", "\u9886\u5BFC", "\u4E0A\u73ED", "\u5DE5\u4F5C", "\u8F9E\u804C", "\u52A0\u73ED", "\u5DE5\u8D44", "\u9762\u8BD5", "\u88C1\u5458", "\u5B9E\u4E60", "\u5BA2\u6237", "\u5165\u804C", "\u79BB\u804C"] }, { key: "\u91D1\u94B1\u503A\u52A1", words: ["\u94B1", "\u501F\u94B1", "\u6B20\u94B1", "\u6B20\u6B3E", "\u6B20\u503A", "\u7F51\u8D37", "\u8D37\u6B3E", "\u8D4C", "\u8D1F\u503A", "\u8FD8\u6B3E", "\u4FE1\u7528\u5361", "\u82B1\u5457", "\u6295\u8D44", "\u4E8F\u635F", "\u4E8F\u4E86", "\u5E01\u5708", "\u7092\u80A1", "\u5F69\u7968", "\u623F\u8D37"] }, { key: "\u5FC3\u7406\u60C5\u7EEA", words: ["\u6291\u90C1", "\u7126\u8651", "\u60F3\u6B7B", "\u81EA\u6740", "\u6D3B\u7740", "\u5B64\u72EC", "\u5D29\u6E83", "\u96BE\u53D7", "\u5931\u7720", "\u81EA\u5351", "\u75DB\u82E6", "\u7EDD\u671B", "\u5FC3\u7406", "\u54ED", "\u7D2F\u4E86", "\u538B\u529B"] }, { key: "\u6027\u4E0E\u9690\u79C1", words: ["\u6027\u751F\u6D3B", "\u6027\u6B32", "\u6027\u5173\u7CFB", "\u505A\u7231", "\u7EA6\u70AE", "\u5904\u7537", "\u5904\u5973", "\u64B8", "\u8272\u60C5", "\u88F8", "\u9EC4\u7247", "\u540C\u6027", "gay", "\u7537\u540C", "\u5973\u540C", "\u5077\u770B", "\u5185\u88E4", "\u5F00\u623F"] }, { key: "\u670B\u53CB\u793E\u4EA4", words: ["\u670B\u53CB", "\u5144\u5F1F", "\u95FA\u871C", "\u597D\u53CB", "\u7FA4\u91CC", "\u7F51\u53CB", "\u793E\u4EA4", "\u5BA4\u53CB"] } ]; var PROMO_RE = /(t\.me\/|极搜|推荐旗下|优质频道|频道➡|➡️\s*@|本频道不刺激)/; function categorize(text) { if (!text) return "\u5176\u4ED6"; if (PROMO_RE.test(text) && [...text].length < 200) return "\u9891\u9053\u63A8\u5E7F"; const lower = text.toLowerCase(); let best = "\u5176\u4ED6"; let bestScore = 0; for (const c of CATEGORIES) { let score = 0; for (const w of c.words) { const lw = w.toLowerCase(); let idx = lower.indexOf(lw); while (idx !== -1) { score++; idx = lower.indexOf(lw, idx + w.length); } } if (score > bestScore) { bestScore = score; best = c.key; } } return best; } function parseCount(s) { if (!s) return null; const m = String(s).trim().match(/^([\d.]+)\s*([KkMm]?)$/); if (!m) return null; let n = parseFloat(m[1]); if (/k/i.test(m[2])) n *= 1e3; if (/m/i.test(m[2])) n *= 1e6; return Math.round(n); } function parseChannel(input) { const s = String(input || "").trim().replace(/^@/, "").replace(/^https?:\/\//, "").replace(/^(www\.)?(t\.me|telegram\.me)\/(s\/)?/, "").split(/[/?#]/)[0]; return /^[A-Za-z][A-Za-z0-9_]{3,63}$/.test(s) ? s : null; } function parsePage(html, channel, makeDoc) { const doc = makeDoc ? makeDoc(html) : new DOMParser().parseFromString(html, "text/html"); const meta = (p) => doc.querySelector(`meta[property="${p}"]`)?.getAttribute("content") || ""; const title = meta("og:title") || doc.querySelector(".tgme_channel_info_header_title")?.textContent?.trim() || channel; const description = meta("og:description"); const avatar = doc.querySelector(".tgme_channel_info_header_image img")?.getAttribute("src") || meta("og:image"); const nodes = [...doc.querySelectorAll(".tgme_widget_message")]; const isChannelPreview = !!doc.querySelector(".tgme_channel_info") || nodes.length > 0; const posts = []; for (const node of nodes) { const dataPost = node.getAttribute("data-post") || ""; const [owner, idStr] = dataPost.split("/"); const id = parseInt(idStr, 10); if (!id || owner && owner.toLowerCase() !== channel.toLowerCase()) continue; let text = ""; const textEl = node.querySelector(".tgme_widget_message_text"); if (textEl) { const el = textEl.cloneNode(true); el.querySelectorAll("br").forEach((b) => b.replaceWith(doc.createTextNode("\n"))); el.querySelectorAll("i.emoji").forEach((e) => e.replaceWith(doc.createTextNode(e.textContent || ""))); text = (el.textContent || "").trim(); } const reactions = []; node.querySelectorAll(".tgme_reaction").forEach((r) => { const emoji = r.querySelector("i.emoji b")?.textContent || r.querySelector("b")?.textContent || "\u2605"; const own = [...r.childNodes].filter((n) => n.nodeType === 3).map((n) => n.textContent).join(""); const count = parseCount(own); if (count != null) reactions.push({ emoji, count }); }); const photos = []; node.querySelectorAll(".tgme_widget_message_photo_wrap").forEach((p) => { const m = (p.getAttribute("style") || "").match(/url\('([^']+)'\)/); if (m) photos.push(m[1].startsWith("//") ? `https:${m[1]}` : m[1]); }); const datetime = node.querySelector(".tgme_widget_message_date time")?.getAttribute("datetime") || null; const views = parseCount(node.querySelector(".tgme_widget_message_views")?.textContent); if (!text && photos.length === 0) continue; posts.push({ post_id: id, text, posted_at: datetime ? new Date(datetime).toISOString() : null, views, reactions, reaction_total: reactions.reduce((s, r) => s + r.count, 0), photos, category: categorize(text), char_count: [...text].length }); } return { title, description, avatar, posts, isChannelPreview }; } var sleep = (ms) => new Promise((r) => setTimeout(r, ms)); var RelayError = class extends Error { limited; constructor(msg, limited = false) { super(msg); this.limited = limited; } }; var okText = async (r) => { if (r.status === 429) throw new RelayError("429", true); if (!r.ok) throw new RelayError(String(r.status)); return r.text(); }; var RELAYS = [ { name: "jina", gap: 3100, next: 0, blockedUntil: 0, get: (u, f, signal) => f(`https://r.jina.ai/${u}`, { headers: { "X-Return-Format": "html" }, signal }).then(okText) }, { name: "allorigins", gap: 2e3, next: 0, blockedUntil: 0, get: (u, f, signal) => f(`https://api.allorigins.win/raw?url=${encodeURIComponent(u)}`, { signal }).then(okText) }, { name: "allorigins-json", gap: 2e3, next: 0, blockedUntil: 0, get: async (u, f, signal) => { const t = await f(`https://api.allorigins.win/get?url=${encodeURIComponent(u)}`, { signal }).then(okText); return JSON.parse(t).contents || ""; } } ]; var serverSide = false; function enableDirectFetch() { serverSide = true; if (RELAYS[0].name === "direct") return; RELAYS.unshift({ name: "direct", gap: 900, next: 0, blockedUntil: 0, get: (u, f, signal) => f(u, { signal, headers: { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36", "Accept-Language": "zh-CN,zh;q=0.9" } }).then(okText) }); } var accountFetcher = null; var accountOnly = /* @__PURE__ */ new Set(); function setAccountFetcher(f) { accountFetcher = f; if (!f) accountOnly.clear(); } var hasAccountFetcher = () => accountFetcher != null; async function fetchPage(channel, before, f = fetch) { const key = channel.toLowerCase(); if (accountFetcher && accountOnly.has(key)) return accountFetcher(channel, before); if (accountFetcher && serverSide) { try { return await accountFetcher(channel, before); } catch (e) { if (typeof window === "undefined") console.log(`account fetch ${channel}: ${e.message}, trying the web preview`); } } let page = null; try { page = await fetchWebPage(channel, before, f); } catch (e) { if (!accountFetcher) throw e; } if (accountFetcher && (!page || !page.isChannelPreview || before == null && page.posts.length === 0)) { const viaAccount2 = await accountFetcher(channel, before); accountOnly.add(key); return viaAccount2; } if (serverSide && page && !page.isChannelPreview) throw new Error("\u8FD9\u4E2A\u9891\u9053\u5173\u95ED\u4E86\u7F51\u9875\u9884\u89C8\u3002\u70B9\u53F3\u4E0A\u89D2\u300CTelegram \u8D26\u53F7\u300D\u767B\u5F55\u540E\u5C31\u80FD\u6293\u53D6"); return page; } async function fetchWebPage(channel, before, f = fetch) { const url = `https://t.me/s/${channel}${before ? `?before=${before}` : ""}`; let lastErr = ""; for (let round = 0; round < 6; round++) { for (const relay of RELAYS) { if (relay.blockedUntil > Date.now()) continue; const wait = relay.next - Date.now(); if (wait > 0) await sleep(wait); relay.next = Date.now() + relay.gap; const ctl = new AbortController(); const timer = setTimeout(() => ctl.abort(), 15e3); try { const html = await relay.get(url, f, ctl.signal); if (!/tgme_/.test(html)) throw new RelayError("empty page"); return parsePage(html, channel); } catch (e) { lastErr = `${relay.name}: ${e.message}`; if (typeof window === "undefined") console.warn("fetchPage", url, lastErr); relay.blockedUntil = Date.now() + (e.limited ? 25e3 : 12e3); } finally { clearTimeout(timer); } } await sleep(3e3 * (round + 1)); } throw new Error(`\u8BFB\u53D6 Telegram \u5931\u8D25\uFF08${lastErr}\uFF09\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5`); } // ../frontend/src/lib/staticApi.ts var STALE_MS = 30 * 60 * 1e3; var LEASE_MS = 3 * 60 * 1e3; var TAB = Math.random().toString(36).slice(2, 10); var index = null; var indexAt = 0; var indexP = null; var chans = /* @__PURE__ */ new Map(); var saves = null; var savesAt = 0; var locks = /* @__PURE__ */ new Map(); var backfills = /* @__PURE__ */ new Map(); var syncing = /* @__PURE__ */ new Map(); var autoStarted = false; var emit = (channel, kind) => { if (typeof window !== "undefined" && typeof window.dispatchEvent === "function") window.dispatchEvent(new CustomEvent("xiaoshuo-data", { detail: { channel, kind } })); }; var serverMode = false; async function startServerMode(cfg, beforeSync) { serverMode = true; useCredentials(cfg); if (beforeSync) await beforeSync().catch((e) => console.error("beforeSync", e)); await getIndex(true); } async function ensureUnlocked() { if (serverMode) return; const pw = getPassword(); if (!pw) throw new AuthError(); await unlock(pw); } async function getIndex(force = false) { await ensureUnlocked(); if (index && !force && Date.now() - indexAt < 15e3) return index; if (!indexP) { indexP = loadIndex().then((i2) => { index = i2; indexAt = Date.now(); return i2; }).finally(() => indexP = null); } const i = await indexP; if (!autoStarted) { autoStarted = true; setTimeout(autoRun, 1500); setInterval(autoRun, STALE_MS); } return i; } var entryOf = (ch) => index?.channels.find((c) => c.channel === ch); async function getChannel(ch) { const idx = await getIndex(); const info = idx.channels.find((c) => c.channel === ch) || idx.channels[0]; if (!info) return { info: null, data: { posts: [], notes: [], rev: 0 } }; const cached = chans.get(info.channel); if (cached) { const d = await cached.catch(() => null); if (d && d.rev === (info.rev || 0)) return { info, data: d }; } const p = Promise.all([loadPosts(info.channel), loadNotes(info.channel)]).then(([posts, notes]) => ({ posts, notes, rev: info.rev || 0 })); p.catch(() => chans.delete(info.channel)); chans.set(info.channel, p); return { info, data: await p }; } async function getSaves(force = false) { await ensureUnlocked(); if (!saves || force || Date.now() - savesAt > 3e4) { saves = await loadSaves(); savesAt = Date.now(); } return saves; } async function mutateSaves(fn) { const s = await getSaves(true); fn(s); await storeSaves(s); saves = s; savesAt = Date.now(); return s; } function withLock(key, fn) { const prev = locks.get(key) || Promise.resolve(); const next = prev.catch(() => { }).then(fn); locks.set(key, next); next.finally(() => locks.get(key) === next && locks.delete(key)).catch(() => { }); return next; } function summarize(posts) { let min = null, max = null, oldest = null, newest = null; for (const p of posts) { if (min == null || p.post_id < min) min = p.post_id; if (max == null || p.post_id > max) max = p.post_id; if (p.posted_at) { if (!oldest || p.posted_at < oldest) oldest = p.posted_at; if (!newest || p.posted_at > newest) newest = p.posted_at; } } return { posts: posts.length, min_id: min, max_id: max, oldest_at: oldest, newest_at: newest }; } function persist(ch, fresh, patch = {}) { return withLock(ch, async () => { const remoteIdx = await loadIndex(); const remote = remoteIdx.channels.find((c) => c.channel === ch); let data; const cached = chans.get(ch) && await chans.get(ch).catch(() => null); if (cached && remote && (remote.rev || 0) === cached.rev) data = cached; else if (remote) data = { posts: await loadPosts(ch), notes: cached?.notes ?? await loadNotes(ch), rev: remote.rev || 0 }; else data = { posts: [], notes: [], rev: 0 }; const byId = new Map(data.posts.map((p) => [p.post_id, p])); let added = 0; for (const p of fresh) { if (!byId.has(p.post_id)) added++; byId.set(p.post_id, p); } const posts = [...byId.values()].sort((a, b) => a.post_id - b.post_id); if (fresh.length) await storePosts(ch, posts); const rev = (remote?.rev || 0) + 1; const entry = { channel: ch, title: null, description: null, avatar: null, added_at: (/* @__PURE__ */ new Date()).toISOString(), last_synced_at: null, backfill_status: null, backfill_lease: null, annotated: data.notes.length, ...remote, ...patch, ...summarize(posts), rev }; const i = remoteIdx.channels.findIndex((c) => c.channel === ch); if (i >= 0) remoteIdx.channels[i] = entry; else remoteIdx.channels.push(entry); await saveIndex(remoteIdx); index = remoteIdx; indexAt = Date.now(); chans.set(ch, Promise.resolve({ posts, notes: data.notes, rev })); return { added }; }); } function syncNew(ch, pages = 5) { if (syncing.has(ch)) return syncing.get(ch); const job2 = (async () => { const known = entryOf(ch)?.max_id ?? null; let before = null; const got = []; let meta = null; for (let i = 0; i < pages; i++) { const page = await fetchPage(ch, before, getRawFetch()); meta = meta || page; if (!page.posts.length) break; got.push(...page.posts); const minId = Math.min(...page.posts.map((p) => p.post_id)); if (known != null && minId <= known || minId <= 1 || before != null && minId >= before) break; before = minId; } const patch = { last_synced_at: (/* @__PURE__ */ new Date()).toISOString() }; if (meta) Object.assign(patch, { title: meta.title, description: meta.description, avatar: meta.avatar }); const { added } = await persist(ch, got, patch); emit(ch, "done"); return { fetched: got.length, added }; })(); syncing.set(ch, job2); job2.finally(() => syncing.delete(ch)).catch(() => { }); return job2; } async function syncOlder(ch, pages) { let before = entryOf(ch)?.min_id ?? null; if (before != null && before <= 1) return { fetched: 0, done: true }; const got = []; let done = false; for (let i = 0; i < pages; i++) { const page = await fetchPage(ch, before, getRawFetch()); if (!page.posts.length) { done = true; break; } got.push(...page.posts); const minId = Math.min(...page.posts.map((p) => p.post_id)); if (minId <= 1 || before != null && minId >= before) { done = true; break; } before = minId; } await persist(ch, got, done ? { backfill_status: "done" } : {}); emit(ch, "done"); return { fetched: got.length, done }; } var leaseOwner = (l) => l ? l.split("@")[0] : null; var leaseFresh = (l) => { if (!l) return false; const t = Date.parse(l.split("@")[1] || ""); return Date.now() - t < LEASE_MS; }; function startBackfill(ch) { if (backfills.has(ch)) return false; const e = entryOf(ch); if (e?.backfill_status === "done") return false; if (e && leaseFresh(e.backfill_lease) && leaseOwner(e.backfill_lease) !== TAB) return false; const state2 = { minId: e?.min_id ?? null, stop: false }; backfills.set(ch, state2); emit(ch, "progress"); (async () => { try { let before = entryOf(ch)?.min_id ?? null; let done = before != null && before <= 1; while (!done && !state2.stop) { const batch = []; for (let i = 0; i < 5 && !state2.stop; i++) { const page = await fetchPage(ch, before, getRawFetch()); if (!page.posts.length) { done = true; break; } batch.push(...page.posts); const minId = Math.min(...page.posts.map((p) => p.post_id)); state2.minId = minId; if (minId <= 1 || before != null && minId >= before) { done = true; break; } before = minId; emit(ch, "progress"); } if (state2.stop) break; if (serverMode) console.log("backfill", ch, "got", batch.length, "min_id", state2.minId); await persist(ch, batch, { backfill_status: done ? "done" : "partial", backfill_lease: done ? null : `${TAB}@${(/* @__PURE__ */ new Date()).toISOString()}` }); emit(ch, "progress"); } } catch (err) { console.error("backfill", ch, err); if (entryOf(ch) && !state2.stop) await persist(ch, [], { backfill_status: `error:${err.message}`, backfill_lease: null }).catch(() => { }); } finally { if (backfills.get(ch) === state2) backfills.delete(ch); if (serverMode) console.log("backfill end", ch, state2.stop ? "stopped" : "finished", "min_id", state2.minId); emit(ch, "done"); } })(); return true; } async function autoRun() { try { const idx = await getIndex(true); for (const c of idx.channels) { if (c.backfill_status !== "done") startBackfill(c.channel); const age = c.last_synced_at ? Date.now() - Date.parse(c.last_synced_at) : Infinity; if (age > STALE_MS) await syncNew(c.channel, 5).catch((e) => console.warn("auto sync", c.channel, e)); } } catch (e) { console.warn("autoRun", e); } } function channelView(c) { const bf = backfills.get(c.channel); const remoteRunning = !bf && leaseFresh(c.backfill_lease) && leaseOwner(c.backfill_lease) !== TAB && c.backfill_status !== "done"; return { ...c, backfilling: Boolean(bf) || remoteRunning, backfill_status: bf ? `running:${bf.minId ?? ""}` : remoteRunning ? `running:${c.min_id ?? ""}` : c.backfill_status }; } var json = (body, status = 200) => new Response(JSON.stringify(body), { status, headers: { "Content-Type": "application/json" } }); var cmpDesc = (a, b) => { const an = a == null, bn = b == null; if (an && bn) return 0; if (an) return 1; if (bn) return -1; return b - a; }; var dayFmt = new Intl.DateTimeFormat("en-CA", { timeZone: "Asia/Shanghai", year: "numeric", month: "2-digit", day: "2-digit" }); function joinRows(channel, data, allSaves) { const notes = new Map(data.notes.map((n) => [n.post_id, n])); const saves2 = allSaves[channel] || {}; return data.posts.map((p) => { const n = notes.get(p.post_id); const s = saves2[String(p.post_id)]; return { ...p, kind: n?.kind ?? null, score: n?.score ?? null, logline: n?.logline ?? null, motif: n?.motif ?? p.category, tags: n?.tags ?? null, plot_group: n?.plot_group ?? "h:" + (p.text || "").replace(/\s/g, ""), detail: n?.detail ?? null, saved: Boolean(s), saved_note: s?.note ?? null }; }); } function filterRows(rows, qs, { skipMotif = false, skipTag = false, only } = {}) { const get = (k) => only && !only.includes(k) ? "" : qs.get(k) || ""; const minChars = parseInt(get("minChars"), 10); const maxChars = parseInt(get("maxChars"), 10); const minScore = parseInt(get("minScore"), 10); const kinds = get("kinds").split(",").filter(Boolean); const motif = skipMotif ? "" : get("motif"); const tag = skipTag ? "" : get("tag"); const q = get("q").toLowerCase(); const saved2 = get("saved") === "1"; return rows.filter((r) => { if (r.category === "\u9891\u9053\u63A8\u5E7F") return false; if (minChars > 0 && (r.char_count ?? 0) < minChars) return false; if (maxChars > 0 && (r.char_count ?? 0) > maxChars) return false; if (minScore > 0 && !(r.score != null && r.score >= minScore)) return false; if (kinds.length && !(r.kind && kinds.includes(r.kind))) return false; if (motif && r.motif !== motif) return false; if (tag && !(r.tags || []).includes(tag)) return false; if (q && !((r.text || "").toLowerCase().includes(q) || (r.logline || "").toLowerCase().includes(q))) return false; if (saved2 && !r.saved) return false; return true; }); } var SORTS = { score: (a, b) => cmpDesc(a.score, b.score) || cmpDesc(a.reaction_total, b.reaction_total) || b.post_id - a.post_id, views: (a, b) => cmpDesc(a.views, b.views) || b.post_id - a.post_id, reactions: (a, b) => cmpDesc(a.reaction_total, b.reaction_total) || b.post_id - a.post_id, latest: (a, b) => b.post_id - a.post_id, long: (a, b) => cmpDesc(a.char_count, b.char_count) || b.post_id - a.post_id }; function groupBest(rows) { const groups = /* @__PURE__ */ new Map(); for (const r of rows) { const g = groups.get(r.plot_group); if (g) g.push(r); else groups.set(r.plot_group, [r]); } return groups; } var bestOf = (list) => [...list].sort((a, b) => cmpDesc(a.score, b.score) || cmpDesc(a.char_count, b.char_count) || a.post_id - b.post_id)[0]; function countBy(items, key) { const m = /* @__PURE__ */ new Map(); for (const it of items) { const k = key(it); if (k == null) continue; m.set(k, (m.get(k) || 0) + 1); } return [...m.entries()].sort((a, b) => b[1] - a[1]); } async function handle(method, path2, qs, body) { if (path2 === "auth") return json({ required: true, static: true, cloud: "r2" }); if (path2 === "auth/check") { await getIndex(true); return json({ ok: true }); } if (path2 === "channels") { if (method === "GET") { const idx = await getIndex(); return json({ cloud: true, items: idx.channels.map(channelView) }); } if (method === "POST") { const ch = parseChannel(String(body.channel || "")); if (!ch) return json({ error: "\u9891\u9053\u5730\u5740\u683C\u5F0F\u4E0D\u5BF9\uFF0C\u4F8B\u5982 https://t.me/chxpd \u6216 @chxpd" }, 400); await getIndex(true); const existing = index?.channels.find((c) => c.channel.toLowerCase() === ch.toLowerCase()); if (existing) return json({ channel: existing.channel }); let page; try { page = await fetchPage(ch, null, getRawFetch()); } catch (e) { return json({ error: e.message }, 400); } if (!page.isChannelPreview || page.posts.length === 0) return json( { error: !serverMode ? "\u8FD9\u4E2A\u9891\u9053\u6CA1\u6709\u516C\u5F00\u7684\u7F51\u9875\u9884\u89C8\uFF0C\u65E0\u6CD5\u6293\u53D6" : hasAccountFetcher() ? "\u7528\u5DF2\u767B\u5F55\u7684 Telegram \u8D26\u53F7\u4E5F\u6CA1\u8BFB\u5230\u5E16\u5B50\uFF0C\u8BF7\u786E\u8BA4\u9891\u9053\u5730\u5740\u6B63\u786E" : "\u8FD9\u4E2A\u9891\u9053\u5173\u95ED\u4E86\u7F51\u9875\u9884\u89C8\u3002\u70B9\u53F3\u4E0A\u89D2\u300CTelegram \u8D26\u53F7\u300D\u767B\u5F55\u540E\u5C31\u80FD\u6293\u53D6", needAccount: serverMode && !hasAccountFetcher() }, 400 ); await persist(ch, page.posts, { title: page.title, description: page.description, avatar: page.avatar, added_at: (/* @__PURE__ */ new Date()).toISOString(), last_synced_at: (/* @__PURE__ */ new Date()).toISOString(), backfill_status: "partial" }); if (body.backfill !== false) startBackfill(ch); return json({ channel: ch }); } } const chPath = path2.match(/^channels\/([A-Za-z0-9_]+)(\/backfill)?$/); if (chPath) { const ch = chPath[1]; if (chPath[2] && method === "POST") return json({ started: startBackfill(ch) }); if (method === "DELETE") { const bf = backfills.get(ch); if (bf) bf.stop = true; backfills.delete(ch); await withLock(ch, async () => { await deleteChannelData(ch); const idx = await loadIndex(); idx.channels = idx.channels.filter((c) => c.channel !== ch); await saveIndex(idx); index = idx; indexAt = Date.now(); chans.delete(ch); }); await mutateSaves((s) => { delete s[ch]; }); return json({ ok: true }); } } if (path2 === "posts/sync" && method === "POST") { const ch = parseChannel(String(body.channel || "")) || "chxpd"; await getIndex(); const pages = Math.min(Math.max(parseInt(String(body.pages), 10) || 2, 1), 20); if (body.older) { if (backfills.has(ch)) return json({ fetched: 0, note: "\u6B63\u5728\u540E\u53F0\u6536\u96C6\u5168\u90E8\u5386\u53F2\u4E2D" }); return json(await syncOlder(ch, pages)); } return json(await syncNew(ch, Math.max(pages, 5))); } if (path2 === "posts/recategorize" || path2 === "inspo/import" || path2 === "publish") return json({ error: "\u5728\u7EBF\u7248\u4E0D\u652F\u6301\u8FD9\u4E2A\u64CD\u4F5C" }, 400); const channelParam = qs.get("channel") || String(body.channel || "") || "chxpd"; if (path2 === "posts/stats") { const { info, data } = await getChannel(channelParam); const posts = data.posts; const avg = (xs) => { const v = xs.filter((x) => x != null); return v.length ? Math.round(v.reduce((a, b) => a + b, 0) / v.length) : null; }; const dates = posts.map((p) => p.posted_at).filter(Boolean).sort(); const ids = posts.map((p) => p.post_id); const catGroups = /* @__PURE__ */ new Map(); for (const p of posts) { const k = p.category || "\u5176\u4ED6"; if (!catGroups.has(k)) catGroups.set(k, []); catGroups.get(k).push(p); } const dayGroups = /* @__PURE__ */ new Map(); for (const p of posts) { if (!p.posted_at) continue; const d = dayFmt.format(new Date(p.posted_at)); if (!dayGroups.has(d)) dayGroups.set(d, []); dayGroups.get(d).push(p); } const emo = /* @__PURE__ */ new Map(); for (const p of posts) for (const r of p.reactions || []) emo.set(r.emoji, (emo.get(r.emoji) || 0) + (r.count || 0)); return json({ channel: info?.channel, state: info ? { title: info.title, description: info.description, avatar: info.avatar, last_synced_at: info.last_synced_at, backfill_status: info.backfill_status } : null, summary: { total: posts.length, oldest_id: ids.length ? Math.min(...ids) : null, newest_id: ids.length ? Math.max(...ids) : null, oldest_at: dates[0] ?? null, newest_at: dates[dates.length - 1] ?? null, avg_views: avg(posts.map((p) => p.views)), avg_chars: avg(posts.map((p) => p.char_count)), total_reactions: posts.reduce((a, p) => a + (p.reaction_total || 0), 0) }, categories: [...catGroups.entries()].map(([category, list]) => ({ category, n: list.length, avg_views: avg(list.map((p) => p.views)) })).sort((a, b) => b.n - a.n), daily: [...dayGroups.entries()].sort((a, b) => a[0].localeCompare(b[0])).map(([day, list]) => ({ day, n: list.length, avg_views: avg(list.map((p) => p.views)) })), emojis: [...emo.entries()].sort((a, b) => b[1] - a[1]).slice(0, 8).map(([emoji, n]) => ({ emoji, n })) }); } if (path2 === "posts") { const { info, data } = await getChannel(channelParam); if (info?.last_synced_at && Date.now() - Date.parse(info.last_synced_at) > STALE_MS) syncNew(info.channel, 5).catch((e) => console.warn("bg sync", e)); const cat = qs.get("category") || ""; const q = (qs.get("q") || "").toLowerCase(); let list = data.posts.filter((p) => { if (qs.get("hidePromo") === "1" && cat !== "\u9891\u9053\u63A8\u5E7F" && p.category === "\u9891\u9053\u63A8\u5E7F") return false; if (cat && cat !== "\u5168\u90E8" && p.category !== cat) return false; if (q && !(p.text || "").toLowerCase().includes(q)) return false; return true; }); const sort = SORTS[qs.get("sort") || "latest"] || SORTS.latest; list = [...list].sort(sort); const limit = Math.min(parseInt(qs.get("limit") || "", 10) || 30, 100); const offset = Math.max(parseInt(qs.get("offset") || "", 10) || 0, 0); return json({ channel: info?.channel, total: list.length, items: list.slice(offset, offset + limit) }); } if (path2 === "inspo/saves") { if (method === "GET") { const all = await getSaves(); const want = qs.get("channel") || "chxpd"; const items = []; for (const ch of Object.keys(all)) { if (want !== "*" && ch !== want) continue; const ids = Object.keys(all[ch]); if (!ids.length) continue; let rows = []; try { const { info, data } = await getChannel(ch); if (info?.channel !== ch) continue; rows = joinRows(ch, data, all); } catch { continue; } const byId = new Map(rows.map((r) => [String(r.post_id), r])); for (const id of ids) { const r = byId.get(id); if (r) items.push({ ...r, channel: ch, note: all[ch][id].note, created_at: all[ch][id].created_at }); } } items.sort((a, b) => String(b.created_at).localeCompare(String(a.created_at))); return json({ items }); } if (method === "POST") { const id = String(parseInt(String(body.post_id), 10)); const ch = String(body.channel || "chxpd"); const s = await mutateSaves((s2) => { s2[ch] = s2[ch] || {}; const prev = s2[ch][id]; s2[ch][id] = { note: body.note != null ? String(body.note) : prev?.note ?? null, created_at: prev?.created_at ?? (/* @__PURE__ */ new Date()).toISOString() }; }); return json({ channel: ch, post_id: Number(id), ...s[ch][id] }); } } if (path2.startsWith("inspo/saves/") && method === "DELETE") { const id = path2.split("/")[2]; const ch = qs.get("channel") || "chxpd"; await mutateSaves((s) => { if (s[ch]) delete s[ch][id]; }); return json({ ok: true }); } if (path2 === "inspo" || path2 === "inspo/funnel" || path2 === "inspo/group") { const { info, data } = await getChannel(channelParam); const rows = joinRows(info?.channel || channelParam, data, await getSaves()); if (path2 === "inspo/group") { const key = qs.get("key") || ""; const items = rows.filter((r) => r.plot_group === key).sort((a, b) => cmpDesc(a.score, b.score) || cmpDesc(a.char_count, b.char_count)); return json({ items }); } if (path2 === "inspo") { const filtered = filterRows(rows, qs); const groups = groupBest(filtered); const dedupe = qs.get("dedupe") !== "0"; let list = dedupe ? [...groups.values()].map((g) => ({ ...bestOf(g), group_size: g.length })) : filtered.map((r) => ({ ...r, group_size: groups.get(r.plot_group).length })); const sort = qs.get("sort") || "score"; if (sort === "random") { list = [...list]; for (let i = list.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [list[i], list[j]] = [list[j], list[i]]; } } else list.sort(SORTS[sort] || SORTS.score); const limit = Math.min(parseInt(qs.get("limit") || "", 10) || 20, 100); const offset = Math.max(parseInt(qs.get("offset") || "", 10) || 0, 0); return json({ total: list.length, items: list.slice(offset, offset + limit) }); } const steps = []; steps.push({ label: "\u5168\u90E8\u5E16\u5B50", n: rows.length }); steps.push({ label: "\u53BB\u6389\u5E7F\u544A", n: rows.filter((r) => r.category !== "\u9891\u9053\u63A8\u5E7F").length }); const s1 = ["minChars", "maxChars"]; steps.push({ label: `\u5B57\u6570 ${qs.get("minChars") || 60}+`, n: filterRows(rows, qs, { only: s1 }).length }); const s2 = [...s1, "kinds"]; const s2rows = filterRows(rows, qs, { only: s2 }); steps.push({ label: "\u53EA\u7559\u6240\u9009\u7C7B\u578B", n: s2rows.length }); const s3 = [...s2, "minScore"]; steps.push({ label: `\u7D20\u6750\u5206 ${qs.get("minScore") || 1}+`, n: filterRows(rows, qs, { only: s3 }).length }); const s4rows = filterRows(rows, qs); if (qs.get("motif") || qs.get("tag") || qs.get("q") || qs.get("saved") === "1") steps.push({ label: "\u6BCD\u9898/\u5143\u7D20/\u641C\u7D22", n: s4rows.length }); if (qs.get("dedupe") !== "0") steps.push({ label: "\u540C\u7C7B\u4E8B\u4EF6\u53EA\u7559\u6700\u4F73", n: new Set(s4rows.map((r) => r.plot_group)).size }); const motifs = countBy(filterRows(rows, qs, { skipMotif: true }), (r) => r.motif).map(([motif, n]) => ({ motif, n })); const tagRows = filterRows(rows, qs, { skipTag: true }); const tags = countBy(tagRows.flatMap((r) => r.tags || []), (t) => t).map(([tag, n]) => ({ tag, n })); const scoreDist = countBy(s2rows, (r) => r.score == null ? null : String(r.score)).map(([score, n]) => ({ score: Number(score), n })).sort((a, b) => a.score - b.score); return json({ steps, motifs, tags, scoreDist, annotated: data.notes.length }); } return json({ error: "not found" }, 404); } async function handleApi(method, path2, qs, body) { try { return await handle(method, path2.replace(/^\/+|\/+$/g, ""), qs, body); } catch (e) { if (e instanceof AuthError) return json({ error: "password required" }, 401); console.error(e); return json({ error: e.message || "\u52A0\u8F7D\u5931\u8D25" }, 500); } } // discover.ts init_define_import_meta_env(); var import_telegram2 = __toESM(require_telegram()); // tgaccount.ts init_define_import_meta_env(); var import_crypto = __toESM(require("crypto")); var import_big_integer = __toESM(require_BigInteger()); var import_telegram = __toESM(require_telegram()); var import_sessions = __toESM(require_sessions()); var FILE = "telegram-account.json"; var secretKey; var client = null; var saved = null; var pending = null; var lastError = null; function encrypt(data) { const iv = import_crypto.default.randomBytes(12); const c = import_crypto.default.createCipheriv("aes-256-gcm", secretKey, iv); const body = Buffer.concat([c.update(JSON.stringify(data), "utf8"), c.final()]); return { v: 1, iv: iv.toString("base64"), tag: c.getAuthTag().toString("base64"), data: body.toString("base64") }; } function decrypt(box) { const d = import_crypto.default.createDecipheriv("aes-256-gcm", secretKey, Buffer.from(box.iv, "base64")); d.setAuthTag(Buffer.from(box.tag, "base64")); return JSON.parse(Buffer.concat([d.update(Buffer.from(box.data, "base64")), d.final()]).toString("utf8")); } var newClient = (apiId, apiHash, session2 = "") => { const c = new import_telegram.TelegramClient(new import_sessions.StringSession(session2), apiId, apiHash, { connectionRetries: 5, floodSleepThreshold: 120, deviceModel: "xiaoshuo-server", appVersion: "1.0" }); c.setLogLevel("error"); return c; }; var ERRORS = { API_ID_INVALID: "API ID \u6216 API Hash \u4E0D\u5BF9\uFF0C\u8BF7\u5230 my.telegram.org \u91CD\u65B0\u590D\u5236", API_ID_PUBLISHED_FLOOD: "API ID \u4E0D\u53EF\u7528\uFF0C\u8BF7\u5230 my.telegram.org \u91CD\u65B0\u521B\u5EFA\u4E00\u4E2A", PHONE_NUMBER_INVALID: "\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF0C\u8BF7\u5E26\u56FD\u5BB6\u533A\u53F7\uFF0C\u4F8B\u5982 +8613800000000", PHONE_NUMBER_BANNED: "\u8FD9\u4E2A\u624B\u673A\u53F7\u5DF2\u88AB Telegram \u5C01\u7981", PHONE_NUMBER_FLOOD: "\u8FD9\u4E2A\u624B\u673A\u53F7\u8BF7\u6C42\u9A8C\u8BC1\u7801\u592A\u9891\u7E41\uFF0C\u8BF7\u8FC7\u4E00\u6BB5\u65F6\u95F4\u518D\u8BD5", PHONE_CODE_INVALID: "\u9A8C\u8BC1\u7801\u4E0D\u5BF9\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165", PHONE_CODE_EXPIRED: "\u9A8C\u8BC1\u7801\u5DF2\u8FC7\u671F\uFF0C\u8BF7\u91CD\u65B0\u53D1\u9001", PHONE_CODE_EMPTY: "\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801", PASSWORD_HASH_INVALID: "\u4E24\u6B65\u9A8C\u8BC1\u5BC6\u7801\u4E0D\u5BF9", SESSION_REVOKED: "\u767B\u5F55\u5DF2\u5728 Telegram \u91CC\u88AB\u9000\u51FA\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55", AUTH_KEY_UNREGISTERED: "\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55", USERNAME_NOT_OCCUPIED: "\u6CA1\u6709\u8FD9\u4E2A\u9891\u9053\uFF0C\u8BF7\u68C0\u67E5\u5730\u5740", USERNAME_INVALID: "\u9891\u9053\u5730\u5740\u683C\u5F0F\u4E0D\u5BF9", CHANNEL_PRIVATE: "\u8FD9\u662F\u79C1\u5BC6\u9891\u9053\uFF0C\u8BF7\u5148\u7528\u8FD9\u4E2A Telegram \u8D26\u53F7\u52A0\u5165\u5B83", CHANNEL_INVALID: "\u65E0\u6CD5\u8BFB\u53D6\u8FD9\u4E2A\u9891\u9053" }; function friendly(e) { const err = e; const code = err.errorMessage || ""; if (code.startsWith("FLOOD_WAIT") || err.seconds) return `Telegram \u9650\u5236\u4E86\u8BF7\u6C42\u9891\u7387\uFF0C\u8BF7 ${Math.ceil((err.seconds || 60) / 60)} \u5206\u949F\u540E\u518D\u8BD5`; if (ERRORS[code]) return ERRORS[code]; const m = String(err.message || e); if (/Cannot find any entity|No user has/i.test(m)) return "\u6CA1\u6709\u8FD9\u4E2A\u9891\u9053\uFF0C\u6216\u8FD9\u4E2A\u8D26\u53F7\u770B\u4E0D\u5230\u5B83\uFF08\u79C1\u5BC6\u9891\u9053\u9700\u8981\u5148\u52A0\u5165\uFF09"; return m.slice(0, 200); } function describeMe(me) { return { name: [me.firstName, me.lastName].filter(Boolean).join(" ") || me.username || "\u8D26\u53F7", username: me.username || null }; } var maskPhone = (p) => p.length > 6 ? `${p.slice(0, 3)}****${p.slice(-3)}` : p; var entities = /* @__PURE__ */ new Map(); var PEERS = "telegram-peers.json"; var peerStore = { owner: "", peers: {} }; var peerSaveTimer = null; function rememberPeer(key, p) { let rec = null; if (p instanceof import_telegram.Api.InputPeerChannel) rec = { id: p.channelId.toString(), hash: p.accessHash.toString(), type: "channel" }; else if (p instanceof import_telegram.Api.InputPeerChat) rec = { id: p.chatId.toString(), hash: "0", type: "chat" }; if (!rec) return; peerStore.peers[key] = rec; if (peerSaveTimer) clearTimeout(peerSaveTimer); peerSaveTimer = setTimeout(() => storePrivate(PEERS, peerStore).catch(() => { }), 5e3); } var hasCachedPeer = (username) => { const key = username.toLowerCase(); return entities.has(key) || !!peerStore.peers[key]; }; async function resolvePeer(username) { const c = client; if (!c) throw new Error("Telegram \u8D26\u53F7\u672A\u767B\u5F55"); const key = username.toLowerCase(); const hit = entities.get(key); if (hit) return hit; const rec = peerStore.peers[key]; if (rec) { const p2 = rec.type === "channel" ? new import_telegram.Api.InputPeerChannel({ channelId: (0, import_big_integer.default)(rec.id), accessHash: (0, import_big_integer.default)(rec.hash) }) : new import_telegram.Api.InputPeerChat({ chatId: (0, import_big_integer.default)(rec.id) }); entities.set(key, p2); return p2; } await throttle(); const p = await c.getInputEntity(username); entities.set(key, p); rememberPeer(key, p); return p; } var nextCall = 0; var sleep2 = (ms) => new Promise((r) => setTimeout(r, ms)); async function throttle() { const wait = nextCall - Date.now(); nextCall = Math.max(Date.now(), nextCall) + 1200; if (wait > 0) await sleep2(wait); } function toPost(m) { const text = (m.message || "").trim(); if (!text) return null; const reactions = (m.reactions?.results || []).map((r) => ({ emoji: r.reaction instanceof import_telegram.Api.ReactionEmoji ? r.reaction.emoticon : "\u2605", count: r.count })); return { post_id: m.id, text, posted_at: new Date(m.date * 1e3).toISOString(), views: m.views ?? null, reactions, reaction_total: reactions.reduce((s, r) => s + r.count, 0), photos: [], category: categorize(text), char_count: [...text].length }; } var metaCache = /* @__PURE__ */ new Map(); async function fetchViaAccount(channel, before) { const c = client; if (!c) throw new Error("Telegram \u8D26\u53F7\u672A\u767B\u5F55"); try { const key = channel.toLowerCase(); const peer = await resolvePeer(channel); let title = channel; let description = ""; let avatar = ""; const cached = metaCache.get(key); if (before == null && cached && Date.now() - cached.at < 6 * 36e5) { ; ({ title, description, avatar } = cached); } else if (before == null) { await throttle(); const ent = await c.getEntity(peer); if (ent instanceof import_telegram.Api.Channel) { title = ent.title; try { const full = await c.invoke(new import_telegram.Api.channels.GetFullChannel({ channel: ent })); description = full.fullChat.about || ""; } catch { } try { const photo = await c.downloadProfilePhoto(ent, { isBig: false }); if (photo && photo.length) avatar = `data:image/jpeg;base64,${photo.toString("base64")}`; } catch { } } else if (ent instanceof import_telegram.Api.User) { throw new Error("\u8FD9\u662F\u4E2A\u4EBA\u8D26\u53F7\uFF0C\u4E0D\u662F\u9891\u9053"); } else if (ent instanceof import_telegram.Api.Chat) { title = ent.title; } metaCache.set(key, { title, description, avatar, at: Date.now() }); } let offsetId = before ?? 0; for (let round = 0; round < 10; round++) { await throttle(); const msgs = await c.getMessages(peer, { limit: 100, offsetId }); if (!msgs.length) return { title, description, avatar, posts: [], isChannelPreview: true }; const posts = msgs.filter((m) => m instanceof import_telegram.Api.Message).map(toPost).filter((p) => !!p); if (posts.length) return { title, description, avatar, posts, isChannelPreview: true }; offsetId = Math.min(...msgs.map((m) => m.id)); if (offsetId <= 1) return { title, description, avatar, posts: [], isChannelPreview: true }; } return { title, description, avatar, posts: [], isChannelPreview: true }; } catch (e) { const msg = friendly(e); if (/登录已/.test(msg)) await dropSession(msg); throw new Error(msg); } } async function dropSession(reason) { lastError = reason; setAccountFetcher(null); const c = client; client = null; saved = null; entities.clear(); await deletePrivate(FILE).catch(() => { }); await c?.disconnect().catch(() => { }); } async function activate(c, s) { client = c; saved = s; lastError = null; entities.clear(); const owner = s.username || s.phone; peerStore = await loadPrivate(PEERS, { owner, peers: {} }).catch(() => ({ owner, peers: {} })); if (peerStore.owner !== owner) peerStore = { owner, peers: {} }; setAccountFetcher(fetchViaAccount); } async function initAccount(secret) { secretKey = import_crypto.default.createHash("sha256").update(`xiaoshuo-telegram:${secret}`).digest(); try { const box = await loadPrivate(FILE, null); if (!box) return; const s = decrypt(box); const c = newClient(s.apiId, s.apiHash, s.session); await c.connect(); if (!await c.checkAuthorization()) return dropSession("\u767B\u5F55\u5DF2\u5931\u6548\uFF0C\u8BF7\u91CD\u65B0\u767B\u5F55"); await activate(c, s); console.log("Telegram account connected:", s.name); } catch (e) { lastError = `Telegram \u8D26\u53F7\u8FDE\u63A5\u5931\u8D25\uFF1A${friendly(e)}`; console.error(lastError); } } function accountStatus() { return { connected: !!saved, name: saved?.name ?? null, username: saved?.username ?? null, phone: saved ? maskPhone(saved.phone) : null, step: pending?.step ?? null, hint: pending?.hint ?? null, error: lastError }; } async function loginStart(body) { const apiId = parseInt(String(body.apiId || "").trim(), 10); const apiHash = String(body.apiHash || "").trim(); const phone = String(body.phone || "").replace(/[\s-]/g, ""); if (!apiId || !/^[0-9a-f]{32}$/i.test(apiHash)) throw new Error("\u8BF7\u586B\u5199\u6B63\u786E\u7684 API ID\uFF08\u6570\u5B57\uFF09\u548C API Hash\uFF0832 \u4F4D\uFF09"); if (!/^\+?\d{6,16}$/.test(phone)) throw new Error("\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u5BF9\uFF0C\u8BF7\u5E26\u56FD\u5BB6\u533A\u53F7\uFF0C\u4F8B\u5982 +8613800000000"); await pending?.client.disconnect().catch(() => { }); pending = null; const c = newClient(apiId, apiHash); try { await c.connect(); const r = await c.sendCode({ apiId, apiHash }, phone.startsWith("+") ? phone : `+${phone}`); pending = { client: c, apiId, apiHash, phone, phoneCodeHash: r.phoneCodeHash, step: "code" }; return { step: "code", viaApp: r.isCodeViaApp }; } catch (e) { await c.disconnect().catch(() => { }); throw new Error(friendly(e)); } } async function finish(p) { const me = await p.client.getMe(); const s = { apiId: p.apiId, apiHash: p.apiHash, session: p.client.session.save(), ...describeMe(me), phone: p.phone }; await storePrivate(FILE, encrypt(s)); const old = client; await activate(p.client, s); if (old && old !== p.client) await old.disconnect().catch(() => { }); pending = null; return { done: true, ...accountStatus() }; } async function loginCode(body) { const p = pending; if (!p || p.step !== "code") throw new Error("\u8BF7\u5148\u53D1\u9001\u9A8C\u8BC1\u7801"); const code = String(body.code || "").replace(/\D/g, ""); if (!code) throw new Error("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801"); try { await p.client.invoke(new import_telegram.Api.auth.SignIn({ phoneNumber: p.phone.startsWith("+") ? p.phone : `+${p.phone}`, phoneCodeHash: p.phoneCodeHash, phoneCode: code })); return await finish(p); } catch (e) { if (e.errorMessage === "SESSION_PASSWORD_NEEDED") { p.step = "password"; try { const info = await p.client.invoke(new import_telegram.Api.account.GetPassword()); p.hint = info.hint || void 0; } catch { } return { step: "password", hint: p.hint ?? null }; } throw new Error(friendly(e)); } } async function loginPassword(body) { const p = pending; if (!p || p.step !== "password") throw new Error("\u8BF7\u5148\u8F93\u5165\u9A8C\u8BC1\u7801"); const password = String(body.password || ""); if (!password) throw new Error("\u8BF7\u8F93\u5165\u4E24\u6B65\u9A8C\u8BC1\u5BC6\u7801"); let failure = null; try { await p.client.signInWithPassword( { apiId: p.apiId, apiHash: p.apiHash }, { password: async () => password, onError: async (e) => { failure = e; return true; } } ); } catch (e) { failure = failure || e; } if (failure || !await p.client.checkAuthorization()) throw new Error(friendly(failure || new Error("\u767B\u5F55\u5931\u8D25"))); return await finish(p); } async function logout() { await pending?.client.disconnect().catch(() => { }); pending = null; const c = client; if (c) await c.invoke(new import_telegram.Api.auth.LogOut()).catch(() => { }); await dropSession(""); lastError = null; return accountStatus(); } var getClient = () => client; async function throttled(fn) { await throttle(); return fn(); } // discover.ts var FILE2 = "discover.json"; var BOT = "jisou"; var sleep3 = (ms) => new Promise((r) => setTimeout(r, ms)); var state = null; var job = null; var saveTimer = null; var DROPPED = ["\u6295\u7A3F"]; function migrate(s) { s.keywords = s.keywords.filter((k) => !DROPPED.includes(k)); for (const k of DROPPED) delete s.searched[k]; for (const c of s.items) { c.keywords = c.keywords.filter((k) => !DROPPED.includes(k)); } const queued = new Set(s.queue.map((q) => q.toLowerCase())); const stale = s.items.filter((c) => !c.ignored && c.status !== "pending" && c.samples_v !== SAMPLES_V && !queued.has(c.username.toLowerCase())).sort((a, b) => Number(!!b.suitable) - Number(!!a.suitable) || (b.score ?? 0) - (a.score ?? 0)); for (const c of stale) s.queue.push(c.username); } async function load() { if (!state) { state = await loadPrivate(FILE2, { updated_at: (/* @__PURE__ */ new Date()).toISOString(), bot: BOT, keywords: [], searched: {}, running: false, phase: "", queue: [], items: [] }); migrate(state); } return state; } async function save(now = false) { if (!state) return; state.updated_at = (/* @__PURE__ */ new Date()).toISOString(); if (saveTimer) clearTimeout(saveTimer); if (now) return storePrivate(FILE2, state); saveTimer = setTimeout(() => storePrivate(FILE2, state).catch((e) => console.error("discover save", e)), 3e3); } var parseMembers = (s) => { const m = s.match(/([\d.]+)\s*([kKwW万]?)\s*$/); if (!m) return null; let n = parseFloat(m[1]); if (/k/i.test(m[2])) n *= 1e3; if (/[wW万]/.test(m[2])) n *= 1e4; return Math.round(n); }; function parseResults(m) { const text = m.message || ""; const lines = text.split("\n"); const out = []; for (const e of m.entities || []) { if (!(e instanceof import_telegram2.Api.MessageEntityTextUrl)) continue; const u = e.url.match(/^https?:\/\/t\.me\/([A-Za-z][A-Za-z0-9_]{3,63})(\?.*)?$/); if (!u) continue; const title = text.slice(e.offset, e.offset + e.length).trim(); let pos = 0; let line = ""; for (const l of lines) { if (e.offset >= pos && e.offset <= pos + l.length) { line = l; break; } pos += l.length + 1; } const kind = line.startsWith("\u{1F465}") ? "group" : line.startsWith("\u{1F4E2}") ? "channel" : "unknown"; out.push({ username: u[1], title, kind, members: parseMembers(line), ad: /[?&]ad=/.test(u[2] || "") }); } return out; } var hasNext = (m) => m.replyMarkup instanceof import_telegram2.Api.ReplyInlineMarkup && m.replyMarkup.rows.some((r) => r.buttons.some((b) => /下一页/.test(b.text))); function buttonData(m, emoji) { if (!(m.replyMarkup instanceof import_telegram2.Api.ReplyInlineMarkup)) return null; for (const r of m.replyMarkup.rows) for (const b of r.buttons) if (b instanceof import_telegram2.Api.KeyboardButtonCallback && b.text === emoji) return Buffer.from(b.data).toString(); return null; } async function readMsg(peer, id) { const c = getClient(); const [m] = await c.getMessages(peer, { ids: [id] }); return m; } async function searchKeyword(keyword, add, ctl) { const c = getClient(); if (!c) throw new Error("\u8BF7\u5148\u767B\u5F55 Telegram \u8D26\u53F7"); const bot = await throttled(() => c.getInputEntity(BOT)); const sent = await c.sendMessage(bot, { message: keyword }); let reply; for (let i = 0; i < 15 && !reply; i++) { await sleep3(1500); const msgs = await c.getMessages(bot, { limit: 5, minId: sent.id }); reply = msgs.find((m) => !m.out && m.replyMarkup); } if (!reply) throw new Error("\u641C\u7D22\u673A\u5668\u4EBA\u6CA1\u6709\u56DE\u590D"); add(parseResults(reply)); const template = buttonData(reply, "\u{1F4E2}") || buttonData(reply, "\u{1F465}") || "/s 0 0 channel none 0 18 10"; for (const [type, maxPages] of [ ["channel", 6], ["group", 3] ]) { let lastText = ""; for (let page = 0; page < maxPages && !ctl.stop; page++) { const parts = template.split(" "); parts[3] = type; parts[5] = String(page); await c.invoke(new import_telegram2.Api.messages.GetBotCallbackAnswer({ peer: bot, msgId: reply.id, data: Buffer.from(parts.join(" ")) })).catch(() => { }); let m; for (let i = 0; i < 6; i++) { await sleep3(2e3); m = await readMsg(bot, reply.id); if (m && m.message !== lastText) break; } if (!m || m.message === lastText) break; lastText = m.message; const found = parseResults(m); if (!found.length) break; add(found.map((f) => ({ ...f, kind: f.kind === "unknown" ? type : f.kind }))); if (!hasNext(m)) break; } } } var PROMO = /(t\.me\/|@[A-Za-z][A-Za-z0-9_]{4,}|推广|广告|联系客服|上车|价格|代理|招商|飞机号|加群|进群|入群|频道推荐|互推|资源|福利|下载|点击|优惠)/; var NARRATIVE = /(那天|后来|当时|之后|那时|有一次|记得|小时候|去年|前几天|昨天|今天|那年|一开始|最后|结果|突然|没想到|第一次)/g; var ADULT = /(做爱|性爱|性交|约炮|鸡巴|肉棒|阴茎|阴道|小穴|骚逼|内射|口交|自慰|高潮|绿帽|母狗|调教|淫|奶子|乳房|啪啪|开房)/; var isAd = (t) => { const len = [...t].length; if (len < 250 && PROMO.test(t)) return true; const links = (t.match(/t\.me\/|https?:\/\/|@[A-Za-z][A-Za-z0-9_]{4,}/g) || []).length; return links >= 4 && links * 60 > len; }; var SAMPLES_V = 4; var SAMPLE_COUNT = 10; var READ_COUNT = 30; var MIN_HITS = 6; var TOPIC_TAG = /#(树洞|情感|故事|秘密|倾诉|忏悔|真实经历|心事|吐槽|告白|表白|情绪|日记)/; var TOPIC_WORDS = /(喜欢|爱上|爱你|爱他|爱她|恋爱|暗恋|表白|分手|复合|前任|前男友|前女友|男朋友|女朋友|男友|女友|对象|老公|老婆|丈夫|妻子|婚姻|结婚|离婚|出轨|劈腿|绿帽|偷情|小三|暧昧|相亲|约会|心动|思念|想念|想你|难过|伤心|心痛|心碎|委屈|孤独|寂寞|崩溃|绝望|压抑|焦虑|抑郁|失眠|哭|眼泪|后悔|遗憾|愧疚|内疚|对不起|原谅|心里|心情|情绪|感情|感觉|害怕|自卑|释怀|放下|回忆|青春|初恋|妈妈|爸爸|父母|家里|闹掰|闺蜜|兄弟|同学|同事|室友|秘密|不敢|说不出口|没人知道|憋|坦白|忏悔|倾诉|树洞|经历|那年|那天|当时|后来|小时候|第一次|故事|怎么办|不知道该)/g; var ASKING = /(求推荐|有没有|哪里有|哪家|多少钱|价格|怎么买|出租|出售|收购|招聘|兼职|代购|联系方式|私聊|加我|vx|微信|qq|QQ)/; function topicHit(t) { const text = t.trim(); const len = [...text].length; if (len < 25) return false; const words = new Set(text.match(TOPIC_WORDS) || []).size; const me = (text.match(/我/g) || []).length; if (ASKING.test(text) && len < 120) return false; if (TOPIC_TAG.test(text) && len >= 40) return true; if (words >= 3) return true; if (words >= 2 && me >= 2) return true; if (words >= 1 && me >= 3 && len >= 60) return true; return false; } var nonAd = (posts) => posts.map((p) => ({ ...p, text: p.text.trim() })).filter((p) => p.text && !isAd(p.text)); var enough = (posts) => nonAd(posts).length >= READ_COUNT; function judge(texts) { const posts = texts.map((t) => t.trim()).filter(Boolean); const n = posts.length; const lens = posts.map((t) => [...t].length).sort((a, b) => a - b); const median = n ? lens[Math.floor(n / 2)] : 0; const avg = n ? Math.round(lens.reduce((s, x) => s + x, 0) / n) : 0; const isPromo = isAd; const isStory = (t) => { const len = [...t].length; if (len < 80 || isPromo(t)) return false; const me = (t.match(/我/g) || []).length; const narr = (t.match(NARRATIVE) || []).length; const people = (t.match(/[他她]/g) || []).length; return me >= 3 || narr >= 2 || people >= 3 && len >= 150; }; const promo = n ? posts.filter(isPromo).length / n : 0; const story = n ? posts.filter(isStory).length / n : 0; const long = n ? posts.filter((t) => [...t].length >= 300).length / n : 0; const adult = n ? posts.filter((t) => ADULT.test(t)).length / n >= 0.2 : false; let verdict; if (n < 5) verdict = "\u5185\u5BB9\u592A\u5C11"; else if (promo >= 0.5) verdict = "\u5E7F\u544A\u5BFC\u822A"; else if (story >= 0.35 && (median >= 300 || long >= 0.4)) verdict = "\u957F\u6587\u6545\u4E8B"; else if (story >= 0.3) verdict = "\u77ED\u6587\u6545\u4E8B"; else if (median < 40) verdict = "\u95F2\u804A\u7FA4"; else verdict = "\u5176\u4ED6"; const score = Math.round(100 * (0.6 * story + 0.25 * Math.min(1, median / 400) + 0.15 * (1 - promo))); return { verdict, suitable: verdict === "\u957F\u6587\u6545\u4E8B" || verdict === "\u77ED\u6587\u6545\u4E8B", score, adult, stats: { n, median, avg, long: +long.toFixed(2), story: +story.toFixed(2), promo: +promo.toFixed(2) } }; } async function viaWeb(c) { const p1 = await fetchWebPage(c.username, null); if (!p1.isChannelPreview || !p1.posts.length) return null; let posts = p1.posts; const raw = () => [...posts].sort((a, b) => b.post_id - a.post_id).map((p) => ({ text: p.text || "", at: p.posted_at ?? null })); for (let page = 0; page < 10 && !enough(raw()); page++) { const min = Math.min(...posts.map((p) => p.post_id)); if (min <= 1) break; const more = (await fetchWebPage(c.username, min).catch(() => null))?.posts ?? []; if (!more.length) break; posts = posts.concat(more); } const all = raw(); return { posts: all, title: p1.title, last: all[0]?.at ?? null, kind: "channel" }; } async function viaAccount(c) { const cl = getClient(); if (!cl) throw new Error("\u9700\u8981\u767B\u5F55 Telegram \u8D26\u53F7"); await sleep3(1500); const peer = await resolvePeer(c.username); const ent = await throttled(() => cl.getEntity(peer)); if (ent instanceof import_telegram2.Api.User) throw new Error("\u8FD9\u662F\u4E2A\u4EBA\u8D26\u53F7\u6216\u673A\u5668\u4EBA"); const msgs = []; let offsetId = 0; for (let round = 0; round < 5; round++) { const batch = await throttled(() => cl.getMessages(ent, { limit: 100, offsetId })); if (!batch.length) break; msgs.push(...batch.filter((m) => m instanceof import_telegram2.Api.Message)); offsetId = Math.min(...batch.map((m) => m.id)); const posts2 = msgs.filter((m) => m.message?.trim()).map((m) => ({ text: m.message, at: null })); if (offsetId <= 1 || enough(posts2)) break; } const posts = msgs.filter((m) => !!m.message?.trim()).map((m) => ({ text: m.message, at: new Date(m.date * 1e3).toISOString() })); const kind = ent instanceof import_telegram2.Api.Channel ? ent.megagroup || ent.gigagroup ? "group" : "channel" : "group"; const first = msgs.find((m) => m instanceof import_telegram2.Api.Message); return { posts, title: ent.title, last: first ? new Date(first.date * 1e3).toISOString() : null, kind }; } async function recentTexts(c) { try { return await viaAccount(c); } catch (e) { if (c.kind === "group") throw e; const w = await viaWeb(c).catch(() => null); if (w) return w; throw e; } } async function autoAdd(c) { const list = await (await handleApi("GET", "channels", new URLSearchParams(), {})).json(); if ((list.items || []).some((x) => x.channel.toLowerCase() === c.username.toLowerCase())) return; const r = await handleApi("POST", "channels", new URLSearchParams(), { channel: c.username }); if (r.ok) { c.added_at = (/* @__PURE__ */ new Date()).toISOString(); c.add_error = void 0; console.log("discover: added", c.username, c.topic); } else { c.add_error = (await r.json().catch(() => ({}))).error || "\u52A0\u5165\u5931\u8D25"; } } async function check(c) { try { const r = await recentTexts(c); const read = nonAd(r.posts).slice(0, READ_COUNT); const hits = read.filter((p) => topicHit(p.text)).length; Object.assign(c, judge(r.posts.slice(0, 30).map((p) => p.text)), { samples: read.slice(0, SAMPLE_COUNT).map((p) => ({ text: p.text, chars: [...p.text].length, at: p.at, hit: topicHit(p.text) })), samples_v: SAMPLES_V, topic: { hits, n: read.length }, qualified: hits >= MIN_HITS, status: "checked", title: r.title || c.title, kind: r.kind || c.kind, last_post_at: r.last ?? null, checked_at: (/* @__PURE__ */ new Date()).toISOString(), error: void 0 }); c.suitable = !!c.qualified; if (c.qualified && !c.ignored) await autoAdd(c); } catch (e) { const err = e; if (err.seconds && err.seconds > 60) throw e; c.status = "error"; c.error = friendly(e); c.checked_at = (/* @__PURE__ */ new Date()).toISOString(); } } async function runJob(keywords, ctl) { const s = await load(); s.running = true; try { const byName = new Map(s.items.map((c) => [c.username.toLowerCase(), c])); for (const kw of keywords) { if (ctl.stop) break; s.phase = `\u6B63\u5728\u7528\u5173\u952E\u8BCD\u300C${kw}\u300D\u641C\u7D22\u2026`; await save(); try { await searchKeyword( kw, (found) => { for (const f of found) { const key = f.username.toLowerCase(); const ex = byName.get(key); if (ex) { if (!ex.keywords.includes(kw)) ex.keywords.push(kw); if (ex.members == null) ex.members = f.members; if (ex.kind === "unknown") ex.kind = f.kind; continue; } const cand = { ...f, keywords: [kw], status: "pending" }; byName.set(key, cand); s.items.push(cand); s.queue.push(f.username); } }, ctl ); s.searched[kw] = (/* @__PURE__ */ new Date()).toISOString(); if (!s.keywords.includes(kw)) s.keywords.push(kw); } catch (e) { s.phase = `\u5173\u952E\u8BCD\u300C${kw}\u300D\u641C\u7D22\u5931\u8D25\uFF1A${friendly(e)}`; console.error("discover search", kw, e); } await save(); } await checkQueue(ctl); } finally { s.running = false; if (!ctl.stop) s.phase = s.queue.length ? `\u5DF2\u6682\u505C\uFF0C\u8FD8\u6709 ${s.queue.length} \u4E2A\u5F85\u5224\u65AD` : "\u5B8C\u6210"; await save(true); } } var floodUntil = 0; async function checkQueue(ctl) { const s = await load(); const byName = new Map(s.items.map((c) => [c.username.toLowerCase(), c])); const total = s.queue.length; let done = 0; while (s.queue.length && !ctl.stop) { let idx = 0; if (Date.now() < floodUntil) { idx = s.queue.findIndex((n) => hasCachedPeer(n)); if (idx < 0) { const mins = Math.ceil((floodUntil - Date.now()) / 6e4); s.phase = `Telegram \u9650\u5236\u4E86\u67E5\u627E\u65B0\u9891\u9053\uFF0C${mins} \u5206\u949F\u540E\u81EA\u52A8\u7EE7\u7EED\uFF08\u8FD8\u6709 ${s.queue.length} \u4E2A\uFF09`; await save(true); setTimeout(() => resumeDiscover(), floodUntil - Date.now() + 5e3); return; } } const name = s.queue[idx]; const c = byName.get(name.toLowerCase()); done++; if (c && !c.ignored && (c.status === "pending" || c.samples_v !== SAMPLES_V)) { s.phase = `\u6B63\u5728\u8BFB\u53D6\u6700\u65B0 ${READ_COUNT} \u6761\u5185\u5BB9\u5E76\u5224\u65AD\uFF08${done}/${total}\uFF09\uFF1A${c.title}`; try { await check(c); } catch (e) { const secs = e.seconds || 600; if (!hasCachedPeer(name)) { floodUntil = Date.now() + secs * 1e3; done--; continue; } s.phase = `Telegram \u9650\u5236\u4E86\u9891\u7387\uFF0C${Math.ceil(secs / 60)} \u5206\u949F\u540E\u81EA\u52A8\u7EE7\u7EED`; await save(true); if (secs > 3600) { setTimeout(() => resumeDiscover(), secs * 1e3 + 5e3); return; } await sleep3(secs * 1e3); continue; } } s.queue.splice(idx, 1); await save(); } } function startJob(fn) { if (job) return false; const ctl = { stop: false }; job = ctl; fn(ctl).catch((e) => { console.error("discover job", e); if (state) state.phase = `\u51FA\u9519\uFF1A${friendly(e)}`; }).finally(() => { if (job === ctl) job = null; if (state) state.running = false; save(true).catch(() => { }); }); return true; } async function discoverState() { const s = await load(); return { ...s, running: !!job }; } async function discoverRun(body) { if (!getClient()) throw new Error("\u8BF7\u5148\u767B\u5F55 Telegram \u8D26\u53F7"); const raw = Array.isArray(body.keywords) ? body.keywords : String(body.keywords || "").split(/[,,、\s]+/); const keywords = [...new Set(raw.map((k) => String(k).trim()).filter(Boolean))].slice(0, 20); if (!keywords.length) throw new Error("\u8BF7\u81F3\u5C11\u586B\u4E00\u4E2A\u5173\u952E\u8BCD"); if (!startJob((ctl) => runJob(keywords, ctl))) throw new Error("\u5DF2\u7ECF\u5728\u641C\u7D22\u4E2D\u4E86"); return { started: true }; } async function discoverStop() { if (job) job.stop = true; const s = await load(); s.phase = "\u5DF2\u505C\u6B62"; await save(true); return { stopped: true }; } async function discoverUpdate(body) { const s = await load(); const c = s.items.find((x) => x.username.toLowerCase() === String(body.username || "").toLowerCase()); if (!c) throw new Error("\u6CA1\u6709\u8FD9\u4E2A\u7ED3\u679C"); if (typeof body.ignored === "boolean") c.ignored = body.ignored; if (body.recheck) { c.status = "pending"; if (!s.queue.includes(c.username)) s.queue.unshift(c.username); startJob((ctl) => checkQueue(ctl)); } await save(true); return c; } async function discoverClear() { if (job) throw new Error("\u8BF7\u5148\u505C\u6B62\u641C\u7D22"); state = { updated_at: (/* @__PURE__ */ new Date()).toISOString(), bot: BOT, keywords: [], searched: {}, running: false, phase: "", queue: [], items: [] }; await save(true); return { ok: true }; } async function resumeDiscover() { const s = await load().catch(() => null); if (s?.queue.length && getClient()) startJob((ctl) => checkQueue(ctl)); } // server.ts globalThis.DOMParser = import_linkedom.DOMParser; var PORT = Number(process.env.PORT || 7860); var PASSWORD = process.env.APP_PASSWORD || ""; var PUBLIC = import_path.default.join(process.cwd(), "public"); var env = (k) => { const v = process.env[k]; if (!v) throw new Error(`\u7F3A\u5C11 Space secret: ${k}`); return v; }; function passwordOk(req) { if (!PASSWORD) return true; let given = String(req.headers["x-app-password"] || ""); try { given = decodeURIComponent(given); } catch { } const a = Buffer.from(given); const b = Buffer.from(PASSWORD); return a.length === b.length && import_crypto2.default.timingSafeEqual(a, b); } var app = (0, import_express.default)(); app.use(import_express.default.json({ limit: "2mb" })); app.get("/api/health", (_req, res) => res.json({ ok: true })); app.get("/api/auth", (_req, res) => res.json({ required: Boolean(PASSWORD), cloud: "r2" })); app.get("/api/auth/check", (req, res) => passwordOk(req) ? res.json({ ok: true }) : res.status(401).json({ error: "password required" })); var guarded = (fn) => async (req, res) => { if (!passwordOk(req)) return res.status(401).json({ error: "password required" }); try { res.json(await fn(req.body || {})); } catch (e) { res.status(400).json({ error: e.message }); } }; app.get("/api/tgauth/status", guarded(() => accountStatus())); app.post("/api/tgauth/start", guarded(loginStart)); app.post("/api/tgauth/code", guarded(loginCode)); app.post("/api/tgauth/password", guarded(loginPassword)); app.post("/api/tgauth/logout", guarded(() => logout())); app.get("/api/discover", guarded(() => discoverState())); app.post("/api/discover/run", guarded(discoverRun)); app.post("/api/discover/stop", guarded(() => discoverStop())); app.post("/api/discover/update", guarded(discoverUpdate)); app.post("/api/discover/clear", guarded(() => discoverClear())); app.all("/api/*", async (req, res) => { if (!passwordOk(req)) return res.status(401).json({ error: "password required" }); const url = new URL(req.originalUrl, "http://x"); const r = await handleApi(req.method.toUpperCase(), url.pathname.slice(5), url.searchParams, req.body || {}); res.status(r.status).type("application/json").send(await r.text()); }); app.use(import_express.default.static(PUBLIC, { index: false, maxAge: "1h" })); app.get("*", (_req, res) => { res.setHeader("Cache-Control", "no-cache"); res.sendFile(import_path.default.join(PUBLIC, "index.html")); }); app.use((err, _req, res, _next) => { res.status(err.status || 500).json({ error: err.status === 400 ? "bad request" : "server error" }); }); app.listen(PORT, () => console.log(`\u5C0F\u8BF4\u7D20\u6750\u5E93 listening on ${PORT}`)); enableDirectFetch(); startServerMode({ accessKeyId: env("R2_ACCESS_KEY_ID"), secretAccessKey: env("R2_SECRET_ACCESS_KEY"), endpoint: env("R2_ENDPOINT"), bucket: env("R2_BUCKET") }, async () => { await initAccount(`${PASSWORD}:${env("R2_SECRET_ACCESS_KEY")}`); setTimeout(() => resumeDiscover().catch((e) => console.error("resumeDiscover", e)), 2e4); }).then(() => console.log("R2 connected, background sync started")).catch((e) => console.error("R2 init failed:", e)); var SPACE_HOST = process.env.SPACE_HOST; if (SPACE_HOST) { const ping = () => fetch(`https://${SPACE_HOST}/api/health`, { signal: AbortSignal.timeout(2e4) }).then((r) => console.log("keep-awake ping", r.status)).catch((e) => console.warn("keep-awake ping failed", String(e))); setTimeout(ping, 6e4); setInterval(ping, 3 * 36e5); } process.on("unhandledRejection", (e) => console.error("unhandledRejection", e)); /*! Bundled license information: depd/index.js: (*! * depd * Copyright(c) 2014-2018 Douglas Christopher Wilson * MIT Licensed *) bytes/index.js: (*! * bytes * Copyright(c) 2012-2014 TJ Holowaychuk * Copyright(c) 2015 Jed Watson * MIT Licensed *) content-type/index.js: (*! * content-type * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) statuses/index.js: (*! * statuses * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2016 Douglas Christopher Wilson * MIT Licensed *) toidentifier/index.js: (*! * toidentifier * Copyright(c) 2016 Douglas Christopher Wilson * MIT Licensed *) http-errors/index.js: (*! * http-errors * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2016 Douglas Christopher Wilson * MIT Licensed *) destroy/index.js: (*! * destroy * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015-2022 Douglas Christopher Wilson * MIT Licensed *) unpipe/index.js: (*! * unpipe * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) raw-body/index.js: (*! * raw-body * Copyright(c) 2013-2014 Jonathan Ong * Copyright(c) 2014-2022 Douglas Christopher Wilson * MIT Licensed *) ee-first/index.js: (*! * ee-first * Copyright(c) 2014 Jonathan Ong * MIT Licensed *) on-finished/index.js: (*! * on-finished * Copyright(c) 2013 Jonathan Ong * Copyright(c) 2014 Douglas Christopher Wilson * MIT Licensed *) body-parser/lib/read.js: body-parser/lib/types/raw.js: body-parser/lib/types/text.js: body-parser/index.js: (*! * body-parser * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed *) media-typer/index.js: (*! * media-typer * Copyright(c) 2014 Douglas Christopher Wilson * MIT Licensed *) mime-db/index.js: (*! * mime-db * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015-2022 Douglas Christopher Wilson * MIT Licensed *) mime-types/index.js: (*! * mime-types * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) type-is/index.js: (*! * type-is * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed *) body-parser/lib/types/json.js: body-parser/lib/types/urlencoded.js: (*! * body-parser * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed *) merge-descriptors/index.js: (*! * merge-descriptors * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) encodeurl/index.js: (*! * encodeurl * Copyright(c) 2016 Douglas Christopher Wilson * MIT Licensed *) escape-html/index.js: (*! * escape-html * Copyright(c) 2012-2013 TJ Holowaychuk * Copyright(c) 2015 Andreas Lubbe * Copyright(c) 2015 Tiancheng "Timothy" Gu * MIT Licensed *) parseurl/index.js: (*! * parseurl * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2014-2017 Douglas Christopher Wilson * MIT Licensed *) finalhandler/index.js: (*! * finalhandler * Copyright(c) 2014-2022 Douglas Christopher Wilson * MIT Licensed *) express/lib/router/layer.js: express/lib/router/route.js: express/lib/router/index.js: express/lib/middleware/init.js: express/lib/middleware/query.js: express/lib/view.js: express/lib/application.js: express/lib/request.js: express/lib/express.js: express/index.js: (*! * express * Copyright(c) 2009-2013 TJ Holowaychuk * Copyright(c) 2013 Roman Shtylman * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed *) methods/index.js: (*! * methods * Copyright(c) 2013-2014 TJ Holowaychuk * Copyright(c) 2015-2016 Douglas Christopher Wilson * MIT Licensed *) safe-buffer/index.js: (*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *) content-disposition/index.js: (*! * content-disposition * Copyright(c) 2014-2017 Douglas Christopher Wilson * MIT Licensed *) etag/index.js: (*! * etag * Copyright(c) 2014-2016 Douglas Christopher Wilson * MIT Licensed *) fresh/index.js: (*! * fresh * Copyright(c) 2012 TJ Holowaychuk * Copyright(c) 2016-2017 Douglas Christopher Wilson * MIT Licensed *) range-parser/index.js: (*! * range-parser * Copyright(c) 2012-2014 TJ Holowaychuk * Copyright(c) 2015-2016 Douglas Christopher Wilson * MIT Licensed *) send/index.js: (*! * send * Copyright(c) 2012 TJ Holowaychuk * Copyright(c) 2014-2022 Douglas Christopher Wilson * MIT Licensed *) forwarded/index.js: (*! * forwarded * Copyright(c) 2014-2017 Douglas Christopher Wilson * MIT Licensed *) proxy-addr/index.js: (*! * proxy-addr * Copyright(c) 2014-2016 Douglas Christopher Wilson * MIT Licensed *) express/lib/utils.js: express/lib/response.js: (*! * express * Copyright(c) 2009-2013 TJ Holowaychuk * Copyright(c) 2014-2015 Douglas Christopher Wilson * MIT Licensed *) negotiator/index.js: (*! * negotiator * Copyright(c) 2012 Federico Romero * Copyright(c) 2012-2014 Isaac Z. Schlueter * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) accepts/index.js: (*! * accepts * Copyright(c) 2014 Jonathan Ong * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) cookie/index.js: (*! * cookie * Copyright(c) 2012-2014 Roman Shtylman * Copyright(c) 2015 Douglas Christopher Wilson * MIT Licensed *) vary/index.js: (*! * vary * Copyright(c) 2014-2017 Douglas Christopher Wilson * MIT Licensed *) serve-static/index.js: (*! * serve-static * Copyright(c) 2010 Sencha Inc. * Copyright(c) 2011 TJ Holowaychuk * Copyright(c) 2014-2016 Douglas Christopher Wilson * MIT Licensed *) store2/dist/store2.js: (*! store2 - v2.14.4 - 2024-12-26 * Copyright (c) 2024 Nathan Bubna; Licensed MIT *) imurmurhash/imurmurhash.js: (** * @preserve * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013) * * @author <a href="mailto:jensyt@gmail.com">Jens Taylor</a> * @see http://github.com/homebrewing/brauhaus-diff * @author <a href="mailto:gary.court@gmail.com">Gary Court</a> * @see http://github.com/garycourt/murmurhash-js * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a> * @see http://sites.google.com/site/murmurhash/ *) aws4fetch/dist/aws4fetch.esm.mjs: (** * @license MIT <https://opensource.org/licenses/MIT> * @copyright Michael Hart 2024 *) */